:after/::after和:before/::before的区别

Posted 前端向朔

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了:after/::after和:before/::before的区别相关的知识,希望对你有一定的参考价值。

基本概念

1.他们都是CSS伪元素,与:hover/:active等伪类不一样。
2.:before/:after伪元素是在CSS2中提出来的,所以兼容性可能到IE8了。
3.::before/::after是CSS3中的写法,为了将伪类和伪元素区分开。但是平时为了兼容性,还是会用一个冒号的写法。

基本用法

p:after 
img:before

这两个伪元素下特有的属性 content ,用于在 CSS 渲染中向元素逻辑上的头部或尾部添加内容。注意这些添加不会改变文档内容,不会出现在 DOM 中,不可复制,仅仅是在 CSS 渲染层加入。比较有用的是以下几个值:

  • [String] – 使用引号包括一段字符串,将会向元素内容中添加字符串。示例: a:after content: "↗";

  • attr() – 调用当前元素的属性,可以方便的比如将图片的 Alt 提示文字或者链接的 Href 地址显示出来。示例:a:after content:"(" attr(href) ")";

  • url() / uri() – 用于引用媒体文件。示例: h1::before content: url(logo.png);

  • counter() – 调用计数器,可以不使用列表元素实现序号功能。具体请参见 counter-increment 和 counter-reset 属性的用法。示例:
    h2:before counter-increment: chapter; content: "Chapter " counter(chapter) ". "

进阶用法
我们最常用的就是用来清除浮动和制作三角之类的特殊元素了。
现在大家常用的清除浮动的方法:

.clearfix *zoom: 1;
.clearfix:before,.clearfix:after display: table;line-height: 0;content: "";
.clearfix:after clear: both;

制作三角的方法:

    .c-main:before
    content: '';
    border-top: 9px solid transparent;/*方框上部分背景颜色为透明*/
    border-bottom: 9px solid transparent;/*方框下部分背景为透明*/
    border-right: 9px solid #eee;/*箭头背景颜色*/
    position: absolute;/*绝对定位1*/
    top: 25px;/*距离顶部位置偏移量2*/
    left: -9px;/*距离左边位置偏移量3*/ /*123都是控制显示位置的*/
    
    .c-main:after
    content: '';
    border-top: 7px solid transparent;
    border-bottom: 7px solid transparent;
    border-right: 7px solid #fbfdfb;/*箭头背景颜色,覆盖前面的#eee颜色,使其颜色与整体颜色一致*/
    position: absolute;
    top: 27px;
    left: -7px;
    

定位都是其次的,主要是看border设置。一边有颜色,其他三边透明就可以实现。

参考文章:
http://blog.dimpurr.com/css-before-after/

以上是关于:after/::after和:before/::before的区别的主要内容,如果未能解决你的问题,请参考以下文章

生成器

Python 图中的while循环改for循环,怎么改,直接回答代码,谢谢

移动端半像素 0.5PX 边框实现。

python 生成器

伪元素

Must set property 'expression' before attempting to match