前端:CSS相关—选择器部分

164 阅读5分钟

CSS中的选择器有哪些?

1.元素选择器

 元素选择器:根据标签名来选中指定元素
                语法:标签名{} 
                例子:p{},h1{}
 缺点:会选中所有的标签          
例:
    <p>少小离家老大回</p>

image.png

2.id选择器

   作用:根据元素的id属性值选中一个元素 只能选中一个元素
          语法:#id的属性
          例子: #box(),#red()
    缺点:只能给一个元素设置样式      
例:
    <p id="red">金樽清酒斗十千</p>

image.png

3.类选择器

    作用:根据元素的class属性值选中一组元素
                语法:.class 属性值
                例子:.yu
     优点:可以重复使用
     
例:
     <p class="yu">玉盘珍羞直万钱</p>
     <p class="yu">秋水共长天一色</p>

image.png

4.通配选择器

     作用:选中页面中的所有元素
            语法:*  
            
例:
    <h1>我是标题</h1>
    <p>少小离家老大回</p>
    <p>乡音未改鬓毛衰</p>
    <p id="red">金樽清酒斗十千</p>
    <p class="yu">玉盘珍羞直万钱</p>
    <p class="yu">秋水共长天一色</p>
    <p>落霞与孤鸿齐飞</p>

image.png

5.复合选择器

1.交集选择器
        作用:同时满足两个条件  相当于或的运算
        语法:元素选择器.类选择器{}
        例子:div.red{}  
     
例:
    <div class="red">我是div</div>
    <p class="red">我是P</p>

image.png

2.并集选择器(分组选择器)
           作用:同时选择多个选择器对应的元素 相当与的运算
           语法:选择器1,选择器2,选择器3选择器{}
           例子:h1,span{}
       注:每个选择器中间需要用逗号隔开!             
例:
    <div>今天下雪</div>
    <h1>今天天气不好</h1>
    <p class="bule">我是P</p>

image.png

6.关系选择器

每个选择器中间的关系

    父元素:直接包含子元素的元素
    子元素:直接被父元素包含的元素
    祖先元素:直接或间接包含后代元素的元素
    注:一个元素的父元素也是它的祖先元素
    后代元素:直接或间接被祖先元素包含的元素子元素也是后代元素
    兄弟元素:拥有想同父元素的元素
1.父子选择器
            作用:选中指定元素中的指定子元素
            语法: 父元素 > 子元素
            例子:div > span{}
例:
      <div class="box">我是div.
        <p>我是div中的p
            <span>我是P元素中的span</span>
        </p>
        <span>我是divsapn元素</span>
    </div>

image.png

2.后代元素选择器
        作用:选中指定元素内的指定后代元素
              语法:祖先(空格)后代

image.png

此时会直接选中div下的span元素 image.png

3.兄弟元素选择器
        1.选择下一个兄弟元素
        语法:前一个 + 下一个
        2.选择下面所有的兄弟元素
        语法:前一个 ~ 下一个

image.png image.png

注:选中的都是下面的元素 如果在上面加一个span元素他不会被选中

7.属性选择器

        ```
        <p title="abc">少小离家老大回</p>
            <p title="abcde">乡音未改鬓毛衰</p>
            <p title="hello">金樽清酒斗十千</p>
            <p>玉盘珍羞直万钱</p>
            <p>秋水共长天一色</p>
            <p>落霞与孤鸿齐飞</p>
        ```
属性名选择器
       1.[属性名] 选择含有指定属性的元素
       2.[属性名 = 属性值] 选择含有指定属性和属性值的元素
       3.[属性名 ^= 属性值] 选择属性值以指定值开头的元素
       4.[属性名 $= 属性值] 选择属性值以指定结尾的元素
       5.[属性名 *= 属性值] 选择属性值中含有某值的元素的元素

image.png image.png image.png image.png image.png

8.伪类选择器

        ```
         例:
             <ul>
                   <li>第一个</li>
                   <li>第二个</li>
                   <li>第三个</li>
                   <li>第四个</li>
                   <li>第五个</li>
             </ul>
        ```
伪类选择器
    伪类:(不存在的类,特殊的类)用来描述一个元素的特殊状态
                    特点:一般情况下都是使用:开头
                      :first-child 第一个子元素
                      :last-child 最后一个子元素
                      :nth-child(n) 第N个子元素  
                          特殊位:第n个  n的范围0到正无穷
                                 2n或even  偶数位的元素
                                 2n+1或odd 奇数位的元素
              否定伪类 :not(:nth-child(n))  除了第几个           

image.png image.png image.png image.png

9.伪元素选择器

div> Hello world</div>
    <p>
        Lorem ipsum dolor sit, amet consectetur adipisicing elit. Iure qui ab porro eveniet error,
         tempore necessitatibus, impedit tempora fuga autem id laudantium distinctio, unde animi odio expedita labore aliquam quo?
    </p>
伪元素选择器
        表示页面中一些特殊的并不真实存在的元素(特殊的位置) 
         ::开头
         ::first-letter 表示第一个字母
         ::first-line 表示第一行
         ::selection 表示选中的内容

image.png

注:这两个需要结合一个content属性

               ::before 表示元素的起始开始位置
               ::after 表示元素的最后

image.png

10.选择器中的权重

    `内联 > ID选择器 > 类选择器 > 标签(元素)选择器 `

11.CSS样式优先级计算法

    三条标准:
        1.就近原则,后加样式优于前面的样式
        2.内嵌样式>内联样式>外联样式
        3.!Important 大于一切样式
    权重计算规则:
        内联样式:style=""         -----权值1000
        id选择器:  #id            -----权值100
        类/伪类/属性选择器         -----权值10
        类型选择器和伪元素 :div/p  ------权值1
        通配选择器  *             -------权值0
        注:继承的样式没有权值 

12.样式的继承

在css中,继承是指父元素设置的一些属性,后代元素自动拥有这些属性,继承只会发生在后代元素上

13.继承的分类

    1.字体系列样式
    2.文本系列属性
    3.元素可见性
    4.表格布局样式
    5.列表属性
    6.列表属性
    7.引用
    8.光标属性

注: 1.a标签的字体颜色不能被继承 2.h1-h6标签字体的大小也是不能被继承

无继承属性:
    display
    文本属性  如:text-secoration
    盒子模型属性 如:宽度  高度
    背景属性  如;背景图片 
    定位属性  如:浮动
    生成代码内容属性 如:content 
    轮廓样式属性  如:outline-style
    页面样式属性  如:size page-break-before
可继承样式: 
       font-size/fon-family/color   [ul/li/ol/dl/dd/dt]   
不可继承样式:
        width/height/margin/padding/border

14.浏览器是如何解析选择器的?

样式系统优先从内联选择器开始匹配,通过权重,先找祖先元素,再一级一级查下去,
如果匹配则使用样式,如果不匹配则放弃

15.::after/:after与::before/:before的区别?

    1.单冒号用于css3伪类  双冒号用于css伪元素
    2.::before就是以一个子元素的存在,定义在元素主体内容之前的一个伪元素,并不存在DOM中,只存在页面中