vue растянуть компонент
Всем доброго.
Подскажите как растянуть дочерний компонент во vue на всю ширину и (или) высоту. Процентные единицы не работают.
Ответы (1 шт):
Автор решения: Simon
→ Ссылка
К Vue это не имеет как такового отношения, есть разные варианты каким образом можно растянуть элемент в ширину или высоту в соответствии с родительским элементом, в целом все зависит от конкретных случаев и Вашей верстки. Давайте рассмотрим пару примеров, родительский элемент я окрасил в зеленый цвет, дочернему добавил красный бордер, для наглядности:
* {
box-sizing: border-box;
}
.parent-1 {
/* для примера, задаём явную ширину */
width: 500px;
}
.child-1 {
/* делаем блоковым, чтобы width работал по всей строке */
display: block;
/* растягиваем на 100% ширины родителя */
width: 100%;
/* если хотим, чтобы padding внутри считался в эту 100% */
box-sizing: inherit; /* или box-sizing: border-box; */
}
.parent-2 {
display: flex;
}
.child-2 {
/* растянется по главной оси */
flex: 1;
}
.parent-3 {
display: grid;
}
.child-3 {
width: 100%; /* обычно даже не нужно */
}
.parent-4 {
height: 400px; /* или любая фиксированная/процентная высота */
}
.child-4 {
height: 100%; /* тянется на всю высоту родителя */
box-sizing: border-box;
}
.parent-5 {
display: flex;
flex-direction: column; /* или row, если нужна горизонтальная ось */
height: 400px;
}
.child-5 {
flex: 1; /* займет всё доступное место по основной оси */
}
.parent-6 {
display: grid;
height: 400px;
}
.child-6 {
/* по умолчанию растягивается на всю ячейку */
align-self: stretch; /* если надо явно указать */
}
<h2>Растягиваем элементы в ширину</h2>
<h3>Вариант 1 (просто два блочных элемента)</h3>
<div class="parent-1" style="background: green;">
<div class="child-1" style="border: 2px dashed red">
Контент
</div>
</div>
<h3>Вариант 2 (Flex)</h3>
<div class="parent-2" style="background: green;">
<div class="child-2" style="border: 2px dashed red">
Контент
</div>
</div>
<h3>Вариант 3 (Grid)</h3>
<div class="parent-3" style="background: green;">
<div class="child-3" style="border: 2px dashed red">
Контент
</div>
</div>
<h2>Растягиваем элементы в высоту</h2>
<h3>Вариант 1</h3>
<!-- если вы используете % у родителя, то у его родителя тоже должна быть задана высота -->
<div class="parent-4" style="background: green;">
<div class="child-4" style="border: 2px dashed red">Контент</div>
</div>
<h3>Вариант 2 (Flex)</h3>
<div class="parent-5" style="background: green;">
<div class="child-5" style="border: 2px dashed red">Контент</div>
</div>
<h3>Вариант 3 (Grid)</h3>
<div class="parent-6" style="background: green;">
<div class="child-6" style="border: 2px dashed red">Контент</div>
</div>