选择器及优先级

一、选择器

1. 基本选择器

① 元素选择器(标签)

② ID选择器(唯一性 )

③ 类选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>基本选择器</title>
    <style>
        /* 元素选择器 */
        p{
            color:  red;
        }
         /* ID选择器 */
        #poem{
            color: green;       
        }
         /* 类选择器 */
        .line{
            color: blue;       
        }

        /* 字体颜色为绿色,涉及优先级问题 */
    </style>
</head>
<body>
    <p id="poem" class="line">春宵一刻值千金,花有清香月有阴。</p>
</body>
</html>        

2. 复合选择器

① 交集选择器

② 并集选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>复合选择器</title>
    <style>
        /* 交集选择器 */
        p.line{
            font-size:  20px;
        }
         /* 并集选择器 */
        h5,p{
            color: green;       
        }
    </style>
</head>
<body>
    <h5>春宵</h5>
    <p id="poem" class="line">春宵一刻值千金,花有清香月有阴。</p>
    <p>歌管楼台声细细,秋千院落夜沉沉。</p>
</body>
</html> 

3. 关系选择器

① 子元素选择器

② 后代选择器

③ 兄弟选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>关系选择器</title>
    <style>
        /* 子元素选择器 */
        div > span{
            color: red;    /* 只有div下的直接子元素span的字体为红色 */
        }
         /* 后代选择器 */
        div span{
            color: green;   /* span字体都为绿色 */    
        }
         /* 兄弟选择器 */
        p + span{
            color: purple;   /* 标签p的下一个兄弟span元素的字体为紫色 */    
        }
        p ~ span{
            color: blue;   /* 标签p的所有兄弟span元素的字体为蓝色 */    
        }
    </style>
</head>
<body>
    <div>
        <p>春宵</p>
        <p><span></span>苏轼</p>
        <span>春宵一刻值千金,花有清香月有阴。</span>
        <br>
        <span>歌管楼台声细细,秋千院落夜沉沉。</span>
    </div>
</body>
</html> 

4. 属性选择器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性选择器</title>
    <style>
       /*
            [属性名]  选择含有指定属性的元素
            [属性名 = 属性值]  选择含有指定属性和属性值的元素
            [属性名 ^= 属性值]  选择以属性值开头的元素
            [属性名 $= 属性值]  选择以属性值结尾的元素
            [属性名 *= 属性值]  选择含有属性值的元素
       */
       /*
        p[title]{
            color: red;
        }    
        p[title = abc]{
            color: green;
        }    
        p[title ^= abc]{
            color: blue;
        } 
        p[title $= de]{
            color: yellow;
        } 
        p[title *= cd]{
            color: pink;
        } 
       */
    </style>
</head>
<body>
    <div>
        <p title="abc">春宵</p>
        <p title="abcde"><span></span>苏轼</p>
        <p title="cde">春宵一刻值千金,花有清香月有阴。</p>
        <p title="cd">歌管楼台声细细,秋千院落夜沉沉。</p>
    </div>
</body>
</html>     

5. 伪类选择器

<!DOCTYPE html> 
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>伪类选择器</title>
    <style>
       /*
            伪类(不存在的类,特殊的类)
                    - 伪类用来描述一个元素的特殊状态
             伪类的声明
                    - :开头
                    :first-child  第一个子元素
                    :last-child  最后一个子元素
                    :nth-child()  选中第n个子元素    
                            特殊值:
                                  n    n的范围:0~正无穷
                                  2n 或 even   表示选中偶数位的元素          
                                  2n+1 或 odd   表示选中奇数位的元素 
                    - 以上的这些伪类是在所有子元素中进行排序   

                    :first-of-type
                    :last-of-type
                    :nth-of-type()
                    - 用法与上述类似,不同:在同类元素中进行排序                                         
       */
       /*
        ul > li:first-child{
            color: red;     /*ul下的直接子元素中第一个元素不是li,则字体颜色没有发生改变*/
        }
        ul > li:last-child{
            color: red;
        }
        ul > li:nth-child(2){
            color: red;  /* ul直接子元素中,所有子元素的第一个元素为li时,字体颜色为红色 */
        }
        ul > li:nth-of-type(2){
            color: red;  /* ul直接子元素中,同类元素li的第二个li */
        }
       */
    </style>
</head>
<body>
    <ul>
        <span>古诗</span>
        <li>春宵</li>
        <li>苏轼</li>
        <li>春宵一刻值千金,花有清香月有阴。</li>
        <li>歌管楼台声细细,秋千院落夜沉沉。</li>
    </div>
</body>
</html>     

二、伪元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>伪元素</title>
    <style>
       /*
            伪元素:表示页面中一些特殊的并不真实存在的元素(特殊的位置)
             伪元素的声明:
                    - ::开头
             
                    ::first-letter   表示第一个字母
                    ::first-line      表示第一行
                    ::selection     表示选中的内容
                    ::before         元素的开始 
                    ::after            元素的最后
                          - before 和 after 必须结合content属性来使用                        
       */

        p::first-letter{
            font-size: 40px;
        }
       /*
        p::first-line{
            background-color: blue;
        }
       */
        p::selection{
            background-color: yellow;
        }

        h3::before{
            content: '“';
        }

        h3::after{
            content: '”';
        }
    </style>
</head>
<body>
    <div>
        <h3>尘封在沙漏里的友谊</h3>
        <p>曾经我们坚信海誓山bai盟过后沉淀的必定是坚贞不移、此生不离;曾经我们坚信彼此的心圈在一个核里哪怕时光穿梭也毫无芥蒂;曾经你赠我沙漏与我互定永久告诉我亘古不变天荒地老的情谊。那些曾经在我最灿烂的年华里伴我左右。</p> 
         <p>然而,所有的事,由平淡开始,终究归于平淡。如你,亦如我
。那些曾经我们牵手一起走过的小巷如今留与我一人独步;那些曾经我们欢笑的地方如今留与我含泪目睹;那些曾经我们惦念的往昔如今在记忆里残存过渡。只是那些幻影,那么不小心掉进了我的回忆里。</p>
         <p>你说,我温柔得会被蚊子咬死。我说,你的心脆弱得比玻璃易
碎。可是,我们都那么倔强,连性格仿佛都摹刻在一个雕版里,以至于以后的岁月里争吵不断。</p>
         <p>你说,我们上辈子是不是仇人,于是,我们会心地一笑。那么多年过去,那么争吵过来,我却一直未曾告诉过你,我们的情谊,一直在我的心里,占据主体。只是,我们用自己冷漠的心,掘了一条无法跨越的鸿沟。</p>
         <p>这些年来,那么快,不知不觉,过来那么久,我却依旧寻不到当年那个模样的沙漏。你送我的沙漏,如同我们的友谊,无法复制,不可摹刻。</p>
         <p>你说,我的世界关得太紧,让人无法走进。这一句的辛酸被我悄悄藏在了心底。我世界的门一直敞开,而你早已住进了我的心里。只是,你却毫无知觉。</p>
         <p>如今,你的身边是否有知己,代替我陪你走?她知不知道你的倔强?她理解不理解你倔强的外表下柔弱的心?她会不会和你肆无忌惮大笑时安抚你实际悲痛的心伤?我们都要幸福。</p>
    </div>
</body>
</html>   

  2.1  <a>标签的伪类

<!DOCTYPE html> 
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>a元素的伪类</title>
    <style>
       /*
            :link    用来表示没访问过的链接(正常链接)
       */
        a:link{
              color: red;  
        }

       /*
            :visited   用来表示访问过的链接
            由于隐私的原因,所以visited这个伪类只能修改链接颜色
       */
        a:link{
              color: orange;
              /* font-size: 50px; */
        }

       /*
            :hover    用来表示鼠标移入的状态
       */
        a:hover{
              color: purple;
              font-size: 50px;
        }

       /*
            :active    用来表示鼠标点击
       */
        a:active{
              color: yellowgreen;  
        }
    </style>
</head>
<body>
    <a href="http://www.baidu.com">访问过的链接</a>
    <a href="http://www.taobao.com">没访问过的链接</a>
</body>
</html>     

三、选择器的权重(解决样式冲突)

内联样式 1000

 css样式的三种方式:

① 内联样式/行内样式

② 内部样式表

③ 外部样式表

  - 优先选择,理由:加载后可暂时缓存在浏览器里,再次应用可以不再加载,直接使用

id选择器 100 
类和伪类选择器 10 
元素选择器
通配符选择器
继承的样式 没有优先级 

优先级的比较:通过所有选择器的优先级进行相加获得。

优先级计算相同,则使用就近原则

可以在某一个样式后添加 !important ,则此时样式权重最高,甚至超过内联样式。(慎用)

 

 

posted @ 2020-10-29 12:40  娜豆  阅读(251)  评论(0编辑  收藏  举报