:before/:after与::before/::after的区别 和属性content:值

Posted jiunie

tags:

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

一、伪元素和伪类是非常相像的两个东西。在实际上 css3 为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。

:Pseudo-classes
::Pseudo-elements

但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。

 

二、基本用法:

p::after 
img::before

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

注:img和input没有该属性

content的内容一般可以为以下四种:

 none: 不生成任何值。
 attr(): 插入标签属性值。通常和自定义属性data-配合使用,因为传统的其它属性虽然也能存值,但通常不适合存放表达性文字。
  <div data-line="1"></div>
    div[data-line]:after content: attr(data-line);/* 属性名称上不要加引号! */ 
 url(): 使用指定的绝对或相对地址插入一个外部资源(图像,声频,视频或浏览器支持的其他任何资源)
 string: 插入字符串
counter():调用计数器,可以不适用列表元素实现序号功能。具体参见counter-increment和counter-reset属性的用法。
 h2:before  counter-increment: chapter; content: "Chapter " counter(chapter) ". " 

二、进阶用法:

1.清除浮动

.clearfix *zoom: 1;

.clearfix:before,
.clearfix:after 
    display: table;
    line-height: 0;
    content: "";


.clearfix:after 
    clear: both;

 

2.制作三角

.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;

 

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

before与after的一些应用总结

IMG标签与before,after伪类

:before :after

这可能与 Unpivot 一起使用吗?

:before, :after 和填充

before(),after(),prepend(),append()等新DOM方法简介