zoukankan      html  css  js  c++  java
  • (7)高级选择器 + 优先级

    高级选择器

    优先级:

    1、最大的特点就是个数多的优先级高,个数决定优先级

    2、高级选择器优先级与类别无关(后代、子代、兄弟、相邻等都是同等优先级的,谁在上面谁的优先级高)

    3、id无限大于class标签无限大于标签

    4、上方结果之后优先级还一致,和顺序有关

    1、群组选择器

    div,p,h1{
    color: hotpink;
    font-size: 30px;
    }

    2、后代选择器(使用率最高),有两种写法 空格 和 >

    空格写法

    .sup .sub{
    color: darkolivegreen;
    }

    PS:.sup可以为.sub的父亲,也可以为父辈

    >号写法

    .sup > .sub{}

    PS:.sup只能为.sub的父亲

    3、兄弟选择器,有两种写法 ~ 和 +

    ~ 写法

    .div1 ~ .div2{
    }

    PS:.div2在.div1下的兄弟,.div1是修饰词,.div1与.div2之间可以有其他兄弟,可以直接定位到其他兄弟

    +写法

    .div1 + .div2{}

    PS:.div2在.div1下的兄弟,.div1是修饰词,.div1与.div2之间不可以有其他兄弟,可以直接定位到其他兄弟

    4、交叉选择器

    h2.hd{
    color: firebrick;
    }

    PS:是h2标签且有一个class名为hd

    5、多类名选择器

    .h.h61{
    color: slateblue;
    }

    PS:有一个标签有多个类名

    高级选择器实例

    需求:要让三个标签(div p h1)的字体颜色同时为红色

    思路:可以使用类标签解决,类名唯一可以精确,类名为多可以范围修改,但是用类名来做有点大题小做,所以使用群组选择器

    群组选择器

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>高级选择器</title>
    <style>
    /*群组选择器*/
    /*使用群组选择器批量修改标签字体的颜色*/
    div,p,h1{
    color: hotpink;
    font-size: 30px;
    }

    /*这里没有设置,采用默认值*/
    i{
    color: inherit;
    }
    </style>
    </head>
    <body>
    <div>123</div>
    <p>456</p>
    <h1>789</h1>

    <!--这里div标签的字体颜色和上面的群组字体颜色一样,这是因为i标签有一个默认值inherit叫继承,继承样式找父级的,因为上面群组选择器里面设置了div的颜色,所以如果不单独给i设置字体颜色,则继承父级的参数-->
    <div class="box1">
    <i>box1</i>
    </div>
    <div class="box2">
    <i>box2</i>
    </div>
    </body>
    </html>

    需求:改变父标签(div)下的单个子标签(i)字体的颜色

    后代选择器

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>高级选择器</title>
    <style>
    /*后代选择器*/
    /*控制一个有父级的子级参数*/
    /*.box1就是修饰词,修饰词必须是父级,用来修饰下面的子级,修饰词可以是类名、可以是id名*/
    /*用大于号链接只表示父子关系,#box1 > i可匹配,body>i不能匹配*/
    .box1 i{
    color: darkolivegreen;
    }
    </style>
    </head>
    <body>
    <div>123</div>
    <p>456</p>
    <h1>789</h1>

    <div class="box1">
    <i>box1</i>
    </div>
    <div class="box2">
    <i>box2</i>
    </div>
    </body>
    </html>

    需求:有两个不同的列表标签,但是两个标签下有相同的名字列名字,需要修改一个列表标签下的单个列名字体的颜色,不影响另一个相同名字的列名字体颜色

    兄弟选择器

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>高级选择器</title>
    <style>
    /*兄弟选择器,用 ~ 表示,也可以用+代表相邻(用+如果不是兄弟则会不生效),兄弟一定是相邻的,但是相邻的不一定是兄弟*/
    h3 ~ .li-3{
    color: orange;
    }
    </style>
    </head>
    <body>
    <div>123</div>
    <p>456</p>
    <h1>789</h1>

    <div class="box1">
    <i>box1</i>
    </div>
    <div class="box2">
    <i>box2</i>
    </div>
    <ul>
    <!--这个列表的父级是h3-->
    <h3></h3>
    <li class="li-1">li-1</li>
    <li class="li-2">li-2</li>
    <li class="li-3">li-3</li>
    </ul>
    <ul>
    <!--这个列表的父级是ul-->
    <li class="li-1">li-1</li>
    <li class="li-2">li-2</li>
    <li class="li-3">li-3</li>
    </ul>
    </body>
    </html>

    PS:要使用兄弟选择器区分,必须两个列表的父级有所区别,否则无法区分

    需求:相同的类名,如何区分单个设置字体颜色

    交叉选择器

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>高级选择器</title>
    <style>
    /*交叉选择器,用写在一起作为连接*/
    h2.hd{
    color: firebrick;
    }
    </style>
    </head>
    <body>
    <div>123</div>
    <p>456</p>
    <h1>789</h1>

    <div class="box1">
    <i>box1</i>
    </div>
    <div class="box2">
    <i>box2</i>
    </div>
    <ul>
    <!--这个列表的父级是h3-->
    <h3></h3>
    <li class="li-1">li-1</li>
    <li class="li-2">li-2</li>
    <li class="li-3">li-3</li>
    </ul>
    <ul>
    <!--这个列表的父级是ul-->
    <li class="li-1">li-1</li>
    <li class="li-2">li-2</li>
    <li class="li-3">li-3</li>
    </ul>

    <!--这里使用交叉选择器就可以控制改变一个h2的参数-->
    <h2 class="hd">标题</h2>
    <h4 class="hd">标题</h4>
    <h2>标题</h2>

    <h6 class="h">标题1</h6>
    <h6 class="h">标题2</h6>
    </body>
    </html>

    需求:两个相同的标签名,类名也相同控制修改其中一个标签的字体颜色

    多类名选择器

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>高级选择器</title>

    <style>
    /*多类名选择器,由交叉选择器演变而来*/
    .h.h61{
    color: slateblue;
    }
    </style>
    </head>
    <body>
    <div>123</div>
    <p>456</p>
    <h1>789</h1>

    <div class="box1">
    <i>box1</i>
    </div>
    <div class="box2">
    <i>box2</i>
    </div>
    <ul>
    <!--这个列表的父级是h3-->
    <h3></h3>
    <li class="li-1">li-1</li>
    <li class="li-2">li-2</li>
    <li class="li-3">li-3</li>
    </ul>
    <ul>
    <!--这个列表的父级是ul-->
    <li class="li-1">li-1</li>
    <li class="li-2">li-2</li>
    <li class="li-3">li-3</li>
    </ul>

    <h2 class="hd">标题</h2>
    <h4 class="hd">标题</h4>
    <h2>标题</h2>

    <!--这里要解决两个相同的标签名,类名也相同控制修改其中一个标签的字体颜色,就要给其中一个起多类名即可解决-->
    <!--class里面第一个h叫控制样式,h61叫控制运行-->
    <h6 class="h h61">标题h6-1</h6>
    <h6 class="h">标题h6-2</h6>
    </body>
    </html>

    高级选择器优先级实例

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>高级选择器优先级</title>
    <style>
    div{
    font-size: 100px;
    color: aqua;
    }

    /*这里个数相同,谁在最上面谁的优先级最高*/
    div div{
    color: slateblue;
    }

    div > div{
    color: firebrick;
    }

    div + div{
    color: yellowgreen;
    }

    /*相同类型下,最终的优先级还是取决于个数*/
    .d2{
    color: blue;
    }

    div .d2{
    color: darkmagenta;
    }

    /*这里可以看到id优先级最高*/
    #dd{
    color: forestgreen;
    }
    </style>
    </head>
    <body>
    <div class="d1">
    <div>
    <div class="d2" id="dd">查看优先级</div>
    </div>
    </div>
    </body>
    </html>

    123123

  • 相关阅读:
    CodeForces 834C
    HDU 6048
    HDU 6052
    HDU 6036
    HDU 6042
    HDU 2614 Beat(DFS)
    UESTC 1272 Final Pan's prime numbers(乱搞)
    HDU 2064 汉诺塔III(递归)
    HDU 2102 A计划(DFS)
    HDU 1069 I Think I Need a Houseboat(模拟)
  • 原文地址:https://www.cnblogs.com/shizhengquan/p/10334758.html
Copyright © 2011-2022 走看看