css伪类选择器第二章

一、css伪类选择器

选中特殊状态元素,这个状态不是我们自己手动定义的 css或者id等等,是我们看不到的。一般使用格式为 元素:(冒号)属性 方式

如何理解“伪” ? — 虚假的,不是真的。
如何理解“伪类”? — 像类( class ),但不是类,是元素的一种特殊状态。

1.1 伪类基本概念

  • 代码示例 a 标签
DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>伪类基本概念title>
  <style>
    /* 选中的是 没有访问过的a 元素的颜色 */
     a:link {
      color: green;
     }
     /* 访问过的 a 元素展示的颜色 */
     a:visited {
        color: gray
     }
  style>
head>
<body>
  <a href="https://www.baidu.com">去百度a>
  <a href="https://www.jd.com">去京东a>
body>
html>

1.2 动态伪类 lvha

  1. :link 超链接未被访问的状态。

  2. :visited 超链接访问过的状态。

  3. :hover 鼠标悬停在元素上的状态。

  4. :active 元素激活的状态。

什么是激活?—— 按下鼠标不松开。
注意点:遵循 LVHA 的顺序,即: link 、 visited 、 hover 、 active 。

  1. :focus 获取焦点的元素

    表单类元素才能使用 :focus 伪类。
    当用户:点击元素、触摸元素、或通过键盘的 “ tab ” 键等方式,选择元素时,就是获
    得焦点。

  • 示例



  
  
  动态伪类
  


  去百度
  去京东
  天天
  




1.3 结构伪类

  1. :first-child 所有兄弟元素中的第一个。
  2. :last-child 所有兄弟元素中的最后一个。
  3. :nth-child(n) 所有兄弟元素中的第 n 个。
  4. :first-of-type 所有同类型兄弟元素中的第一个。
  5. :last-of-type 所有同类型兄弟元素中的最后一个。
  6. :nth-of-type(n) 所有同类型兄弟元素中的 第n个 。

1.3.1 :first-child

 


   

张三:98分

李四:88分

王五:78分

赵六:58分

/* 这种谁都选不中 在div所有的儿子去找,先看 div 的第一个儿子,然后再判断第一个儿子是不是p */ div>p:first-child { color: red; }
张三:98分

李四:88分

王五:78分

赵六:58分

/* 谁都选不中 找到了第一个元素为 marquee 所以不是p */ /* div>p:first-child { color: red; } */

张三:98分

李四:88分

王五:78分

赵六:58分

/* 这种可以选中 div 下面所有的 p 元素*/ div p:first-child { color: red; }

张三:98分

李四:88分

王五:78分

赵六:58分

/* 选中的是div后代p元素,且p父级是谁都无所谓,单p必须要是第一个儿子 */ /* div p:first-child { color: red; } */ /* 选中的是p元素,且p的父亲是谁无所谓,只要是第一个 按照所有的兄弟排序 */ p:first-child { color: red; }

1.3.2 :last-child 所有兄弟元素中的最后一个




  
  
  结构伪类2
  


    

张三:98分

李四:88分

王五:78分

赵六:68分

老七:61分

老八:40分

1.3.3 :nth-child() 选中第n个儿子元素

div>p:nth-child(n) {

​ color: red;

} 全部选中

  • n 为0 开始。可以写计算

  • 基数 : 公式 2n +1 ; 单词 odd

  • 偶数: 公式 2n ; 单词 even

  • 前n个选中: -n+5 前5个选中

  • 公式实际为: 0n+ 数字

  • n 的取值范围

    1. 0 或 不写 :什么都选不中 —— 几乎不用。
    2. n :选中所有子元素 —— 几乎不用。
    3. 1~正无穷的整数 :选中对应序号的子元素。
    4. 2n 或 even :选中序号为偶数的子元素。
    5. 2n+1 或 odd :选中序号为奇数的子元素。
    6. -n+3 :选中的是前 3 个。
  • 代码

    
    
    
      
      
      结构伪类2
      
    
    
        
    
        

    第1个

    第2个

    第3个

    第4个

    第5个

    第6个

    第7个

    第8个

    第9个

    第10个

1.3.4 :first-of-type 按照同类型计算

/* 选中的是div最后一个儿子 p元素 (所有同同类型计算) 结构三*/

div>p:lfirst-of-type {

​ color: red;

}

  • 实列

    
        
    测试

    张三:98分

    李四:88分

    测试--

    王五:78分

    赵六:58分

1.3.5 :last-of-type

/* 选中的是div最后一个儿子 p元素 (所有同同类型计算) 结构三*/

div>p:last-of-type {

​ color: red;

}

  • 实列

    
测试

张三:98分

李四:88分

测试--

王五:78分

赵六:58分

1.3.6 nth-of-type(3) 同类型第三个

/* 选中的是div最后一个儿子 第n个儿子 (所有同同类型计算) 结构三*/

div>p:nth-of-type(3) {

color: red;

}

  • 实列

    
    
    
      
      
      结构伪类2
      
    
    
        
    
        
    
        
        
    测试

    张三:98分

    李四:88分

    测试--

    王五:78分

    赵六:58分

1.4 不常用的结构伪类

  1. :nth-last-child(n) 所有兄弟元素中的倒数第 n 个。

  2. :nth-last-of-type(n) 所有同类型兄弟元素中的 倒数第n个 。

  3. :only-child 选择没有兄弟的元素(独生子女)。

  4. :only-of-type 选择没有同类型兄弟的元素。

  5. :root 根元素。

  6. :empty 内容为空元素(空格也算内容)。

1.4.1 :nth-last-child(n)

倒序:所有的兄弟节点,然后排序 第 n个

  • 实列

    
    
     

    张三

    李四

    王五

    赵六

1.4.2 :nth-last-of-type 所有同类型的元素

选择的是所有的同类型兄弟

  • 实列

     /* 所有同类型的p元素,最后一个节点 */
     div>p:nth-last-of-type(1) {
        color:red
     }
    
       
       

    张三

    李四

    王五

    赵六

    十五

1.4.3 :only-child 仅仅一个节点

某个节点的独生子,唯独一个,超过一个的话就不行

  • 实列

    span:only-child {
      color: red;
    }
         
      
       测试1
       
    测试2

1.4.4 :only-of-type 同类型仅仅一个

同类型只有一个元素,超过一个就不算

  • 示列

     /* 同类型只有一个元素,超过一个就不算 */
         span:only-of-type {
             color: red;
         }
         p:only-of-type {
            color:red;
         }
         
     
       测试1
       
    测试2

    李四

1.4.5 :root 代表ode是根元素,也就是html

实际上设置 :root 跟直接设置 html 是一样的效果

  • 示列

    :root {
           background: red;
         }
    // 给整个 html 设置了红色的背景色 
    

1.4.6 :empty 空元素

标签里面不能有任何东西,空格也不行,必须设置宽高才能看得出来结果

  • 示列

    div:empty {
           width: 100px;
           height: 100px;
           background-color: red;
         }
         
    

1.5、:not 否定伪类

取反的意思,在选择器后加上 xx:not() 里面继续可以写选择器

  • 示列

    /* 选定所有的p标签排除有class属性为speName 的元素 */
    div>p:not(.speName) {
      color: red;
    }
    
     /* 排除第一个元素p标签 */
          div>p:not(:first-child) {
              color: red;
          }
    
    

    张三

    李四

    王五

    晓东

    大东

  • 混合使用

     /* 排除属性为 title="name"*/
     div>p:not([title="name"]) {
     color: red;
     }
      

    张三

    李四

    王五

    晓东

    大东

二、ui 伪类

针对form表单里面的input元素的

  1. :checked 被选中的复选框或单选按钮。
  2. :enable 可用的表单元素(没有 disabled 属性)。
  3. :disabled 不可用的表单元素(有 disabled 属性)。

2.1 input中的checkbox属性

  • 示列

  • 默认的颜色不能更改

      /* 当选中的时候样式变大,取消的时候变小了  */
          input:checked {
              width: 100px;
              height: 100px;
          }
     input:checked {
              width: 100px;
              height: 100px;
          }
    
     同意协议
     

2.2 :disabled 表单禁用状态

选中的是input中有 disabled属性

  • 示列

     /* 表单上有属性 disabled 属性的会禁用 */
     input:disabled {
     color: blue;
     }
     
      
    

2.3 :enable 表单激活

实际上就是input上面没有 disabled 就生效

  • 示列

      /* 表单上没有有属性 disabled 会生效 */
          input:enabled {
             background-color: green;
          }
    
    

三、目标伪类 :target

超链接,瞄点使用,需求背景,当点击a标签到指定的div后,对应的div颜色改变

四、语言伪类 lang属性

在元素上面加了 lang 后的标签使用就会选中

4.1 :lang(en)

当标签有 en属性的被选中

/* 示列一  就算里面写的中文也会选中,不管内容*/
:lang(en) {
   color: gold;
}
      
你家
my home

其他家

4.2 :lang(zh-Cn) 我再其他标签并没有加

如果标签没写 lang=xx 那么默认继承,html上面 所写的属性

  


     
你家
my home

其他家

你可能感兴趣的:(前端基础,css,前端)