分享更有价值
被信任是一种快乐

CSS原生嵌套语法怎么使用

文章页正文上

本文小编为大家详细介绍“CSS原生嵌套语法怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“CSS原生嵌套语法怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。所谓的嵌套,就是将一个 CSS 规则放在另一个(嵌套规则)中,子规则的选择器将相对于父规则的选择器。这有利于代码的模块化和可维护性。原来只能在 CSS 预处理器中使用的嵌套功能,先在可以在原生 CSS 中使用。其实,CSS 嵌套和 Sass 的嵌套类似,比如,对于以下 CSS 样式:如果使用 CSS 嵌套时,就是这样的:

table.colortable{
&td{
text-align:center;
&.c{text-transform:uppercase}
&:first-child,&:first-child+td{border:1pxsolidblack}
}
&th{
text-align:center;
background:black;
color:white;
}
}

可以看到,使用嵌套不仅消除重复,相关规则的分组还提高了生成的 CSS 的可读性和可维护性。嵌套规则可以使用嵌套选择器(&) 直接引用父规则的匹配元素,或者使用相对选择器语法指定“后代”以外的关系。

.foo{
color:red;

&:hover{
color:blue;
}
}

/*相当于:*/

.foo{color:red;}
.foo:hover{color:blue;}

.foo{
color:red;

+.bar{
color:blue;
}
}

/*相当于:*/

.foo{color:red;}
.foo+.bar{color:blue;}

但是,以标识符(类型选择器)开始嵌套选择器是无效的:

div{
color:red;

input{
margin:1em;
}
}
/*无效,因为input是一个标识符*/

如果想继续这样编写,就需要稍微进行修改:

div{
color:red;

&input{margin:1em;}
/*有效,不再以标识符开头*/

:is(input){margin:1em;}
/*有效,以冒号开头,并且等同于之前的规则*/
}

在使用嵌套规则时,必须能够引用父规则匹配的元素。为此,规范中定义了一个新的选择器,即嵌套选择器,写为 & 。当在嵌套样式规则的选择器中使用时,嵌套选择器表示与父规则匹配的元素。当在任何其他上下文中使用时,它表示与该上下文中的 :scope 相同的元素。嵌套选择器可以通过 :is() 选择器将其替换为父样式规则的选择器。例如:

a,b{
&c{color:blue;}
}

这就相当于:

:is(a,b)c{color:blue;}

嵌套选择器不能表示伪元素(与 :is() 的行为相同):

.foo,.foo::before,.foo::after{
color:red;

&:hover{color:blue;}
}

这里,& 只代表.foo匹配的元素,它等同于:

.foo,.foo::before,.foo::after{
color:red;
}

.foo:hover{
color:blue;
}

嵌套选择器的特异性(权重)等于父样式规则的选择器列表中复杂选择器中最大的特异性(与 :is() 的行为相同):

#a,b{
&c{color:blue;}
}

.fooc免费云主机、域名{color:red;}

DOM 结构如下:


Bluetext

文本将是蓝色的,而不是红色的。& 的特异度是 #a([1,0,0]) 和 b([0,0,1]) 特异性中较大的一个,所以是 [1,0,0],而整个 & c 选择器具有特异性 [1,0,1],它大于 .foo c ([0,1,1]) 的特异性。值得注意的是,这与将嵌套手动扩展为非嵌套规则时得到的结果不同,因为 color: blue 声明将由 b c 选择器 ([0,0,2]) 匹配,而不是#a c ([1,0,1])。读到这里,这篇“CSS原生嵌套语法怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注云技术行业资讯频道。

相关推荐: 怎么使用CSS实现酷炫六边形网格背景图

本文小编为大家详细介绍“怎么使用CSS实现酷炫六边形网格背景图”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用CSS实现酷炫六边形网格背景图”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,看到这样一个图形,如果想要使用一…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册