почему элементы изначально не имеют равную ширину. Что мне здесь не хватает?
textarea
имеет ширину, изначально определенную как cols
, которая имеет значение по умолчанию, равное 20
столбцы
Видимая ширина текстового элемента управления, в средней ширине символа. Если оно указано, оно должно быть положительным целым числом. Если он не указан, значением по умолчанию является 20.
Эта ширина играет роль в определении начальной ширины текстовой области. Вы можете установить небольшое значение, чтобы убедиться, что оно ведет себя почти так же, как div.
.row {
display: grid;
grid-auto-flow: column;
}
.row > div {
border: 1px dotted;
}
<div class='row'>
<textarea cols=1></textarea>
<div></div>
</div>
Вы все еще можете заметить небольшую разницу, поскольку текстовая область не имеет начальной ширины, точно равной 0, и также имеет некоторые отступы, поэтому ее столбец будет логически немного больше.
Чтобы избежать этого, а также исправить проблему изменения размера, лучше точно определить сетку, как показано ниже, где вы устанавливаете начальную ширину текстовой области равной половине ширины сетки.
Я не знаю ваш реальный вариант использования, но я учту тот факт, что ваша сетка имеет полную ширину страницы (я также рассмотрю значение по умолчанию body
margin)
.row {
display: grid;
grid-template-columns:auto 1fr;
}
.row > div {
border: 1px dotted;
}
textarea {
width:calc(50vw - 16px);
box-sizing:border-box;
}
<div class='row'>
<textarea ></textarea>
<div></div>
</div>