摘要:前面介绍过里的和这两个伪元素,以及相关的用法,这篇将针对搭配计数器进行一些有趣的应用,相信熟练之后搞不好很好玩也说不定。使用语法计数器名称,分隔字,了解原理之后,透过和的交互应用,就可以做出颇具特色的列表效果。
前面介绍过CSS里的::before和::after这两个伪元素,以及content相关的用法,这篇将针对content搭配counter(计数器)进行一些有趣的应用,相信熟练之后搞不好很好玩也说不定。
counter基本用法在CSS里头,counter是个很有意思的功能,最常见得就是如果我们使用list清单,样式选择decimal十进制,当清单变多的时候数字也会跟着增加,底层貌似就是使用counter来做的,也因为counter所产生的数值并不存在于网页的元素内,所以如果我们要在清单元素之外使用,就必须透过::before或::after的content来实现。
counter最的基本用法一定要有一个父元素和子元素(类似list的原理,使用ul包着li),所以长相会类似下面这段html:
</>复制代码
钢铁人
美国队长
雷神索尔
在CSS里头,先针对div父元素使用counter-reset:num;进行计数器归零的设置,里面num是计数器累加数值的变数,接着可以在span::before里面看到counter-increment:num;这一段,这段的作用是把num累加上去,预设数值为加1,接着就透过content显示出来。
</>复制代码
计数器预设的显示语法为:counter(计数器名称,list-style-type)
</>复制代码
div{
counter-reset:num;
}
span{
display:block;
}
span::before{
counter-increment:num;
content:counter(num) ". ";
}
透过指定一开始counter-reset的起始数值,还有counter-increment累加的间隔数值,就可以做出从某个数值开始或只显示偶数、奇数的效果。
</>复制代码
div{
counter-reset:num 3;
}
span{
display:block;
}
span::before{
counter-increment:num 2;
content:counter(num) ". ";
}
如果要更换数字的样式,也可以透过计数器的第二个设定值list-style-type来更改,下面的例子就是将样式更改为georgian。
</>复制代码
div{
counter-reset:num;
}
span{
display:block;
}
span::before{
counter-increment:num;
content:counter(num, georgian) ". ";
}
counter进阶用法
除了指定单一个变数外,counter也可以同时指定多个变数,例如下面这段HTML,有三个类别在里面,我分别用span、i和b来分类。
</>复制代码
钢铁人
美国队长
雷神索尔
宙斯盾局
神鬼局
神经局
九头蛇
九头牛
九头猪
CSS一开始counter-reset可以指定多个变数,透过一个空白字元分隔,如果空白字元后面接着数字则是起始值,没有数字预设为0,当这样设定之后,就可以看到不同类别的数字代号就不同。
如果遇到了巢状结构,需要一层层的展开(例如:1 > 1.1 > 1.1.1),采用上述的作法可能就会复杂许多,好在counter还提供了另外一个counters的功能,目的就是来解决巢状结构的麻烦事,在开始前可以先看看透过ul和li组合的清单长相:
</>复制代码
- 第一层
- 第二层
- 第三层
- 第三层
- 第三层
- 第二层
- 第二层
- 第一层
- 第二层
- 第二层
传统的清单如果将list-style设为decimal,同样可以具备数字接续的功能,但相对来说要做一些特殊变化就办不到了。
</>复制代码
li{
list-style:decimal;
}
透过content和counters的搭配,我们就可以告别预设值的困扰,甚至可以在不使用清单ul和li的状况下,实现和清单一模一样的效果,举例来说,我们纯粹透过div模拟一个清单的长相(状态仍然必须是有父元素和子元素的概念),里面的样式b就等于是ul,样式a就等于是li:
</>复制代码
第一层
第二层
第三层
第三层
第三层
第二层
第二层
第一层
第二层
第二层
由于b的外层没有东西,所以一开始要把body和b都进行counter reset的动作,接着透过counters的使用,让计数器的数值可以一个接着一个放进去,如此一来就可以做到原本清单不容易实现的效果了。
</>复制代码
counters使用语法:counters(计数器名称,分隔字,list-style-type)
</>复制代码
body, .b{
counter-reset:c;
}
.a::before{
content:counters(c, ".") ":";
counter-increment:c;
}
div{
margin-left:10px;
}
了解原理之后,透过 ::before 和 ::after 的交互应用,就可以做出颇具特色的列表效果。
</>复制代码
body, .b{
counter-reset:c;
}
.a{
box-sizing:border-box;
position:relative;
line-height:40px;
}
.a .a{
padding-left:30px;
}
.a::after{
content:"";
box-sizing:border-box;
display:inline-block;
position:absolute;
z-index:-1;
top:0;
left:0;
width:100%;
height:40px;
margin-left:30px;
box-shadow:inset 0 2px #666;
background:#eee;
}
.a::before{
content:counter(c, upper-roman);
counter-increment:c;
display:inline-block;
width:30px;
height:40px;
background:#666;
color:#fff;
text-align:center;
margin-right:5px;
}
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/54888.html
摘要:伪元素被当做的样式来进行展现,用法和普通的元素用法是一样的。中的伪元素使用个冒号,在中,为了区分伪类和伪元素,规定伪元素使用个冒号。伪元素的特点优点不占用节点,减少节点数。不仅块级元素可以设置伪元素,大部分行级元素也可以。 1 什么是伪元素? CSS 在渲染文档的时候,伪元素可以通过 css 给 HTML 添加一个元素(叫标签也行),这个元素在文档树中是找不到的。伪元素被当做 CSS ...
摘要:前面介绍过里的和这两个伪元素,以及相关的用法,这篇将针对搭配计数器进行一些有趣的应用,相信熟练之后搞不好很好玩也说不定。使用语法计数器名称,分隔字,了解原理之后,透过和的交互应用,就可以做出颇具特色的列表效果。 前面介绍过CSS里的::before和::after这两个伪元素,以及content相关的用法,这篇将针对content搭配counter(计数器)进行一些有趣的应用,相信熟练...
摘要:前言继上篇魔法堂稍稍深入伪类选择器记录完伪类后,我自然而然要向伪元素伸出魔掌的啦。和的注意事项默认必须设置属性,否则一切都是无用功默认,就是和的内容无法被用户选中的伪元素和伪类结合使用形如。 前言 继上篇《CSS魔法堂:稍稍深入伪类选择器》记录完伪类后,我自然而然要向伪元素伸出魔掌的啦^_^。本文讲讲述伪元素以及功能强大的Contet属性,让我们可以通过伪元素更好地实现更多的可能! ...
摘要:状态伪类是基于元素当前状态进行选择的。在与用户的交互过程中元素的状态是动态变化的,因此该元素会根据其状态呈现不同的样式。单冒号用于伪类,双冒号用于伪元素。可以通过对父元素添加伪类撑开父元素高度,因为就是其最后一个子元素。 css选择器常见包括id(#id)、标签(tag)、class(.class)、属性[attr=attrval]等,还包括伪元素和伪类选择器。正确的利用伪元素和伪类能...
阅读 3370·2021-11-22 14:44
阅读 1207·2021-11-16 11:53
阅读 1346·2021-11-12 10:36
阅读 802·2021-10-14 09:43
阅读 3832·2019-08-30 15:55
阅读 3465·2019-08-30 14:14
阅读 1839·2019-08-26 18:37
阅读 3486·2019-08-26 12:12
极致性价比!云服务器续费无忧!
Tesla A100/A800、Tesla V100S等多种GPU云主机特惠2折起,不限台数,续费同价。
NVIDIA RTX 40系,高性价比推理显卡,满足AI应用场景需要。
乌兰察布+上海青浦,满足东推西训AI场景需要