2015-06-07 2 views
1

Я пытаюсь реализовать Google Material Design Guidelines в своих формах, и он отлично работает, пока я не столкнулся с текстовым полем. Я хочу это: Когда вы фокусируетесь на текстовом поле, есть только одна строка, но когда вы достигаете конца строки (при наборе текста), она автоматически добавляет другую строку и продолжает печатать там.Google Material Design Growing Textarea при вводе

Я нашел это на codepen, но это использует поле ввода, а не текстовое поле. Это просто прокручивается по горизонтали ... Demo

<input type="text" required> 

Любой, кто имеет этот код и готов поделиться? Thanks

ответ

2

Вы создаете весь дизайн материалов CSS & JQuery самостоятельно?

В противном случае, я нашел материал Design текстовое поле, как вы упомянули здесь:

Источник: http://materializecss.com/forms.html

Проверьте свою Textarea часть.

+0

О, это замечательный человек, спасибо. Именно то, что я искал !! Я сам писал это, но с этим я могу приспособить его к моим симпатиям. Не могу поверить, что я никогда не сталкивался с этим сайтом во время поиска. – nclsvh

+1

Хорошая новость! Теперь Google предлагает свои рамки MD для веб-сайтов (например, Bootstrap). Проверьте это здесь ... http://www.getmdl.io/components/index.html – yeyene

1

На самом деле, чтобы получить этот уровень контроля и обойти тот факт, что текстовое поле на большинстве веб-браузеров может быть изменено вручную, вы должны использовать div с the contenteditable attribute.

См. HTML doctor entry on contenteditable для получения дополнительной информации.

Далее, чтобы рассчитать размеры шрифта и переполнение, вы можете использовать the canvas measureText method, например, используя холст в качестве замены вне экрана (там, где вы вводите точно тот же текст, который вводится внутри вашего контента, пригодного для контента).

Наконец, в то время как атрибут css lineHeight может несколько облегчить эти вычисления, есть несколько библиотек javascript, которые посвящены этой цели. Я нашел Font.js, не проверял его на момент написания этой статьи.

+0

Точно. Текстовое поле доводит вас до сих пор, и даже рамки, такие как materialize.css, ограничивают вас, используя текстовое поле, а не контент-доступный div. Знаете ли вы способ сделать contenteditable div работать/вести себя визуально так же, как материал textarea? Я пытаюсь достичь материальных эффектов с добавленной функциональностью (выделение лишних символов за пределы текста и т. Д.), Но пока не удалось. –

+0

Извините, вы еще не заглянули в эту часть. – Argo