Есть ли какая-либо функциональная разница между CSS 2.1 :after
и псевдоселекторами CSS 3 ::after
(кроме ::after
не поддерживается в старых браузерах)? Есть ли практическая причина использовать новую спецификацию?
: после vs.:: после
Ответ 1
Это псевдо- класс и псевдо- элемент.
За исключением ::first-line
, ::first-letter
, ::before
и ::after
(которые были вокруг немного и могут использоваться с единственными двоеточиями, если вам нужна поддержка IE8), псевдо- элементы требуют двойные двоеточия.
Псевдоклассы сами выбирают сами фактические элементы, вы можете использовать :first-child
или :nth-of-type(n)
для выбора первого или конкретного <p>
в div, например.
(А также состояния действительных элементов, таких как :hover
и :focus
.)
Псевдоэлементы нацелены на подчасти элемента, такого как ::first-line
или ::first-letter
, вещи, которые сами по себе не являются элементами.
Собственно, лучшее описание здесь: http://bricss.net/post/10768584657/know-your-lingo-pseudo-class-vs-pseudo-element
Также здесь: http://www.evotech.net/blog/2007/05/after-v-after-what-is-double-colon-notation/