У меня DIV
есть contentEditable=true
файл, который можно редактировать. Проблема в том, что оно не похоже на текстовое поле, поэтому пользователю может быть непонятно, что его можно редактировать.
Есть ли способ, которым я могу стилизовать DIV
так, чтобы он казался пользователю как поле ввода текста?
textarea
? jsfiddle.net/vwPgTОтветы:
Они выглядят так же, как их настоящие аналоги в Safari, Chrome и Firefox. Они изящно деградируют и выглядят нормально в Opera и IE9.
Демо: http://jsfiddle.net/ThinkingStiff/AbKTQ/
CSS:
textarea { height: 28px; width: 400px; } #textarea { -moz-appearance: textfield-multiline; -webkit-appearance: textarea; border: 1px solid gray; font: medium -moz-fixed; font: -webkit-small-control; height: 28px; overflow: auto; padding: 2px; resize: both; width: 400px; } input { margin-top: 5px; width: 400px; } #input { -moz-appearance: textfield; -webkit-appearance: textfield; background-color: white; background-color: -moz-field; border: 1px solid darkgray; box-shadow: 1px 1px 1px 0 lightgray inset; font: -moz-field; font: -webkit-small-control; margin-top: 5px; padding: 2px 3px; width: 398px; }
HTML:
<textarea>I am a textarea</textarea> <div id="textarea" contenteditable>I look like textarea</div> <input value="I am an input" /> <div id="input" contenteditable>I look like an input</div>
Вывод:
источник
Если вы используете бутстрап, просто добавьте
form-control
класс. Например:class="form-control"
источник
В WebKit вы можете:
-webkit-appearance: textarea;
источник
Вы можете использовать тень внутреннего блока:
div[contenteditable=true] { box-shadow: inset 0px 1px 4px #666; }
Я обновил jsfiddle от Jarish: http://jsfiddle.net/ZevvE/2/
источник
Я бы предложил это для соответствия стилю Chrome, заимствованному из примера Джариша. Обратите внимание на свойство курсора, которое было пропущено в предыдущих ответах.
cursor: text; border: 1px solid #ccc; font: medium -moz-fixed; font: -webkit-small-control; height: 200px; overflow: auto; padding: 2px; resize: both; -moz-box-shadow: inset 0px 1px 2px #ccc; -webkit-box-shadow: inset 0px 1px 2px #ccc; box-shadow: inset 0px 1px 2px #ccc;
источник
Проблема со всем этим заключается в том, что они не решаются, если строки текста длинные и намного шире, чем у div overflow: auto не отображается полоса прокрутки, которая работает правильно. Вот идеальное решение, которое я нашел:
Создайте два div. Внутренний div, достаточно широкий, чтобы обрабатывать самую широкую строку текста, а затем меньшую внешнюю строку, которая действует как держатель для внутреннего div:
<div style="border:2px inset #AAA;cursor:text;height:120px;overflow:auto;width:500px;"> <div style="width:800px;"> now really long text like this can be put in the text area and it will really <br/> look and act more like a real text area bla bla bla <br/> </div> </div>
источник
Вы можете разместить ТЕКСТАРУ аналогичного размера под DIV, чтобы рамка стандартного элемента управления была видна вокруг div.
Вероятно, лучше отключить его, чтобы предотвратить случайное кражу фокуса.
источник