包虫病

注册

 

发新话题 回复该主题

CSSmiddot选择器12四 [复制链接]

1#

前面对四种常用的选择器做了详细的介绍,下面就四种常用选择器之间的差异进行必要的说明。

选择器示例示例说明CSS.class.intro选择所有class="intro"的元素1#id#firstname选择所有id="firstname"的元素1**选择所有元素2elementp选择所有p元素1element,elementdiv,p选择所有div元素和p元素1elementelementdivp选择div元素内的所有p元素1elementelementdivp选择所有父级是div元素的p元素2element+elementdiv+p选择所有紧接着div元素之后的p元素2

选择器的差异体现在优先级上。

四种选择器的差异,主要体现在优先级上。

headmetacharset="UTF-8"title选择器/titlestyletype="text/css"*{font-size:12px;color:red;}/style/headbody选择器的优先级问题div通配符选择器/divdiv标记选择器/divdiv类选择器/divdivID选择器/div/body

页面显示的效果

在页面上,所有的字体都被渲染成了红色,并且字体大小都是12px

对上面的代码稍加修改,添加一个样式

styletype="text/css"*{font-size:12px;color:red;}div{font-size:16px;color:black;}/style

页面显示的效果

div中的文字,字体变成了黑色,字体大小变成了16px。

这里不是因为通配符选择器(*)没有给div作用效果,而是通配符选择器的优先级没有标记选择器的高,页面选择高优先级的标记选择器渲染了文字。

也就是说,当样式冲突时,页面选择搞优先级的渲染。

给div添加上类和id,然后设置样式

headmetacharset="UTF-8"title选择器/titlestyletype="text/css"*{font-size:12px;color:red;}div{font-size:16px;color:black;}.label{font-size:20px;color:yellow;}/style/headbody选择器的优先级问题div通配符选择器/divdivclass="label"标记选择器/divdivid="label-class"类选择器/divdivid="label-id"class="label"ID选择器/div/body

页面显示的效果

对于设置了label属性的div,文字样式又发生了变化,之前设置的样式效果消失了,是之前的样式没有作用到这两个div上面吗?

这还是样式优先级问题,类选择器的优先级比标记选择器的优先级高,所以也没渲染的时候,选择了类属性的样式渲染。

类似的,再添加一个样式

#label-class{font-size:22px;color:blue;}

这是一个ID选择器,也没效果为

说明了id选择器的优先级比标记选择器的高,所以选择渲染了id选择器的样式设置

那么id选择器和类选择的优先级那个更高呢

#label-id{color:pink;}

为最后一个div设置颜色样式

它的颜色跟随了id选择器的颜色,但是字体大小跟随了类选择器的样式,这是因为,id选择器中没有设置字体大小,不会与类选择器的样式冲突,所以能够正常显示。

大概的结论是,优先级顺序:

id选择器类选择器标记选择器通配符选择器

好坏生长

分享 转发
TOP
发新话题 回复该主题