34复合选择器后代选择器交集选择器

复合选择器

复合选择器有三种,分别是后代选择器、交集选择器和并集选择器。

比如上图中,

.box.spec就是一个后代选择器。它的写法就是,在box类的后面跟一个空格,然后写spec类。既然叫后代选择器,也就是说,spec这个类名所在的标签(儿子),是box这个类名所在的标签(父亲)的子标签。

li.spec是一个交集选择器。在这里,li是一个标签选择器,后面紧跟的.spec是一个class选择器,所以li.spec就表示,选择的标签既是一个li标签,同时这个li标签上还有spec类,即这个li标签上有class=spec属性。

ul,ol是一个并集选择器。ul的后面是一个逗号,然后紧跟ol,所以并集选择器的写法,是在多个选择器之间用逗号隔开。

后代选择器

1.在CSS选择器中,使用空格表示后代。

比如下面的代码:

在上面的代码中,类名为box的div标签里面,有两个p标签,这两个p标签是这个div标签的子标签,也就是这个div标签的后代。

所以,在CSS代码中,.box这个class选择器,后面跟一个空格,再跟p这个标签选择器,就表示这里的p是.box这个类名所在的div的后代。

所以,.boxp这个后代选择器,选择的是div中的两个p标签,而不会选择最后面的两个p标签。

2.后代不一定是儿子

比如下面的代码:

在上面的代码中,类名为box的div标签中,嵌套着ul标签和li标签,li标签里面又嵌套着p标签。这里的p标签相当于是这个div标签的曾孙子,并不是儿子。

但是,曾孙子也是后代。

所以,在上面代码的HTML结构中,.boxp这个后代选择器,仍然会选择类名为box的div中的两个p标签。

3.后代选择器可以有很多空格,来隔开好几代

比如下面的代码:

在上面的HTML代码结构中,div的后代是ul,ul的后代是li,li的后代是p,p的后代是em。

所以,要选择这个em标签,就按照这种嵌套顺序,具有后代关系的选择器用空格隔开就行。

当然,按照上面代码的HTML结构,你要用后代选择器,来选择em这个标签,中间的几个选择器省略点也是可以的,比如你可以写.boxem,这样写也是没问题的。中间你随便省略哪几个选择器都可以,只要顺序不要写错就行。

交集选择器

假如你要选择具有spec类的h3标签,怎么办呢?

这时就需要用交集选择器。

在这里,h3和.spec之间没有空格,否则就成了后代选择器了。

这里的h3.spec表示,它既是一个h3标签,同时它还具有spec类。

并集选择器

并集选择器是多个选择器之间用逗号隔开,表示同时选择多个标签。

并集选择器又叫分组选择器,逗号表示分组。

比如下面的代码:

上面的代码,表示同时把ul和ol标签的默认样式去掉(ul去掉列表项前面的小圆点,ol去掉列表项前面的数字)。

选择器之间可以任意的搭配、结合,从而形成复合选择器,我们必须能一目了然的看出选择器代表的含义。

比如下面的CSS代码:

在上面的CSS代码中,div.boxlip.specem这个选择器,我们不看HTML代码结构,也应该能够快速的知道它表示什么意思。

它表示,选择类名是box的div标签里面的li标签里面的类名为spec的p标签里面的em标签。

在下面的HTML结构中,用div.boxlip.specem这个复合选择器,就能选择到em标签:

选择器的写法是多种多样的,只要你真正理解了各种选择器,就能很快速的使用合适的选择器,来选择你想要选择的标签。

接下来我创建一个复合选择器.html的文件,在里面演示复合选择器代码。

代码如下:

!DOCTYPEhtmlhtmllang=enheadmetacharset=UTF-8metaname=viewportcontent=width=device-width,initial-scale=1.0title复合选择器/titlestyle/*后代选择器*/.boxp{color:red;}/*交集选择器,选择既是p标签,又具有spec类名的p标签*/p.spec{color:green;font-style:italic;}/*并集选择器,同时选择ul和ol标签,给它们去掉默认样式*/ul,ol{list-style:none;}/style/headbodydivclass=boxp我是一个段落/pp我是一个段落/pullip我是一个段落/p/lilip我是一个段落/p/li/ul/divp我是一个段落/pp我是一个段落/ppclass=spec我是一个段落/pulli无序列表的列表项/lili无序列表的列表项/lili无序列表的列表项/lili无序列表的列表项/li/ulolli有序列表的列表项/lili有序列表的列表项/lili有序列表的列表项/lili有序列表的列表项/li/ol/body/html

在浏览器中显示效果如下:

我们看到,我在代码中写了很多p标签,

但是只有类名为box的div标签里面的p标签,字体是红色的,这就是.boxp这个后代选择器的作用。

只有带有spec类名的p标签,字体颜色是绿色并且字体是倾斜的,这就是p.spec这个交集选择器的作用。

并集选择器ul,ol同时选择了无序列表和有序列表标签,让它们的默认样式被去掉了。

CSS中的选择器用法非常灵活,只要能实现你的目的,你可以使用各种写法。

比如上面的代码中,后代选择器,你也可以这样写:div.boxp,意思就是选择类名是box的div标签里面的p标签。

这里不再多说,只要理解三种复合选择器的含义,就能灵活的使用各种写法。




转载请注明:http://www.aierlanlan.com/rzgz/2417.html