I know there is this post on changing the placeholder text. I’ve tried implementing in on my textarea tags
textarea::-webkit-input-placeholder {
color: #fff;
}
textarea:-moz-placeholder { /* Firefox 18- */
color: #fff;
}
textarea::-moz-placeholder { /* Firefox 19+ */
color: #fff;
}
textarea:-ms-input-placeholder {
color: #fff;
}
but it’s not doing anything. What am I missing?
This is what one of my textarea
‘s looks like
<textarea
onChange={(e) => this.props.handleUpdateQuestion(e, firstQuestion.Id)}
placeholder="Overall Satisfaction Question"
name="SEO__Question__c"
type="text"
className="slds-input"
value={firstQuestion.SEO__Question__c ? firstQuestion.SEO__Question__c : ''}
style={inputStyle}
autoFocus
/>
asked May 4, 2017 at 22:16
3
For modern browsers, use just the ::placeholder pseudo element:
textarea::placeholder {
color: #0bf;
}
Legacy and modern browsers:
textarea:-moz-placeholder, /* Firefox 18- */
textarea::-moz-placeholder, /* Firefox 19+ */
textarea:-ms-input-placeholder, /* IE 10+ */
textarea::-webkit-input-placeholder, /* Webkit based */
textarea::placeholder { /* Modern browsers */
color: #0bf;
}
<textarea placeholder="test"></textarea>
And related to your code, wrap in quotes:
onchange="{(e) => this.props.handleUpdateQuestion(e, firstQuestion.Id)}"
answered May 4, 2017 at 22:20
Roko C. BuljanRoko C. Buljan
190k37 gold badges301 silver badges304 bronze badges
0
I am not sure but I think is not necessary to use the prefixes right now.
textarea::placeholder {
color: #fff;
}
answered Jan 12, 2018 at 18:00
2
::-webkit-input-placeholder {
color: orange;
}
:-moz-placeholder { /* Upto Firefox 18, Deprecated in Firefox 19 */
color: orange;
}
::-moz-placeholder { /* Firefox 19+ */
color: orange;
}
:-ms-input-placeholder {
color: orange;
}
answered Mar 29, 2020 at 7:45
ZiaUllahZiaZiaUllahZia
9722 gold badges15 silver badges30 bronze badges
textarea::placeholder {color: #fff;}
answered Aug 15, 2018 at 14:48
Is that possible to set the color of placeholder
text ?
<textarea placeholder="Write your message here..."></textarea>
asked Apr 30, 2011 at 3:25
Misha MoroshkoMisha Moroshko
163k224 gold badges498 silver badges733 bronze badges
2
::-webkit-input-placeholder { /* WebKit browsers */
color: #999;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #999;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #999;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #999;
}
answered Mar 5, 2013 at 14:09
HasanAboShallyHasanAboShally
18.4k7 gold badges29 silver badges34 bronze badges
Nobody likes the «refer to this answer» answers, but in this case it may help: Change an HTML5 input’s placeholder color with CSS
Since it’s only supported by a couple of browsers, you can try the jQuery placeholder plugin (assuming you canare using jQuery). It allows you to style the placeholder text via CSS since it’s really only a swap trick it does with focus events.
The plugin does not activate on browsers that support it, though, so you can have CSS that targets chromefirefox and the jQuery plugin’s CSS to catch the rest.
The plugin can be found here: https://github.com/mathiasbynens/jquery-placeholder
answered Apr 30, 2011 at 3:31
Try this
textarea::-webkit-input-placeholder { color: #999;}
answered Aug 20, 2012 at 6:29
Suresh PattuSuresh Pattu
5,96815 gold badges58 silver badges91 bronze badges
For giving placeholder a color just use these lines of code:
::-webkit-input-placeholder { color: red; }
::-moz-placeholder {color: red; }
:-ms-input-placeholder { color: red; }
:-o-input-placeholder { color: red; }
nobody
19.7k17 gold badges56 silver badges77 bronze badges
answered Feb 16, 2015 at 18:27
daraptoordaraptoor
1313 silver badges10 bronze badges
2
#Try this:
input[type="text"],textarea[type="text"]::-webkit-input-placeholder {
color:#f51;
}
input[type="text"],textarea[type="text"]:-moz-placeholder {
color:#f51;
}
input[type="text"],textarea[type="text"]::-moz-placeholder {
color:#f51;
}
input[type="text"],textarea[type="text"]:-ms-input-placeholder {
color:#f51;
}
##Works very well for me.
answered Jan 21, 2015 at 7:18
Try this
input::-webkit-input-placeholder { /* WebKit browsers */
color: #f51;
}
input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #f51;
}
input::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #f51;
}
input:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #f51;
}
<input type="text" placeholder="Value" />
answered Nov 17, 2014 at 5:20
1
For Firefox use:
input:-moz-placeholder { color: #aaa; }
textarea:-moz-placeholder { color: #aaa;}
For all other browsers (Chrome, IE, Safari), just use:
.placeholder { color: #aaa; }
answered Feb 5, 2013 at 4:44
skidadonskidadon
5474 silver badges7 bronze badges
4
Is that possible to set the color of placeholder
text ?
<textarea placeholder="Write your message here..."></textarea>
asked Apr 30, 2011 at 3:25
Misha MoroshkoMisha Moroshko
163k224 gold badges498 silver badges733 bronze badges
2
::-webkit-input-placeholder { /* WebKit browsers */
color: #999;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #999;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #999;
}
:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #999;
}
answered Mar 5, 2013 at 14:09
HasanAboShallyHasanAboShally
18.4k7 gold badges29 silver badges34 bronze badges
Nobody likes the «refer to this answer» answers, but in this case it may help: Change an HTML5 input’s placeholder color with CSS
Since it’s only supported by a couple of browsers, you can try the jQuery placeholder plugin (assuming you canare using jQuery). It allows you to style the placeholder text via CSS since it’s really only a swap trick it does with focus events.
The plugin does not activate on browsers that support it, though, so you can have CSS that targets chromefirefox and the jQuery plugin’s CSS to catch the rest.
The plugin can be found here: https://github.com/mathiasbynens/jquery-placeholder
answered Apr 30, 2011 at 3:31
Try this
textarea::-webkit-input-placeholder { color: #999;}
answered Aug 20, 2012 at 6:29
Suresh PattuSuresh Pattu
5,96815 gold badges58 silver badges91 bronze badges
For giving placeholder a color just use these lines of code:
::-webkit-input-placeholder { color: red; }
::-moz-placeholder {color: red; }
:-ms-input-placeholder { color: red; }
:-o-input-placeholder { color: red; }
nobody
19.7k17 gold badges56 silver badges77 bronze badges
answered Feb 16, 2015 at 18:27
daraptoordaraptoor
1313 silver badges10 bronze badges
2
#Try this:
input[type="text"],textarea[type="text"]::-webkit-input-placeholder {
color:#f51;
}
input[type="text"],textarea[type="text"]:-moz-placeholder {
color:#f51;
}
input[type="text"],textarea[type="text"]::-moz-placeholder {
color:#f51;
}
input[type="text"],textarea[type="text"]:-ms-input-placeholder {
color:#f51;
}
##Works very well for me.
answered Jan 21, 2015 at 7:18
Try this
input::-webkit-input-placeholder { /* WebKit browsers */
color: #f51;
}
input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #f51;
}
input::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #f51;
}
input:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #f51;
}
<input type="text" placeholder="Value" />
answered Nov 17, 2014 at 5:20
1
For Firefox use:
input:-moz-placeholder { color: #aaa; }
textarea:-moz-placeholder { color: #aaa;}
For all other browsers (Chrome, IE, Safari), just use:
.placeholder { color: #aaa; }
answered Feb 5, 2013 at 4:44
skidadonskidadon
5474 silver badges7 bronze badges
4
CSS псевдоэлемент ::placeholder
представляет собой текст placeholder (en-US) в <input>
или <textarea>
(en-US) элементах.
::placeholder {
color: blue;
font-size: 1.5em;
}
В ::placeholder
можно использовать только те CSS-свойства, которые разрешены в псевдоэлементе ::first-line
.
Примечание: В большинстве браузеров по умолчанию placeholder выглядит как полупрозрачный или светло-серый текст.
Синтаксис
Error: could not find syntax for this item
Примеры
Красный текст
HTML
<input placeholder="Введите что-нибудь!">
CSS
input::placeholder {
color: red;
font-size: 1.2em;
font-style: italic;
}
Результат
Зелёный текст
HTML
<input placeholder="Введите что-нибудь...">
CSS
input::placeholder {
color: green;
}
Результат
Проблемы доступности
Цветовой контраст
Контрастность
Текст placeholder обычно имеет более светлую расцветку и содержит информацию о том, какие введённые данные будут допустимы, но при этом не является текущими введёнными данными.
Важно обеспечить достаточный цветовой контраст между placeholder и фоном, чтобы люди со слабым зрением могли его прочитать, но при этом должна быть достаточная разница между введённым текстом и текстом placeholder, чтобы пользователь не путал их.
Коэффициент цветового контраста определяется путём сравнения яркости текста placeholder и цветом фона формы ввода. Чтобы соответствовать рекомендациям Web Content Accessibility Guidelines (WCAG), требуется соотношение 4.5:1 для основного текста и 3:1 для более крупного текста, например, заголовков. Крупный текст определяется как 18.66px и больше с жирным начертанием или 24px и больше с обычным начертанием.
- WebAIM: Color Contrast Checker
- MDN Understanding WCAG, Guideline 1.4 explanations
- Understanding Success Criterion 1.4.3 | W3C Understanding WCAG 2.0
Использование
Текст placeholder с высоким цветовым контрастом может быть воспринят как введённые данные. Текст placeholder исчезает, когда пользователь вводит что-либо в <input>
элемент. Эти обстоятельства могут помешать заполнить правильно форму, особенно людям с когнитивными проблемами.
Другой подход к представлению информации placeholder заключается в том, чтобы расположить её вне формы ввода в непосредственной близости от неё, а затем использовать aria-describedby
для программного связывания <input>
элемента с подсказкой.
В таком случае содержимое подсказки будет доступно даже в том случае, если что-то введено в форму. Большинство скринридеров используют aria-describedby
для чтения подсказок после того, как будет прочитан текст метки формы. Пользователь может отключить эту функцию, если дополнительная информация окажется ему ненужной.
<label for="user-email">Ваш email адрес</label>
<span id="user-email-hint" class="input-hint">Пример: jane@sample.com</span>
<input id="user-email" aria-describedby="user-email-hint" name="email" type="email">
- Placeholders in Form Fields Are Harmful — Nielsen Norman Group
Режим высокой контрастности Windows
Текст placeholder будет отображаться с теми же стилями, что и введённый пользователем текст при работе в режиме высокой контрастности Windows (en-US). Это вызовет затруднения с определением того какой текст был введён, а какой является placeholder.
- Greg Whitworth — How to use -ms-high-contrast
Метки
Placeholder не является заменой элемента <label>
. Без метки, которая программно связывается с формой с помощью for
и id
атрибутов, такие программы, как скринридеры не смогут анализировать элементы <input>
.
- MDN Basic form hints (en-US)
- Placeholders in Form Fields Are Harmful — Nielsen Norman Group
Спецификации
Specification |
---|
CSS Pseudo-Elements Module Level 4 # placeholder-pseudo |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Псевдокласс
:placeholder-shown
, который позволяет применять стили к элементу с активным placeholder. - Связанные HTML-элементы:
<input>
,<textarea>
(en-US) - HTML-формы
У элементов ввода есть атрибут «placeholder». С его помощью можно вывести текст в поле ввода который исчезает при начале заполнения. Браузеры по разному отображают плейсхолдер, а устаревшие — вовсе не поддерживают. Однако, существуют способы обхода всех недостатков этого полезного атрибута. Рассмотрим следующие моменты:
- изменение стиля плейсхолдера;
- скрытие сразу при нажатии на поле;
- отображение в браузерах, которые не поддерживают атрибут.
Для примера возьмём текстовое поле input и будем применять к нему стили.
Изменение цвета placeholder
Браузеры на разных движках по разному отображают плейсхолдер. Чаще всего это чёрный текст с прозрачностью, что в итоге смотрится как серый. Чтобы изменить цвет и прозрачность необходимо в CSS стилях к элементам ввода указывать дополнительные директивы для движков браузеров. Изменим цвет на красный без прозрачности.
<style> ::-webkit-input-placeholder {color:#f00; opacity:1;}/* webkit */ ::-moz-placeholder {color:#f00; opacity:1;}/* Firefox 19+ */ :-moz-placeholder {color:#f00; opacity:1;}/* Firefox 18- */ :-ms-input-placeholder {color:#f00; opacity:1;}/* IE */ </style> <input type="text" placeholder="Начните вводить текст" value="" />
Если не указать «opacity», то цвет в браузерах, поддерживающих прозрачность, будет розовым. Так же можно указать для разных полей разные цвета. Для этого используйте классы.
.input-1::-webkit-input-placeholder { color:red; } .input-2::-webkit-input-placeholder { color:green; } ... и.т.д.
Убираем placeholder при нажатии на поле
По-умолчанию браузеры скрывают плейсхолдер только после начала ввода текста. Но не сложно сделать чтобы он ичезал сразу после установки курсора в поле ввода. Для этого для полей с фокусом напишем стиль, в котором сделаем подсказку полностью прозрачной.
:focus::-webkit-input-placeholder {opacity:0;}/* webkit */ :focus::-moz-placeholder {opacity:0;}/* Firefox 19+ */ :focus:-moz-placeholder {opacity:0;}/* Firefox 18- */ :focus:-ms-input-placeholder {opacity:0;}/* IE */
Скрывать плейсхолдер при форкусе можно по разному, например, плавно изменяя прозрачность или цвет. А можно настроить и css анимацию, когда подсказка будет плавно уезжать за пределы поля. Всё это возможно благодаря CSS, но большого смысла я в этом не вижу, так как кроссбраузерность таких прелестей будет страдать, а пользы от этих эффектов практически никакой.
Кроссбраузерность placeholder
Устаревшие браузеры не поддерживают атрибут «placeholder» — он просто не будет отображаться. К таким браузерам относится IE8. Несмотря на прекращение поддержки Internet Explorer, есть «люди» которые им пользуются. Если плейсхолдер не несёт важной информации, то можно забить на его отображение, но если увидеть содержимое подсказки должен каждый, то разработчик обязан позаботиться о полной кроссбраузерности.
Для отображени подсказки в браузерах, которые не поддерживают атрибут, будем использовать jquery плагин.
Скачать «jquery.placeholder»
Скачиваем его и подключаем. Не забываем, что должна быть подключена так же jquery библиотека. Применяем плагин к элементам ввода с атрибутом «placeholder»:
<script src="/jquery.placeholder.min.js"></script> <script> $(function(){ $('input[placeholder], textarea[placeholder]').placeholder(); }); </script> <style> input.placeholder, textarea.placeholder. { color: green; } </style>
Плагин срабатывает только если браузер не поддерживает плейсхолдеры. В таком случае элементам, к которым он применён, присваивается класс «placeholder», а в «value» записывается текст из атрибута «placeholder». При фокусе «value» очищается. Чтобы текст из атрибута не выглядел точно так же как вводимый текст, оформляем его с помощью стилей, опираясь на устанавливаемый класс. В примере цвет текста неактивного поля будет зелёным. Но увидеть это можно только в IE8 или других устаревших браузерах.
Атрибут placeholder применяется для призыва к действию внутри пустых элементов input и textarea. В этой статье мы рассмотрим возможности стилизации текста placeholder-a, а также некоторые трюки, которые позволят сделать его более удобным и функциональным.
Итак, начнем с примера для тех, кто не знает, что такое placeholder.
html
<input type="text" placeholder="Оставьте сообщение здесь">
input placeholder demo
Стиль placeholder-a можно изменить с помощью такого набора css правил:
css
::-webkit-input-placeholder {color:#c0392b;}
::-moz-placeholder {color:#c0392b;}/* Firefox 19+ */
:-moz-placeholder {color:#c0392b;}/* Firefox 18- */
:-ms-input-placeholder {color:#c0392b;}
Выглядит страшновато, не правда ли? Дело в том, что этого до сих пор нет в стандартах. Каждый браузер по-своему реализовал поддержку стилизации placeholder-а.
В IE и старых firefox (до 18-го) placeholder считается псевдоклассом, а в новых firefox, webkit и blink – псевдоэлементом.
Смотрим, что получилось:
input placeholder demo
Нужно сказать, что поддерживаются не все возможные css свойства. Большинство современных браузеров позволяют изменить:
- font (и сопутствующие свойства)
- background (и сопутствующие свойства)
- color
- word-spacing
- letter-spacing
- text-decoration
- vertical-align
- text-transform
- line-height
- text-indent
- text-overflow
- opacity
А если placeholder не вмещается?
Иногда поля для ввода текста сокращаются по ширине из-за особенностей лейаута, в частности на мобильных девайсах. В этом случае длинный текст placeholder-а будет некрасиво обрезан. Чтобы предотвратить это, вы можете использовать text-overflow: ellipsis
. Такой синтаксис будет работать во всех новых браузерах.
css
input[placeholder] {text-overflow:ellipsis;}
input::-moz-placeholder {text-overflow:ellipsis;}
input:-moz-placeholder {text-overflow:ellipsis;}
input:-ms-input-placeholder {text-overflow:ellipsis;}
input placeholder demo
Как скрыть placeholder при фокусе?
Скрывание placeholder-а происходит по-разному.
- в некоторых браузерах при получении фокуса инпутом
- в других браузерах при наличии хотя бы одного введенного символа
Мне больше нравится первый вариант. Для того, чтобы задать такое поведение во всех браузерах, поддерживающих placeholder, определим следующие css правила:
css
:focus::-webkit-input-placeholder {color: transparent}
:focus::-moz-placeholder {color: transparent}
:focus:-moz-placeholder {color: transparent}
:focus:-ms-input-placeholder {color: transparent}
input placeholder demo
Скрываем placeholder красиво
Можно также добавить transition для появления и скрытия placeholder-a:
input placeholder demo
Вот сss:
css
/* плавное изменение прозрачности placeholder-а при фокусе */
.input1::-webkit-input-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1::-moz-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1:-moz-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1:-ms-input-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1:focus::-webkit-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus::-moz-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-moz-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-ms-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
/* сдвиг placeholder-а вправо при фокусе*/
.input2::-webkit-input-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2::-moz-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:-moz-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:-ms-input-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:focus::-webkit-input-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus::-moz-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus:-moz-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus:-ms-input-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
/* сдвиг placeholder-а вниз при фокусе*/
.input3::-webkit-input-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3::-moz-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3:-moz-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3:-ms-input-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3:focus::-webkit-input-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus::-moz-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus:-moz-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus:-ms-input-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
Надеюсь, вам это пригодится. Пишите замечания и предложения в комментариях.
Исчезающая подсказка в <input>
и <textarea>
HTML
Внутри пустого поля ввода <input>
или <textarea>
, то есть пока атрибут value
пустой или отсутствует, показывается надпись приглушенного цвета из атрибута placeholder
, которая пропадает при вводе первого символа. Она может быть образцом значения или кратким описанием ожидаемого формата. [whatwg.org]
<input placeholder="текст-подсказка"> <textarea placeholder="текст-подсказка"></textarea>
Стремясь уменьшить форму и сократить визуальный шум, дизайнеры тег <label>
заменяют на атрибут placeholder
, тем самым увеличивая нагрузку на кратковременную память. Людям с нарушенным зрением подсказку трудно прочитать. Лучше разместить <label>
непосредственно над полем ввода. Пустое поле легче распознаётся как элемент, требующий заполнения. [uxdesign.cc]
Стилизация: изменить цвет placeholder
CSS
Псевдоэлемент ::placeholder
CSS определяет внешний вид подсказки из атрибута placeholder
. Список поддерживаемых свойств ограничен тем же списком, что псевдоэлемент ::first-line
[csswg.org] и на текущий день не включает плавный переход transition
.
<style> .raz::placeholder { color: red; opacity: 1; } </style> <input placeholder="текст-подсказка" class="raz"> <textarea placeholder="текст-подсказка" class="raz"></textarea>
Поменять стиль поля ввода с placeholder
CSS
Селектор [placeholder]
определяет внешний вид элементов, у которых задан атрибут placeholder
.
<style> [placeholder] { background: linear-gradient(to right top, bisque 50%, cornsilk 50%); } </style> <input> <textarea></textarea> <input placeholder="текст-подсказка"> <textarea placeholder="текст-подсказка"></textarea>
Псевдокласс :placeholder-shown
CSS определяет внешний вид поля, пока видна подсказка из атрибута placeholder
.
<style> .raz:placeholder-shown { background: linear-gradient(to right top, bisque 50%, cornsilk 50%); } </style> <input placeholder="текст-подсказка" class="raz"> <textarea placeholder="текст-подсказка" class="raz"></textarea>
Подсказка пропадает при получении фокуса <input type="text | password |
другие">
и <textarea></textarea>
<style> .raz:focus::placeholder { opacity: 0; } </style> <input placeholder="текст-подсказка" class="raz"> <textarea placeholder="текст-подсказка" class="raz"></textarea>
В конце длинного обрезанного подсказывающего текста поставить многоточие
<style> .raz:placeholder-shown { text-overflow: ellipsis; } </style> <input placeholder="Обязательно заполняется при наличии" class="raz">
<style> .raz:placeholder-shown { text-overflow: "1F4E7"; } </style> <input type="email" class="raz6" placeholder="name@site.ru ">
Текст в плейсхолдер должен быть коротким, иначе он не имеет смысла, так как его никто не сможет увидеть.
Отчество
Обязательно заполняется при наличии
Отчество
Обязательно заполняется при наличии
Сделать смещающиеся или всплывающие <label>
в <form>
<style> .raz { position: relative; } .raz span { position: absolute; bottom: 0; left: 2px; opacity: .5; visibility: hidden; transition: .2s; } .raz input:placeholder-shown ~ span { visibility: visible; } .raz input:placeholder-shown:focus ~ span, .raz input:not(:placeholder-shown) ~ span { bottom: 100%; opacity: 1; font-size: 80%; visibility: visible; } </style> <label class="raz"><input type="email" placeholder=" "><span>Email</span></label>
<style> .raz { position: relative; } .raz span { position: absolute; bottom: 50%; left: 2px; opacity: 0; visibility: hidden; transition: .3s; } .raz input:not(:placeholder-shown) ~ span { bottom: 100%; opacity: 1; visibility: visible; } </style> <label class="raz"><input type="email" placeholder="Email"><span>Email</span></label>
Плавающие метки неоднородны с метками элементов других типов веб-формы. Их менее контрастный цвет хуже различим. [medium.com]
Эффект placeholder
для <div>
Атрибут placeholder
работает только для <input>
и <textarea>
, даже если у других тегов указан атрибут contenteditable
. [whatwg.org]
<style> .raz { height: 3em; border: 1px solid; } </style> <div contentEditable placeholder="Можно ввести текст" class="raz"></div>
<style> .raz { height: 3em; border: 1px solid; } .raz:empty:not(:focus)::before { content: attr(data-placeholder); opacity: .5; } </style> <div contentEditable data-placeholder="Можно ввести текст" class="raz"></div>
Древний метод на память, изменяющий value
JavaScript
<input onblur="this.value=(this.value=='')?this.title:this.value;" onfocus="this.value=(this.value==this.title)?'':this.value;" value="Email" title="Email" />