Как заставить cols = "" работать, когда текстовая область находится в сеточном контейнере - PullRequest
4 голосов
/ 19 сентября 2019

Почему-то и Chrome, и Firefox, похоже, не уважают атрибут cols для textarea элементов, когда они находятся в сеточном контейнере:

.grid { display: grid; }

textarea:not([cols]) { width: 100%; }
<h2>Not in a grid container:</h2>

<div>
  <textarea cols="10" rows="6">some dummy text</textarea>
  <textarea>some other text</textarea>
</div>

<h2>In a grid container:</h2>

<div class="grid">
  <textarea cols="10" rows="6">some dummy text</textarea>
  <textarea>some other text</textarea>
</div>

Атрибут rows соблюдается, как я и ожидал.

Мне нужен texarea, который учитывает cols, когда внутри контейнера сетки, и если cols отсутствует, занимает 100% доступной ширины.

Ответы [ 2 ]

3 голосов
/ 19 сентября 2019

Вам нужно взять одного родительского элемента блока, чтобы исправить это.

.grid {
  display: grid;
}

textarea:not([cols]) {
  width: 100%;
}
<h2>Not in a grid container:</h2>

<div>
  <textarea cols="10" rows="6">some dummy text</textarea>
  <textarea>some other text</textarea>
</div>

<h2>In a grid container:</h2>

<div class="grid">
  <div>
    <textarea cols="10" rows="10">some dummy text</textarea>
  </div>
  <textarea>some other text</textarea>
</div>
1 голос
/ 19 сентября 2019

Это проблема выравнивания, из-за которой текстовая область по умолчанию растягивается.Вы можете исправить это, используя поле auto справа

.grid { display: grid; }

textarea:not([cols]) { width: 100%; }

textarea {
  margin-right:auto;
}
<h2>Not in a grid container:</h2>

<div>
  <textarea cols="10" rows="6">some dummy text</textarea>
  <textarea>some other text</textarea>
</div>

<h2>In a grid container:</h2>

<div class="grid">
  <textarea cols="10" rows="6">some dummy text</textarea>
  <textarea>some other text</textarea>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...