仙剑问情0.0 2023-04-19 23:02 采纳率: 77.8%
浏览 38
已结题

关于css3权重问题

关于css权重的两个问题:
一直被权重问题困扰,希望能通俗易懂的解答一下
问题1

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf8" http-equiv="content-type" content="text/css">
    <title>dsaf</title>
    <style>
      div{
        color: red;
      }
      div p{
        color: green;
      }
    </style>
  </head>
  <body>
    <div>
      <p>aaaa/p>
    </div>
  </body>
</html>

上述代码aaaa颜色为什么是green而不是red,
正常理解是:div标签权重为1,而div p权重是2,所以aaaa是绿色,这个能解释通
但是我的理解是:p标签的权重本来是1,但是由于p继承了div那么p的权重为0,既然p的权重为0,而div标签的权重为1那aaaa应该是red颜色才对啊,请问这个理解错在哪里?

问题2
别人给的如下代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .nav li{
      color: red;
    }
    .pink{
      color: blue;
      font-size: 55px;
    }
  </style>
</head>
<body>
  <ul class="nav">
    <li class="pink">aaaaa</li>
  </ul>
</body>
</html>

1.li和li.pink是不是都是一个意思?
2.这个继承有点混乱,首先pink继承了nav,而li也被nav继承了,那么这个pink和li是不是同级别的兄弟关系?或者换一个说法li继承了ul 而<style>内的li又被.nav继承,这样也是被允许的么,怎么感觉这么混乱,麻烦详细说一下。
3.该代码最终执行结果aaaa是红色55号字体,如果要变成蓝色字体可以写为ul .pink(权重为11)或者.nav .pink(权重为20)这样都可以变为蓝色。但为什么将.pink写为li.pink也是蓝色,此时的权重不应该是10么?
  • 写回答

3条回答 默认 最新

  • 白云苍狗い 2023-04-20 09:12
    关注

    先模糊的定义一个概念,权重 id选择器 100 类选择 10 标签选择 1 这只是一个大概的权重比例. 然后根据我们的选择器 做加法得出权重
    看问题1
    aa 在div的子标签p下
    从上到下看css
    第一个标签选择器div 红色 此时div下的字颜色会变成红色,p是div的子标签会继承它的颜色也是红色,此时如果后面没有其他的样式了 那么页面内容就是字体红色 .(这里的div选择器权重就是10,,不理解你说的继承之后就是0的思想)
    第二个标签选择器 div p 绿色 这里同时用了两个便签选择器 按照权重加法 这个样式的权重是20 , p标签也满足这个选择器,所以有本来的那个10权重的样式 被这个20的覆盖了, 是覆盖了 权重高的会覆盖权重低, 所以他从红色变成绿色了
    问题2
    我看你还是 在继承这里有些混乱 继承的话 你把它想简单点 先把继承的css权重算出来
    你文章说的的 "首先pink继承了nav,而li也被nav继承" 可是css样式中根本没有单独对nav的样式定义对吧, 也就是说 这是一个无用信息,nav没有样式 没有东西继承给他的孩子.
    然后 你又说的 "那么这个pink和li是不是同级别的兄弟关系?" 按照我们定义 pink是类选择器权重是10 li是标签选择器 权重是1 不存在什么兄弟关系 这两个选择器都指向li标签本身 选择器 就是根据你写的条件去找到这个标签

    "为什么将.pink写为li.pink也是蓝色" 现在生效的样式 .nav li 红色 权重是 10+1, li.pink蓝色的权重是 1+10 两个权重是一样的,对吧 但是li.pink是不是写在了.nav li 的后面, 也就是说同级权重 后执行的生效.

    最后用一个通俗的例子 讲解一下css
    css样式设置就好比刷墙 墙上有n个砖头 每个砖头都是一个标签 有的大砖头会里包裹小砖头, 权重就是油漆的颜色
    首先根据css选择器 定位到砖头 开始刷漆 这个步骤 会把砖头整体刷漆 如果是一个大砖头那面里面的小砖头也会被上色 (这就是继承)
    然后看权重, 我有好几个权重不同的 样式(油漆) 权重越高 等于油漆的颜色越深, 那么最后的上色结果 是不是最深的会把浅颜色的覆盖,就是样式以权重最高的为准.
    如果是权重相同的 也就是颜色相同的, 那是不是 谁最后上色 显示谁的颜色

    打字不易,希望采纳

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月28日
  • 已采纳回答 4月20日
  • 创建了问题 4月19日

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器