#html #css #alignment #css-grid
#HTML #css #выравнивание #css-сетка
Вопрос:
У меня для родительского элемента установлено значение newTableForm
with labelColumn
и mainFormColumn
as children — но с текущим CSS все сворачивается в одну строку:
.newTableForm {
display: grid;
grid-template-columns: 1fr 3fr;
grid-template-rows: 30px 30px 30px 40px;
grid-gap: 10px;
grid-template-areas: "... main" "labels main" "labels main" "... main";
border: 2px dashed deeppink;
}
.labelColumn {
grid-area: labels;
}
.mainFormColumn {
grid-area: main;
}
<form method='post' action="/admin-post.php" class="newTableForm">
<h4 class="mainFormColumn">
Add a new price compare table
</h4>
<label for="store" class="labelColumn">Store</label>
<input type="text" name="store" placeholder="" class="mainFormColumn"/>
<label for="product-page" class="labelColumn">Product Page Link</label>
<input type="text" name="product-page" placeholder="Copy address here" class="mainFormColumn" />
<button class="mainFormColumn">Save new price compare table</button>
</form>
Есть ли способ отменить поведение укладки в один столбец здесь? Я бы вообще удалил области шаблона, если бы не пустые разделы с … (выше и ниже раздела label)
Комментарии:
1. также удалите область сетки из
.labelColumn amp; .mainFormColumn
и какой тип компоновки вы хотите
Ответ №1:
Опять же, вы можете отбросить, grid-template-areas
поскольку несколько областей сетки перекрываются — и вы можете использовать псевдоэлементы для этого:
-
поместите
labelColumn
в первый столбец с помощьюgrid-column: 1
иmainFormColumn
во второй столбец с помощьюgrid-column: 2
. -
after
элемент будет первым столбцом в последней строке с использованиемgrid-row: -2
иgrid-column: 1
-
before
будет первым столбцом в первой строке с использованиемgrid-column: 1
Смотрите демонстрацию ниже:
.newTableForm {
display: grid;
grid-template-columns: 1fr 3fr;
grid-template-rows: 30px 30px 30px 40px;
grid-gap: 10px;
border: 2px dashed deeppink;
}
.labelColumn {
grid-column: 1;
}
.mainFormColumn {
grid-column: 2;
}
.newTableForm:after, .newTableForm:before {
content: '';
display: block;
grid-column: 1;
}
.newTableForm:after {
grid-row: -2;
}
<form method='post' action="/admin-post.php" class="newTableForm">
<h4 class="mainFormColumn">
Add a new price compare table
</h4>
<label for="store" class="labelColumn">Store</label>
<input type="text" name="store" placeholder="" class="mainFormColumn"/>
<label for="product-page" class="labelColumn">Product Page Link</label>
<input type="text" name="product-page" placeholder="Copy address here" class="mainFormColumn" />
<button class="mainFormColumn">Save new price compare table</button>
</form>
Ответ №2:
Я просто обновляю ваш .newTableForm
css некоторыми обновлениями. Я надеюсь, это вам поможет. Спасибо
.newTableForm {
display: flex;
flex-direction: column;
border: 2px dashed deeppink;
}
Комментарии:
1. Привет, с этим кодом проблема со стекированием устранена. Но я хотел левый столбец меток, это не делает этого.