Ответ 1
Вы правы: ни один браузер не реализовал какие-либо новые функции в древнем CSS3 Generated and Replaced Content module, так что вы не сможет попробовать предложенные псевдоэлементы. Фактически, они планируют переписать сам модуль, поэтому текущий рабочий проект следует считать заброшенным, и, к сожалению, не сообщается о судьбе этих предлагаемых функций.
Во всяком случае, я не знаю ни одного полиса для JS, доступного для этих псевдоэлементов, так что вам не повезло при написании селекторов, использующих ::outside
в вашем CSS.
Самое близкое, что вы можете получить, это обернуть фактические элементы вокруг элементов, для которых вы хотите создать стиль с контейнером... это дешево выполняется с помощью, например, jQuery .wrap()
или .wrapAll()
.
Итак, вместо этого:
p::outside {
display: block;
border: 3px solid #00f;
}
Вы бы сделали это:
$('p').wrap('<div class="outside-p" />');
/*
* Notice that you can't select only .outside-p that contains p:only-child,
* so you'll have to come up with esoteric class names.
*/
.outside-p {
border: 3px solid #00f;
}
Есть некоторые оговорки к этому, однако:
-
Это во многом зависит от DOM; вы не сможете обернуть некоторые элементы вокруг других в зависимости от обстоятельств. Даже если вы можете, эти элементы-обертки могут вступить в противоречие с поведением или даже с дизайном фактических родительских элементов.
Например, он не позволяет использовать дочерний селектор в следующих случаях:
article > p
Если вы намерены
jQuery.wrap()
теp
элементы, так как тогда эти элементы-оболочки будут разбивать отношения между родителями и дочерними элементами междуarticle
иp
. -
Спецификация утверждает, что
::outside
псевдоэлементы, такие как::before
и::after
, должны наследовать стили из элементов, которые их генерируют. Если вы используете JavaScript/jQuery для добавления оберток, эти оболочки будут наследовать стили из своих родительских элементов, а не те, которые они обертывают. Это никогда не было проблемой при полифинге::before
и::after
, поскольку они должны быть вставлены как дочерние элементы в любом случае, следуя правилам наследования обычно.