伪元素和伪类的根本区别:是否创造了新的元素。
伪元素可以当作一个假的元素,但不存在于dom树中,通常用来向元素添加小图标、清除浮动等
伪元素 | 作用 |
---|---|
:first-letter | 将特殊的样式添加到文本的首字母 |
:first-line | 将特殊的样式添加到文本的首行 |
:before | 在某元素之前插入某些内容 |
:after | 在某元素之后插入某些内容 |
伪类需要手动触发,触发时修改元素样式达到一个特殊的动态效果。
伪类 | 作用 |
---|---|
:active | 将样式添加到激活的元素 |
:focus | 将样式添加到被选中的元素 |
:hover | 当鼠标悬浮在元素上方时,向元素添加样式 |
:link | 将特殊的样式添加到未被访问的链接 |
:visited | 将特殊的样式添加到被访问的链接 |
:first-child | 将特殊的样式添加到元素的第一个子元素 |
:lang | 允许创作者来定义指定的元素中使用的语言 |
使用伪类:first-child和伪元素:first-letter来比较
<!DOCTYPE html> <html> <head> <title>伪类/伪元素</title> <style> span:first-child { color: green; } .first-letter:first-letter { color: blue; } .first-letter1 { color: blue; } </style> </head> <body> <div> <span>I am lijy1</span> <span>I am lijy2</span> </div> <div class="first-letter"> <span>I am lijy</span> </div> <div> <span class="first-letter1">I</span><span> am lijy</span> </div> </body> </html>
输出结果
:first-child 添加样式到第一个子元素
:first-letter 添加样式到第一个字母
伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果需要通过添加一个实际的元素才能达到,
实际上:css3中,明确规定了用一个冒号表示伪类,用两个冒号表示伪元素。
但因为兼容性问题,大部分还是统一使用单冒号。
附加:帮助记忆a标签的伪类的使用顺序
LOVE / HATE
link
visited
hover
active