权重这里还是有点不明白

权重这里还是有点不明白

问题描述:

权重到底是怎么去比较的,

如果一个选择器有2个id1个class1个标签(2,1,1)和3个id(3,0,0)的权重相比

哪个大呢?

https://class.imooc.com/course/qadetail/274270

按照慕ou老师所说,应该是后者大;

https://class.imooc.com/course/qadetail/282104

但按照慕慕子老师所说,是前者大;

​有点迷了...

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好,解答如下:

1、是的,继承样式的权重是0适用于所有标签。

2、如果存在多个继承样式,则要比较谁距离文字近;比如同学举得例子中,第一个选择器作用于#div3,第二个选择器作用域#div2,文字在span中;对于span而言,#div3要比#div2离的近:

http://img1.sycdn.imooc.com//climg/609f440d09ee278406720280.jpg

则样式以#div3的为准,因此字体是红色。

该内容后面会讲,暂时了解一下,后面跟着视频学即可。

3、当权值相同,并且作用于目标元素上时,才会后面覆盖前面的,如下:

http://img1.sycdn.imooc.com//climg/609f447b09f74bc106840511.jpg

两个选择器都作用在span上,并且权值一样,则谁写在后面,文字就受谁控制。

祝学习愉快!

  • cloudonthesun 提问者 #1

    老师的话让我含糊灌顶,谢谢老师!

    2021-05-15 13:18:04
  • cloudonthesun 提问者 #2

    老师的话让我含糊灌顶,谢谢老师!

    2021-05-15 13:22:21
好帮手慕久久 2021-05-15 10:41:23

同学你好,老师和“慕慕子老师”沟通了一下,她的例子不太恰当,所以结论有误。具体解释如下:

1、当需要比较权值的时候,选择器一定是作用在同一个元素上的;比如下面的例子,就不能用“计算权重”的方式来比较:

http://img1.sycdn.imooc.com//climg/609f2fc2090217d407270570.jpg

原因是第一个选择器是作用在span标签上,而第二个选择器是作用在#div3这个元素上:

http://img1.sycdn.imooc.com//climg/609f2fe80921166206920256.jpg

文字是处于span中,所以第二个选择器对于span来说是“继承样式”,而“继承样式权重是0”,所以上面的例子中,span中的文字颜色是绿色:

http://img1.sycdn.imooc.com//climg/609f3051095c2bea06900285.jpg

http://img1.sycdn.imooc.com//climg/609f3058091a48a203140104.jpg

2、当多个选择器作用在同一个元素上时,可以用“权值计算”来比较,如下:

http://img1.sycdn.imooc.com//climg/609f30ba09b3cba307450477.jpg

第一个选择器是作用在#div3上,第二个选择器是作用在.test上,#div3和.test是同一个元素,并且文字就处于这个元素内的:

http://img1.sycdn.imooc.com//climg/609f319809b66d1507600482.jpg

此时第一个选择器有3个id,第二个选择器有2个id、一个class,3个id的权重大,所以文字是红色:

http://img1.sycdn.imooc.com//climg/609f31ab09afae7b04600088.jpg

比较规则如下:

从前往后比较,如果id不同,则id大的权重大(不用再往后比较class和标签了);如果id相同,则比较class,哪个class大,则哪个权重大(不用再往后比较标签了);如果id、class都相同,则比较标签,哪个标签大则权重大。

该规则也是视频中讲解的规则,同学可以再看一遍视频理解下。

3、应用上述规则,看下3-28的习题:

文字在span中,选择器都是作用在span上;先比较id个数,第一个、第四个选择器中都有id,第二个、第三个没有id,因此1、4选择器的权重比2、3大:

http://img1.sycdn.imooc.com//climg/609f3415094d766704510152.jpg

再比较1、4,1中有一个class,而4没有,那么1的权重大,因此答案是A。

4、习题中的解析,则是提供了另外一种计算方式,它是把权重细化成具体到数值了。第一个选择器权重是(1,1,1),对应的数值是1*100+1*10+1=111;同理后几个选择器分别是1、3、102,因此第一个选择器权重大,答案还是A。

祝学习愉快!

  • 提问者 cloudonthesun #1

    老师,关于2我明白了,关于1还有2个疑问,

    1)继承样式的权重是0适用于所有的标签吗(不只是span)?

    2)当span标签只存在多个继承样式且发生了冲突,那么如果这两个设置权重都是0的话,实际的样式是按照哪个设置来?我理解是后边的会覆盖前面的,但是事实好像并非如此

    http://img1.sycdn.imooc.com//climg/609f3bc7097abab615531048.jpg

    http://img1.sycdn.imooc.com//climg/609f3be509bf810d08540274.jpg

    2021-05-15 11:12:08
cloudonthesun 提问者 2021-05-15 09:43:54

http://img1.sycdn.imooc.com//climg/609f26e909499e3321710825.jpg

按照这个题的解析来看,应该是后者大吧

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师