CSS_07_Css的三大特性

CSS的三大特性

  • 层叠性
  • 继承性
  • 特殊性(权重)
层叠性
  • 样式冲突,遵循就近原则;
  • 样式不冲突,不会重叠。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>层叠性</title>
    <style>
        <!--颜色样式冲突,就近原则,黄色
            字体大小样式不冲突,字号为20px -->
        div {
            color: pink;
            font-size: 20px;
        }
        div {
            color: yellow;
        }
    </style>
</head>
<body>
    <div>王可可是一条DOG</div>

</body>
</html>
继承性

css书写样式时,子标签会继承父标签的某些样式,如字体、样色等。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>继承性</title>
    <style>
        .jianlin {
            color: pink;
        }
    </style>
</head>
<body>
    <div class="jianlin">
        <p>王思聪</p>
    </div>
</body>
</html>

注意:

不是所有的样式都能继承,子元素可以继承父类元素的样式有text-font-line-color都能继承。

特殊性

在书写css样式时,经常出现两个或者更多规则的应用在同一元素上,这是就会出现权重问题。css定义了一套公式来计算,称为CSS Specificity。采用四位数字串表示,值从左到右,左边最大,逐级递减。

选择器权重
标签选择器0,0,0,1
类选择器0,0,1,0
伪类选择器0,0,1,0
ID选择器0,1,0,0
行内样式1,0,0,0
!important无穷大
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>优先级</title>
    <style>
        /* 标签选择器  0,0,0,1 */
        div {
            color: pink;
        }
        /* 类选择器 0,0,1,0*/
        .jianlin {
            color: red;
        }
        /* 伪类选择器 0,0,1,0*/
        :first-child {
            color: black;
        }
        /* 类选择器 0,1,0,0*/
        #rich {
            color: #ffd62f;
        }
        div {
            /*无穷大*/
            color: green!important;
        }

    </style>
</head>
<body>
<!--行内样式 1,0,0,0-->
    <div class="jianlin" id="rich" style="color: skyblue;">王思聪</div>
</body>
</html>

实际使用中选择器是叠加使用的,权重值也能叠加。

div ul li    ---->   0,0,0,3
.nav ul li   ---->   0,0,1,2
a:hover      ---->   0,0,1,1
.nav a       ---->   0,0,1,1
#nav p       ---->   0,1,0,1

权重计算是没有进制的说法,0,0,0,5+0,0,0,5=0,0,0,10。

继承的权重为0
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>继承</title>
    <style>
        div {
            color: red;
        }
        span {
            color: pink;
        }
    </style>
</head>
<body>
    <div>
        <span>继承的权重为0</span>
    </div>
</body>
</html>
练习题
练习1
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>01</title>
    <style>
        /* 0,2,0,0*/
        #father #son {
            color: blue;
        }
        /* 0,1,1,1*/
        #father p.c2 {
            color: black;
        }
        /* 0,0,2,2*/
        div.c1 p.c2 {
            color: red;
        }
        /* 继承权为0*/
        #father {
            color: green !important;
        }
    </style>
</head>
<body>
    <div id="father" class="c1">
        <p id="son" class="c2">
            试问这行字体什么颜色
        </p>
    </div>
</body>
</html>
练习2
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03</title>
    <style>
        /* 0,0,0,2*/
        div p {
            color: red;
        }
        /*继承权重为0*/
        #father {
            color: red;
        }
        /* 0,0,1,1*/
        p.c2 {
            color: blue;
        }
    </style>
</head>
<body>
    <div id="father" class="c1">
        <p class="c2">
            试问这行字体什么颜色
        </p>
    </div>
</body>
</html>
练习3
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03</title>
    <style>
        div div {
            color: blue;
        }
        div {
            color: red;
        }
    </style>
</head>
<body>
    <div>
        <div>
            <div>试问这行字体什么颜色</div>
        </div>
    </div>
</body>
</html>
练习4
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>06</title>
    <style>
        /* 0,0,2,1*/
        .c1 .c2 div {
            color: blue;
        }
        /* 0,1,0,1*/
        div #box3 {
            color: green;
        }
        /* 0,1,0,1*/
        #box1 div {
            color: yellow;
        }
    </style>
</head>
<body>
<div id="box1" class="c1">
    <div id="box2" class="c2">
        <div id="box3" class="c3">文字</div>
    </div>
</div>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值