Как добавить добавление в текстовое поле, не увеличивая ширину?
У меня возникли проблемы с настройкой ширины элемента textarea и использованием прокладки через CSS. Значение padding, по-видимому, изменяет ширину текстового поля, что я бы предпочел не делать.
Это мой HTML-код:
<div id="body">
<textarea id="editor"></textarea>
</div>
И мой код CSS:
#body {
height:100%;
width:100%;
display:block;
}
#editor {
height:100%;
width:100%;
display:block;
padding-left:350px;
padding-right:350px;
}
Однако значения заполнения не работают так, как можно было бы ожидать. Ширина текстового поля увеличивается на 350 пикселей в обоих направлениях, вместо того, чтобы определять пространство между границами элемента и его содержимым.
Я рассмотрел только центрирование текстового поля, установив поля в "0px auto", но я бы хотел, чтобы пользователь все еще мог прокручивать текстовое поле, если мышь витает над одним из пустых полей. По той же причине я не могу добавить еще один div для работы в качестве обертки, так как пользователь не сможет прокручивать по пустым областям, но только по полям без полей.
Помогает ли кто-нибудь?
Ответы
Ответ 1
CSS box model определяет ширину в качестве ширины содержимого, за исключением границы, отступов и полей.
К счастью, у CSS3 есть новое свойство box-sizing
, которое позволяет вам изменить это поведение, вместо этого введите прописку и т.д. в указанной ширине, используя:
box-sizing: border-box;
В соответствии со ссылкой выше, большинство современных браузеров (включая IE >= 8) поддерживают это свойство, но в каждом браузере они имеют разные имена.
Ответ 2
Указание ширины и полей/отступов в '%' помогает.
Вот один пример -
Live @http://jsfiddle.net/ninadpachpute/V2aaa/embedded/result
#body {
background-color:#ccc;
height:100%;
width:100%;
display:block;
}
textarea#editor {
border:none;
width:80%;
height:100%;
margin-left:10%;
margin-right:10%;
}
Ответ 3
Ширина, указанная в CSS, не включает заполнение или границу (в соответствии со спецификациями W3C). Я предполагаю, что один из способов сделать это с помощью некоторого JavaScript, который устанавливает ширину #editor в ширину #body минус 700px, но это немного беспорядочно... Не уверен, есть ли способ CSS делать то, что вы хотите здесь. Конечно, вы можете использовать маржу, затем зарегистрировать событие onMouseWheel на #body и работать с этим...
Ответ 4
Некоторые браузеры позволяют настроить таргетинг на заполнитель для изменения цвета и т.д., поэтому вы можете также добавить дополнение:
::-webkit-input-placeholder { /* WebKit browsers */
padding: 5px 0 0 5px;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
padding: 5px 0 0 5px;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
padding: 5px 0 0 5px;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
padding: 5px 0 0 5px;
}