这两个伪元素分别表示元素内容的【前】【后】,利用这两个伪元素可以在元素内容的前后添加内容,其实这没有什么前后的概念,如果应用了 absolute 的特性之后,你可以把这些伪元素放在任何位置,有了这两个伪元素,就代表每个元素都有两个助手可供使用,灵活运用它们的话将会得到很多有趣的实现,简化许多实现。
伪元素特性(目前已经遇到的)
- 它不存在于文档中,所以 js 无法操作它
- 它属于主元素本身,有些伪类仅仅是代表元素内容的一部分,譬如:first-letter 代表第一个字母;因此当伪元素被点击的时候触发的是主元素的 click 事件
- 块级元素才能有:before, :after,譬如 img 就不能设置,亦即某些元素是没有:before, :after 的,只要知道一般的块级元素都可以用就行了
注:css3 中,为了与伪类区分,伪元素前应该使用两个冒号,即:hover 伪类,::before 伪元素。当然为了向下兼容,用一个冒号也是可以的,不过建议尽量使用规范的写法。
各种图标
利用这两个伪类,可以实现需要简单的图标,例如搜索的放大镜,叉叉,箭头等等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<span class="comment">//视频播放图标</span> .course[data-type=<span class="string">"2"</span>] { .course__cover { &:before, &:after { content: <span class="string">''</span>; display: block; position: absolute; left: <span class="number">5</span>px; bottom: <span class="number">5</span>px; } &:after { <span class="comment">//实现圈圈</span> width: <span class="number">20</span>px; height: <span class="number">20</span>px; border: <span class="number">2</span>px solid white; background: rgba(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, .<span class="number">6</span>); border-radius: <span class="number">12</span>px; background-clip: padding-box; } &:before { <span class="comment">//实现三角形</span> height: <span class="number">0</span>; width: <span class="number">0</span>; border-left: <span class="number">8</span>px solid white; |