css的继承和层叠

标签(空格分隔): css



css称为层叠样式表,CSS有两大特性:继承性和层叠性,本章简单介绍一下继承性:

继承性:

定义:继承就是给父及设置了一些属性,子级继承了父及的该属性,这就是我们的css的继承,有一些属性可以继承,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>继承性</title>
    <style type="text/css">
        .father{
            color:red;

        }

    </style>
</head>
<body>
<div class="father" id="egon">
    <p>wangwang</p>
</div>

</body>
</html>


问题:背景色是不是继承?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>继承性</title>
    <style type="text/css">
        .father{
            color:red;
            font-size: 30px;
            background-color: green;

        }

    </style>
</head>
<body>
<div class="father" id="egon">
    <p>wangwang</p>
</div>

</body>
</html>

  • 通过上述的例子,背景色不属于继承,P标签的标签是透明的,但是从肉眼看到的是绿色的,他是通过透明提现的,所以background是没有继承的;

哪些属性可以继承

  • color,
    font-,
    text-
    ,
    line-*
    像一些盒子元素,定位元素(浮动,绝对,固定定位)不能继承,大家可以先了解一下;

层叠性:

这里先举个例子,大家猜猜如下的代码,P标签是什么颜色?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层叠性</title>
    <style type="text/css">
        #box{
            color:red;

        }
        .container{
            color:yellow;
        }
    </style>
</head>
<body>
    <p id="box" class="container">
        猜猜我是什么颜色
    </p>

</body>
</html>

结果如下图:

问题:为什么显示为红色呢?代码不是从上往下执行的吗?

  • 答案:在css里面我们会讨论这个问题,在CSS里面有个权重的概念,谁的权重大,浏览器就会显示谁的属性;

例如:如下代码执行:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层叠性</title>
    <style type="text/css">
        #box{
            color:red;

        }
        .container{
            color:yellow;
        }
        p{
            color:purple;
        }
    </style>
</head>
<body>
    <p id="box" class="container">
        猜猜我是什么颜色
    </p>

</body>
</html>
  • 执行结果:还是显示红色,为什么呢?
  • 那么如何判断谁的权重大?非常简单,就是数数:
    1.先数:id的数量;100
    2.在数:class数量010
    3.标签:数量001
    上述的代码:中当仅仅显示id的时候:这时候100我们只看id的时候,对应的ID是1,对应的类是0,对应的标签是0
    当显示:类的时候:010,这时候对应的ID是0,对应的类是1,对应的标签是0
    当显示:标签的时候:001对应的ID是0,对应的类是0,对应的标签是1;
  • 比较的方法:
    比较id的数量:如上述所述:id第一位是1,就不再进行后续的比较了;
    100----010---001;
    如上第一位比较大,就不在进行后续的比较了,如果第一位一样我们比较第二位,如果第二位比较大,我们不在进行比较就是显示第二位大的那个,如果第一位和第二位都一样的话,就继续比较;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层叠性</title>
    <style type="text/css">
        <!--这时候100我们只看id的时候,对应的ID是1,对应的类是0,对应的标签是0-->
        #box{
            color:red;

        }
        /*010,这时候对应的ID是0,对应的类是1,对应的标签是0*/
        .container{
            color:yellow;
        }
        /*001对应的ID是0,对应的类是0,对应的标签是1*/
        p{
            color:purple;
        }
    </style>
</head>
<body>
    <p id="box" class="container">
        猜猜我是什么颜色
    </p>
</body>
</html>

例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>权重</title>
    <style type="text/css">
        <!-- id 为2个0个类1个标签-->
        #box1 #box2{
            color:yellow;

        }
        /*1 1 1*/
        #box2 .wrap3{
            color:red;
        }
        /*1 0 3*/
        div div #box3 p{
            color:purple;
        }
        /*0 3 4*/
        div.wrap1 div.wrap2 div.wrap3 p{
            color:blue;
        }
    </style>
</head>
<body>
    <div id="box1" class="wrap1">
        <div id="box2" class="wrap2">
            <div id="box3" class="wrap3">
                <p>我是什么颜色</p>
            </div>
        </div>
    </div>

</body>
</html>

我们在比较的时候会先比较id的数量,然后比较类的数量,标签的数量;权重大的就是有限显示权重大的;

权重相同的处理

例如:下边的代码,权重一样的时候,应该怎么显示呢?应该显示后边的最新的权重;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>权重</title>
    <style type="text/css">
        /*1 1 1*/
        #box1 .wrap2 p{
            color:red;
        }
        /*1 1 1*/
         #box2 .wrap3 p{
            color:yellow;
        }

    </style>
</head>
<body>
    <div id="box1" class="wrap1">
        <div id="box2" class="wrap2">
            <div id="box3" class="wrap3">
                <p>我是什么颜色</p>
            </div>
        </div>
    </div>

</body>
</html>

so:所以上述执行的颜色结果是:黄色;
问题:
通过上述的学习大家看看下边的例子的网页应该显示为什么颜色?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>权重</title>
    <style type="text/css">
        /*2 1 0 */
        #box1 #box2 .wrap3{
            color:red;
        }
        /*1 1 1*/
         #box2 .wrap3 p{
            color:yellow;
        }

    </style>
</head>
<body>
    <div id="box1" class="wrap1">
        <div id="box2" class="wrap2">
            <div id="box3" class="wrap3">
                <p>我是什么颜色</p>
            </div>
        </div>
    </div>

</body>
</html>

根据我们以上的学习大家毫无疑问肯定是:红色;

颜色结果如下:

  • so:这里总结:我们会先看一下标签有没有被选中,选中了,就是开始数数(id ,class ,标签的数量,)谁的权重大就显示谁的属性,如果没有被选中,权重为0
    如果权重都是被继承下来的权重都是0,“就近原则”这里就近原则就是说谁描述的近;

原文地址:https://www.cnblogs.com/surewing/p/10612512.html

时间: 2024-10-05 00:42:13

css的继承和层叠的相关文章

CSS系列:CSS的继承与层叠特性

1. CSS的继承特性 所有的CSS语句都是基于各个标记直接的继承关系,CSS继承是指子标记会继承父标记的所有样式风格,并可以再父标记样式风格的基础上再加以修改,产生新的样式,而子标记的样式完全不会影响父标记. CSS的继承贯穿整个CSS设计的始终,每个标记都遵循着CSS继承的概念. 示例: <!DOCTYPE html> <html> <head> <title></title> <style type="text/css&qu

CSS 的继承、层叠和特殊性

继承 CSS的某些样式是具有继承性的,那么什么是继承呢? 继承是一种规则,它允许样式不仅应用于某个特定的HTML标签元素,而且应用于其后代. EX: p{color:red;} <p>测试CSS的<span>继承</span></p> 该段代码测试效果为:  测试CSS的继承 可见P文本和span中的文本都设置成了红色. 但是注意有一些CSS样式是不具有继承性的. EX: p{border:1px solid red;} <p>测试CSS的<

html学习第二天—— 第九、十章——CSS的继承、层叠和特殊性+CSS格式化排版

继承CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代.比如下面代码:如某种颜色应用于p标签,这个颜色设置不仅应用p标签,还应用于p标签中的所有子元素文本,这里子元素为span标签.p{color:red;} <p>三年级时,我还是一个<span>胆小如鼠</span>的小女孩.</p>可见右侧结果窗口中p中的文本与span中的文本都设置为了红色.但注意有一些css样式是不具有继承

css的继承、层叠和特殊性

1,继承  css的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代. 但注意有一些css样式是不具有继承性的.如border:1px solid red; 2,特殊性  有的时候我们为同一个元素设置了不同的css样式代码,那么元素会启用哪一个css样式呢?浏览器是根据权值来判断使用哪种css样式的,哪个权值高的就使用那种css样式. 权值规则:标签的权值为1,类选择器的权值为10,ID选择器的权值为100. 例如: p{c

CSS 选择器继承和层叠

CSS选择器及其继承特性.层叠特性1.基本选择器  标记  id  class  这个就不再作介绍了 2.复合选择器  交集 交集选择器由两个选择器直接连接构成,其结果是选中二者各自元素范围的交集 其中第一个必须是标记选择器,第二个必须是类别选择器或者ID选择器,须连续书写 如,div.class 并集 并集选择器的结果是同时选中各个基本选择器所选择的范围,任何形式的选择器(包括 标记.类选择器.ID选择器)都可作为并集选择器的一部分,它们之间用逗号相连 如,div,class,h3,#nav

css的继承以及层叠

继承 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>CSS的继承性</title> 6 <style> 7 .father { 8 color:red; 9 } 10 </style> 11 </head> 12 <body> 13 &

css中的继承、层叠、样式优先级机制

一.继承与层叠: 注: 可继承的样式: font-size font-family color ul li dl dt dd; 不可继承的样式:border padding margin width height ; 二.样式优先级机制: 1.css中的选择器有如下几类: 1.id选择器( # myid) 2.类选择器(.myclassname) 3.标签选择器(div, h1, p...) 4.相邻选择器(h1 + p) 5.子选择器(ul > li) 6.后代选择器(li a) 7.通配符选

CSS特性: 继承 和 层叠

在css中也存在着继承关系,与面向对象的编程语言不同,css的继承很简单,而且主要指的是在CSS盒模型中,外围的盒子的样式会被内部所包含的盒子所继承.具体来了解一下. HTML元素之间存在一个"树型"关系,这个关系使得样式发生继承.1. 子元素会继承父元素的样式 2. 子元素可以定义自有样式 3. 子元素可以改变从父元素继承而来的样式 4. 子元素的样式不会反作用于父元素(继承是单向的) 5. 每个元素都遵循样式继承的概念. 6. 样式继承是一个抽象(抽象是提取共同点的方法)的过程,抽

后端码农谈前端(CSS篇)第八课:继承与层叠

一.继承 继承:所谓CSS样式继承,就是子元素应用父元素的规则声明.(由这一特性,可将CSS属性分为可继承属性和非可继承属性.)可继承属性:属性值可由父元素继承给子元素的属性称之为可继承属性. 哪些属性是可继承属性? 1.文本样式属性 text-indent.text-align.word-spacing.letter-spacing.text-transform.text-decoration.direction.white-space 2.字体样式属性 font.font-family.fo