:before
и :after
не будут работать на text-area
(и на любом элементе, который не может содержать другой элемент, например img
или input
), потому что сгенерированное содержимое псевдоэлемента получает помещает внутри элемента, но до или после содержимого этого элемента, и действует как элемент. Псевдоэлемент не размещается до или после самого родительского элемента (в отличие от некоторой информации, которую можно найти в Интернете). Для иллюстрации:
Если у вас есть этот CSS:
p:before {content: 'before--'}
p:after {content: '--after'}
Тогда HTML, как это:
<p>Original Content</p>
Эффективно отображает на экране , как если бы исходный код был:
<p>before--Original Content--after</p>
Не , как если бы исходный код был:
before--<p>Original Content</p>--after
Именно поэтому теги, которые не могут содержать какой-либо элемент "content" элемента html (как упомянуто выше), не распознают псевдоэлементы, поскольку не существует "места" для этого контента, который будет сгенерирован для , textarea
может содержать «содержимое», но только текстовое содержимое.