Ответ 1
&::after
на самом деле ничего не имеет в CSS, но это особенность SASS/SCSS и, вероятно, написана в таком контексте:
li {
/* some style 1 */
&::after {
/* some style 2 */
}
}
Который компилируется в:
li { /* some style 1 */ }
li::after { /* some style 2 */ }
По сути, амперсанд в SASS использует родительский селектор при компиляции в CSS.
РЕДАКТИРОВАТЬ Вы не можете использовать амперсанд в файле .css
, так как он не имеет смысла, вы можете использовать его только в файлах sass/scss, которые скомпилированы в CSS с использованием препроцессора SASS.
Сообщение в блоге (не мое) о амперсанде в SASS:
http://www.joeloliveira.com/2011/06/28/the-ampersand-a-killer-sass-feature/
РЕДАКТИРОВАТЬ 2 Дальнейшие ответы:
Все остальное ваниль CSS, ::after
, ::before
того являются псевдо элементы, .relative
и .radio
являются класс селекторов, :checked
является псевдо - +
классом для типов входного радио и флажка, а +
является смежным селектором родственного
MDN должен быть (одним из) ваших авторитетов в документации CSS, поэтому я решил ссылаться на их страницы, а не просто копировать и вставлять содержимое их документов в этот ответ.
РЕДАКТИРОВАТЬ 3
Я понял, что конкретно не указал, что & +.relative
.
Я намекал на это изначально, когда я сказал
амперсанд в SASS тянет родительский селектор, когда он компилируется в CSS
В связанном примере OPs есть этот код:
.radio:checked
& + .relative
label
... some styles here
Если учесть, что & pulls in the parent selector
вы увидите скомпилированный CSS следующим образом:
.radio:checked + .relative label { ... some styles here }
На "простом английском", если вы будете:
Элемент с классом radio, который проверяется с помощью ближайшего соседнего элемента, который имеет класс относительных и дочерний элемент этого элемента с именем тега label.