css设置父元素样式
学习CSS:完整指南
无论您是刚刚开始使用基础知识还是想探索更高级CSS,我们都已构建了完整的指南来帮助您学习 CSS。
在这个快速技巧中,我们将介绍CSS计数器的基本知识; 一项有用但尚未广为人知CSS功能。 构建完演示之后,我们将看一些利用CSS计数器的真实示例站点。
目标:样式化有序列表
第一步,让我们看一下将要构建的布局:
没什么好看的,对吧? 但是,这就是挑战:我们将使用语义标记,避免使用不必要的div
和span
元素来构建这些计数器标记的诱惑。
让我们讨论一个干净灵活的解决方案!
CSS计数器
生成上述布局所需的全部工作就是定义一个有序列表。 在这一点上,您可能想知道我们是否可以使用其他元素甚至是无序列表。 简短的答案是“是”,但是请记住,有序列表是唯一能够准确描述页面结构的元素。
然后,您可能会问,是否有可能完全自定义有序列表编号的外观,并以此方式构建所需的布局。 样式化有序列表编号确实很棘手。 值得庆幸的是,还有一种替代的跨浏览器方法,所以让我们隐藏默认的列表号,而改用CSS计数器。
句法
CSS计数器使我们能够根据重复的元素生成数字,并相应地设置其样式。 将CSS计数器视为变量,其值可以增加。 让我们看一下基本语法:
在这里,我们在有序列表上创建一个新计数器并定义其范围。 我们使用counter-reset
属性。
- 第一个值是计数器的名称
- 后面跟一个可选参数,用于定义计数器的起始值(默认值:0)。 请注意,计数器将始终开始递增计数,因此在本例中,第一个生成的值为1。
在第二张图中,我们可以看到我们正在对列表中li
伪元素::before
样式设置。
- 在这里,我们将计数器的值添加到
::before
的content
中。 值得一提的是,通过将CSS计数器与content属性一起使用,我们可以将生成的数字与字符串连接(连接)。 - 我们参考柜台的名字
- 并将计数器的样式定义为“十进制”。 此处的可能值类似于用于
list-style-type
属性的值。 - 在
counter-increment
规则中,我们再次引用计数器的名称 - 然后使用可选参数指示计数器增加多少。 此处的默认值为1。
标记
根据我们刚刚讨论的内容,这是我们的标记:
<ol>
<li>
<h4>List Item</h4>
<p>Some text here.</p>
</li>
<li>
<h4>List Item</h4>
<p>Some text here.</p>
</li>
<-- more list items here -->
</ol>
和相关CSS:
ol {
counter-reset: section;
}
li {
list-style-type: none;
font-size: 1.5rem;
padding: 30px;
margin-bottom: 15px;
background: #0e0fee;
color: #fff;
}
li::before {
content: counter(section);
counter-increment: section;
display: inline-block;
position: absolute;
left: -75px;
top: 50%;
transform: translateY(-50%);
padding: 12px;
font-size: 2rem;
width: 25px;
height: 25px;
text-align: center;
color: #000;
border-radius: 50%;
border: 3px solid #000;
}
这样得出的结果如下所示:
局限性
在这一点上,重要的是要注意伪元素不是100%可访问的。 为了对此进行测试,我进行了快速测试。 我安装了NVDA,并使用Chrome 50,Firefox 45和Internet Explorer 11预览了演示页面。
我发现,当使用Internet Explorer时,屏幕阅读器没有宣布生成的内容。 如今, 大多数屏幕阅读器都可以识别这种生成的内容,但是您应该意识到可能存在的局限性,因此可以确定使用伪元素生成的内容足够安全。
野外CSS计数器
既然我们了解CSS计数器的基础知识,我们就可以展示一些示例来说明其潜在的用例。
首先,CSS计数器通常用于在线报纸。 大多数时候,您会在侧边栏中找到它们:
CSS计数器也可以在描述步骤或提供指导的部分中使用。 这就是一个例子:
膨胀HTML的示例
在上一节中,我们看到了两家利用CSS计数器的在线报纸。 现在,让我们看看另外两个使用肿的标记(尽管内容可访问)而不是CSS计数器的报纸:
结论
在这个快速技巧中,我们学习了如何使用CSS计数器来对有序列表项进行样式设置。 让我们简要总结一下我们所涵盖的内容:
您在项目中使用过CSS计数器吗? 如果是,请务必与我们分享您的工作!
css设置父元素样式