Недавно я занимался исследованием проблемы, описанной OP для , аналогичного вопроса для SO .Похоже, что ошибка в Firefox вызывает рендеринг этого так называемого «не заполнение, а выглядит как заполнение» элементов textarea
.
Обычно этот дополнительный отступ на самом деле не является проблемой, но он становится проблемой, когда вы хотите, чтобы два элемента имели одинаковую ширину, и вы заботитесь о том, чтобы его содержимое было одинаковым для обоих элементов.*
Получение textarea
для переноса содержимого таким же образом, как, например, div
элементов в Firefox
Кажется невозможным избавиться от этой ширины 1.5px
в textarea
вFirefox, поэтому, если вы хотите убедиться, что перенос содержимого внутри div
в Firefox ведет себя точно так же, как перенос содержимого внутри textarea
в Firefox, лучшим подходом, кажется, является добавление дополнительного 1.5px
заполнениясправа и слева внутри div
, но только в Firefox.Вы можете сделать это, установив следующие специфичные для вендора свойства CSS с префиксом на div
:
-moz-box-sizing: border-box;
-moz-padding-end: 1.5px;
-moz-padding-start: 1.5px;
Первое гарантирует, что набор отступов на div
не увеличит ширину div
и следующие два гарантируют, что 1.5px
отступа будет установлен справа и слева от div
.
Этот подход не влияет на рендеринг div
вв любых других браузерах это не требуется, поскольку textarea
в других браузерах не отображает никаких дополнительных отступов.Но это гарантирует отсутствие различий между div
и textarea
внутри Firefox при условии, что они имеют одинаковые свойства font-family
и font-size
и т. Д.
Вот jsFiddle для демонстрационных целей.
Получение textarea
для последовательного переноса контента в разных браузерах
Если вытолько для того, чтобы textarea
в Firefox имел ту же ширину и режим переноса, что и textarea
в других браузерах, вы можете установить box-sizing
в border-box
, добавить padding
с обеих сторон 5.5px
и установите -moz-padding-end
и -moz-padding-start
на 0px
.
textarea {
padding: 0 5.5px 0 5.5px;
-moz-padding-end: 0px;
-moz-padding-start: 0px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
Вот jsFiddle , показывающий этот подход.