你所知道或不知道的CSS content属性

字节弦歌
• 阅读 87

写在前面 css博大精深,很多属性,往往都是看似熟悉,但是似乎又不能将其特性和用法完整地说出来。
content属性,的确是很眼熟,也许很多童鞋和我一样,和它初次见面,是在清除浮动的时候:

 .clearfix:after{
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden
}

如上所示,content 属性与 :before 及 :after 伪元素配合使用,并可以接受一个字符串作为值。
然而,除了字符串之外,还能接受什么样的值呢?
定义和用法 content 属性与 :before 及 :after 伪元素配合使用,来插入生成内容。
该属性用于定义元素之前或之后放置的生成内容。默认是行内内容,不过可以用属性 display 控制。
参考:w3school
可能的值 none、normal、inherit、string、url()、attr()、[no-]open-quote、[no-]close-quote、counter[s]
其中none、normal、inherit这三个和大多数属性类似,故不做介绍。
string string是常见的,上面清除浮动的例子,就是其中之一。
url() url的用法,和background属性有点类似,可以接受一个图片url。不一样的是,content属性无法控制图片的大小。

 <div class="logo">Google</div>

.logo:before{
    content: url(https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png);
}

查看示例
attr attr,顾名思义,就是将content内容设置为对应元素的某一属性。

 <p>
    <span data-text='半'>半</span>
    <span data-text='边'>边</span>
    <span data-text='效'>效</span>
    <span data-text='果'>果</span>
</p>

span{
    font-size: 100px;
    font-weight: bold;
    position: relative;
    color: #000;
}
span:before{
    content: attr(data-text);
    color: #F00;
    position: absolute;
    left: 0;
    top: 0;
    width: 50%;
    overflow: hidden;
}

查看示例效果
quote · 引号 [no-]open-quote、[no-]close-quote,这四个值,常用于给元素前后加上引号,配合quotes 属性一起使用。

 <p>鲁迅曾经说过: <span>能用CSS解决的问题就不要使用JS。<span>呵呵,谁说的?<span class="no-quote">呵呵,谁说的?</span></span></span></p>

span {
    quotes: '“' '”' '‘' '’' '"' '"';
}
span:before { 
    content: open-quote;
}
span:after {
    content: close-quote;
}
.no-quote:after{
    content: no-close-quote;
}

其中,quotes属性定义要使用的引号。两两一组,前两个值规定第一级引用嵌套,后两个值规定下一级引号嵌套。如此类推。
需要注意的是,只有当伪元素:before设置content的值为open-quote才会有效果。
查看示例
counter[s] · 计数器 这是一个很强大的东西,不妨先来体验一下其强大的力量,查看示例
与其搭配使用的,还有counter-reset、counter-increment两个属性。
counter-reset 用来标识计数器的作用域,值包括两部分:第一部分为计数器的名字;第二部分为计数器的起始值,默认为0。此外,counter-reset还可以同时声明多个计数器

 counter-reset: n 0
counter-reset: n 2 
counter-reset: n 0 m 0 p 0

counter-increment 用来表明计数器实际用到的范围,值包括两部分:第一部分为计数器的名字;第二部分为计数器的递增的值,默认为1。如:

 counter-increment: n 2
counter-increment: n -1 /*递减*/

那counter和counters有什么不一样呢?
counter() counter方法可以接收两个参数。第一个是计数器的名字,必填;第二个是计数器的样式,也就是list-style-type,其支持的关键字值,就是list-style-type支持的那些值,比如disc | circle | square之类等等。

 content: counter(n)

content: counter(m, circle)

counters() counters方法主要用于嵌套计数,可以接收三个参数。第一个是计数器的名字,必填;第二个是字符串,用于嵌套计数的分隔符,如1.1中的“.”;第三个参数是计数器的样式,与counter一样。其中,前两个参数为必填

 content: counters(n, '-');

说了这么多,还是查看示例吧
后记 实在不得不感叹css的博大精深!
以上为个人学习总结,如有错漏,欢迎指正。
参考 http://www.runoob.com/cssref/...
https://www.zhangxinxu.com/st...
转载于猿2048:➨《你所知道或不知道的CSS content属性》

点赞
收藏
评论区
推荐文章
凯特林 凯特林
4年前
移动端H5开发常用技巧总结
html篇常用的meta属性设置meta对于移动端的一些特殊属性,可根据需要自行设置<meta name"screenorientation" content"portrait" //Android 禁止屏幕旋转<meta name"fullscreen" content"yes"             //全屏显示
Dax Dax
3年前
Vue父子组件
几种常见的通信方式:1、prop属性父组件通过绑定属性的方式,给子组件传值,同时子组件通过设置props来接收letChildVue.extend(template:'content',props:content:type:String,default:()r
Wesley13 Wesley13
3年前
CSS扩展语言
CSS没有变量?不要诬蔑我们大CSS好不?就像ES一样,你说JS没有模块,ES6给你整一个出来,而在这之前就已经有相关的库出来了。CSS也一样,你说CSS没有变量,CSS3就给你一个var(),变量你值得拥有!//语法//<customprepertyname自定义属性名//<declarationvalue
Wesley13 Wesley13
3年前
CSS基本语法及页面引用
css基本语法及页面引用(1)css基本语法css的定义方法是:选择器{属性:值;属性:值;属性:值;}选择器是将样式和页面元素关联起来的名称,属性是希望设置的样式属性每个属性有一个或多个值。代码示例:/css注释ctrlshift"/"/d
Stella981 Stella981
3年前
HTML中meta标签的作用与使用
META标签用来描述一个HTML网页文档的属性META标签可分为两大部分:HTTPEQUIV和NAME变量。HTTP实例HTML代码实例中有一项内容是<metahttpequiv"ContentType"content"text/html;charsetgb2312"其作用是指定了当前文档所使用的字符编码为gb2
Stella981 Stella981
3年前
CSS 分类 (Classification)
★★CSS分类属性(Classification)★★⑴CSS分类属性允许你控制如何显示元素,设置图像显示于另一元素中的何处,相对于其正常位置来定位元素,使用绝对值来定位元素,以及元素的可见度。⑵下面是常用的属性以及描述:!(https://oscimg.oschina.net/oscnet/00cb565
Wesley13 Wesley13
3年前
CSS定位属性Position详解
CSS中最常用的布局类属性,一个是Float(CSS浮动属性Float详解(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fparan.io%2Fcssfloatattribute%2F)),另一个就是CSS定位属性Position。1\.position:static
Stella981 Stella981
3年前
CSS之清除浮动 && float属性
DIV层内的元素在使用了float属性后无法自动改变高度的解决办法:有的时候为了让外侧层根据内容自动调整,没有设置高度或宽度,一般都会正常显示。但如果层内元素使用了float属性,就会使那些元素脱离文件流,就无法再扩充容器层,就会导致外层大小无法根据内容自动调整。关于这个问题,总结出以几种在当下几种主流浏览器都兼容的方法,供大家参考。1.清除浮动在层
Stella981 Stella981
3年前
Android:Layout_weight的深刻理解
最近写Demo,突然发现了Layout\_weight这个属性,发现网上有很多关于这个属性的有意思的讨论,可是找了好多资料都没有找到一个能够说的清楚的,于是自己结合网上资料研究了一下,终于迎刃而解,写出来和大家分享。首先看一下Layout\_weight属性的作用:它是用来分配属于空间的一个属性,你可以设置他的权重。很多人不知道剩余空间是个什么概念,下面
Wesley13 Wesley13
3年前
CSS清除浮动的4种方式
1、使用空标签清除浮动。我用了很久的一种方法,空标签可以是div标签,也可以是P标签。这种方式是在需要清除浮动的父级元素内部的所有浮动元素后添加这样一个标签清除浮动,并为其定义CSS代码:clear:both。此方法的弊端在于增加了无意义的结构元素。2、使用overflow属性。此方法有效地解决了通过空标签元素清除浮动而不得不增加无意代码的弊端。使用
Wesley13 Wesley13
3年前
CSS基础_CSS样式的几种书写形式
1.内嵌式将CSS代码集中写在HTML文档的head头部标签中,并且用style标签定义,其基本语法格式如下:<head<styletype"text/CSS"标签名/选择器{属性1:属性值1;属性2:属性值2;属性3:属性值3;