CSS进阶-CSS的选择器详细介绍

CSS简介

  • CSS 的全称为:层叠样式表 ( Cascading Style Sheets )
  • CSS 也是一种标记语言,用于给 HTML 结构设置样式,例如:文字大小、颜色、元素宽高等等。
简单理解: CSS 可以美化 HTML , HTML 更漂亮。
核心思想: HTML 搭建结构, CSS 添加样式,实现了:结构与样式的分离。

 CSS的编写位置

行内样式

  • 写在标签的 style 属性中,(又称:内联样式)。
  • 语法:<h1 style="color:red;font-size:60px;">CSS入门学习</h1>

内部样式

  • 写在 html 页面内部,将所有的 CSS 代码提取出来,单独放在 <style> 标签中。
  • 语法:
    <style>
          h1 {
                   color : red ;
                   font-size : 40px ;
                }
    </style>

外部样式

  • 写在单独的 .css 文件中,随后在 HTML 文件中引入使用。
  • 语法:
    • 1. 新建一个扩展名为 .css 的样式文件,把所有 CSS 代码都放入此文件中。
      • h1 {
                    color : red ;
                    font-size : 40px ;
        }
    •  2. HTML 文件中引入 .css 文件。
      • <link rel="stylesheet" href="./xxx.css">

 样式表的优先级

  • 优先级规则:行内样式 > 内部样式 = 外部样式
1. 内部样式、外部样式,这二者的优先级相同,且:后面的 会覆盖 前面的(简记: 后来
者居上
2. 同一个样式表中,优先级也和编写顺序有关,且:后面的 会覆盖 前面的(简记: 后来
者居上 )。

CSS选择器

学习CSS实际上就是学习如何找到一个HTML元素(选择器),并且给HTML元素添加样式

 CSS基本选择器

通配选择器

  • 作用:可以选中所有的 HTML 元素。
  • 语法:

    * {
          属性名 : 属性值 ;
       }

元素选择器

  • 作用:为页面中 某种元素 统一设置样式。
  • 语法:

       标签名 {
             属性名 : 属性值 ;
         }

类选择器

  • 作用:根据元素的 class 值,来选中某些元素。
  • 语法:
       . 类名 {
             属性名 : 属性值 ;
        }

id 选择器

  • 作用:根据元素的 id 属性值,来精准的选中某个元素。
  • 语法:
    #id {
           属性名 : 属性值 ;
    }

基本选择器总结

基本选择器
特点
用法
通配选择器
选中所有标签,一般用于清除样式。
* {color:red}
元素选择器
选中所有同种标签,但是不能差异化选择。
h1 {color:red}
类选择器
选中所有特定类名( class 值)的元素 —— 使用频率很高。
.say{color:red}
ID 选择器
选中特定 id 值的那个元素(唯一的)。
#earthy {color:red}

CSS复合选择器

CSS选择器整体分类两大类: 基本选择器和符合选择器
1. 复合选择器建立在基本选择器之上,由多个基础选择器,通过不同的方式组合而成。
2. 复合选择器可以在复杂结构中,快速而准确的选中元素。

 交集选择器

  • 作用:选中同时符合多个条件的元素。

交集有并且的含义(通俗理解:............ 的意思),例如:年轻长得高。

  • 语法:选择器1选择器2选择器3...选择器n {}
注意:
        1. 有标签名,标签名必须写在前面。
        2. id 选择器、通配选择器,理论上可以作为交集的条件,但实际应用中几乎不用 —— 因为没有意义。
        3. 交集选择器中 不可能 出现 两个元素选择器 ,因为一个元素,不可能即是 p 元素又是 span 元 素。
        4. 用的最多的交集选择器是:元素选择器配合类名选择器,例如: p.beauty

 并集选择器

  • 作用:选中多个选择器对应的元素,又称:分组选择器
所谓并集就是 或者 的含义(通俗理解: 要么 ...... 要么 ...... 的意思),例如:请我喝杯饮料
或者 请我吃顿饭
  • 语法:选择器1, 选择器2, 选择器3, ... 选择器n {}
多个选择器通过 , 连接,此处 , 的含义就是:
注意:
        1. 并集选择器,我们一般竖着写。
        2. 任何形式的选择器,都可以作为并集选择器的一部分 。
        3. 并集选择器,通常用于集体声明,可以缩小样式表体积。

 HTML元素间的关系

分为:父元素、子元素、祖先元素、后代元素、兄弟元素

  •  父元素:直接包裹某个元素的元素,就是该元素的父元素。
  • 子元素:被父元素 直接 包含的元素(简记:儿子元素)。
  • 祖先元素:父亲的父亲 ...... ,一直往外找,都是祖先。(父元素也属于是子元素的祖先元素)
  •  后代元素:儿子的儿子......,一直往里找,都是后代。
  • 兄弟元素:具有相同父元素的元素,互为兄弟元素。

后代选择器

  • 作用:选中指定元素中,符合要求的后代元素。
  • 语法:选择器1 选择器2 选择器3 ...... 选择器n {} (先写祖先,再写后代)
选择器之间,用空格隔开,空格可以理解为: " xxx 中的 " ,其实就是后代的意思。
选择器 1234....n ,可以是我们之前学的任何一种选择器。
注意:
        1. 后代选择器,最终选择的是后代,不选中祖先。
        2. 儿子、孙子、重孙子,都算是后代。
        3. 结构一定要符合之前讲的 HTML 嵌套要求,例如:不能 p 中写 h1 ~ h6

 子代选择器

  • 作用:选中指定元素中,符合要求的元素(儿子元素)。(先写父,再写子)

子代选择器又称:子元素选择器、子选择器。

  • 语法:选择器1 > 选择器2 > 选择器3 > ...... 选择器n {}
注意:
        1. 子代选择器,最终选择的是子代,不是父级。
        2. 子、孙子、重孙子、重重孙子 ...... 统称后代! 就是指 儿子

 兄弟选择器

  • 相邻兄弟选择器:
    • 作用:选中指定元素后,符合条件的相邻兄弟元素。
    • 所谓相邻,就是紧挨着他的下一个,简记:睡在我下铺的兄弟。
    • 语法: 选择器1+选择器2 {} 
  • 通用兄弟选择器:
    • 作用:选中指定元素后,符合条件的所有兄弟元素。(简记:睡在我下铺的所有兄弟)
    • 语法: 选择器1~选择器2 {}

注意:两种兄弟选择器,选择的是下面的兄弟。

 属性选择器

  • 作用:选中属性值符合一定要求的元素。
  • 语法:

1. [属性名] 选中具有某个属性的元素。

2. [属性名=""] 选中包含某个属性,且属性值等于指定值的元素。

3. [属性名^=""] 选中包含某个属性,且属性值以指定的值开头的元素。

4. [属性名$=""] 选中包含某个属性,且属性值以指定的值结尾的元素。

5. [ 属性名 *=“ ”] 选择包含某个属性,属性值 包含 指定值的元素。

伪类选择器

  • 作用:选中特殊状态的元素。
如何理解 ” ? — 虚假的,不是真的。
如何理解 伪类 像类 ( class ) ,但不是类,是元素的一种特殊状态。
常用的伪类选择器:

一、动态伪类:

1. :link 超链接 未被访问 的状态。
2. :visited 超链接 访问过 的状态。
3. :hover 鼠标 悬停 在元素上的状态。
4. :active 元素 激活 的状态。
什么是激活? —— 按下鼠标不松开。
注意点:遵循 LVHA 的顺序,即: link visited hover active
5. :focus 获取焦点的元素。
表单类元素才能使用 :focus 伪类。
当用户:点击元素、触摸元素、或通过键盘的 tab 键等方式,选择元素时,就是获
得焦点。

二、结构伪类:

常用的:
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
关于 n 的值:
1. 0 不写 :什么都选不中 —— 几乎不用。
2. n :选中所有子元素 —— 几乎不用。
3. 1~ 正无穷的整数 :选中对应序号的子元素。
4. 2n even :选中序号为偶数的子元素。
5. 2n+1 odd :选中序号为奇数的子元素。
6. - n+3 :选中的是前 3 个。

了解即可: 

1. :nth - last - child(n) 所有兄弟元素中的 倒数第 n
2. :nth - last - of - type(n) 所有 同类型 兄弟元素中的 倒数第 n
3. :only - child 选择没有兄弟的元素(独生子女)。
4. :only - of - type 选择没有 同类型 兄弟的元素。
5. :root 根元素。
6. :empty 内容为空元素(空格也算内容)。

三、否定伪类:

:not( 选择器 ) 排除满足括号中条件的元素。

四、UI伪类:

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

五、目标伪类

:target 选中锚点指向的元素。

六、语言伪类

:lang() 根据指定的语言选择元素(本质是看 lang 属性的值)。

 伪元素选择器

  • 作用:选中元素中的一些特殊位置。
  • 常用伪元素:
    • ::first-letter 选中元素中的第一个文字
    • ::first-line 选中元素中的第一行文字
    • ::selection 选中被鼠标选中的内容。
    • ::placeholder 选中输入框的提示文字
    • ::before 在元素最开始的位置,创建一个子元素(必须用 content 属性指定内容)。
    • ::after 在元素最后的位置,创建一个子元素(必须用 content 属性指定内容)。

选择器的优先级(权重)

通过 不同的选择器 ,选中 相同的元素 ,并且为 相同的样式名 设置 不同的值 时,就发生了样式的冲突。
到底应用哪个样式,此时就需要看 优先级 了。
  • 简单描述:
行内样式 > ID 选择器 > 类选择器 > 元素选择器 > 通配选择器
  •  详细描述:
    • 计算方式:每个选择器,都可计算出一组权重,格式为: (a,b,c)
a : ID 选择器的个数。
b : 类、伪类、属性 选择器的个数。
c : 元素、伪元素 选择器的个数。
  • 比较规则:按照从左到右的顺序,依次比较大小,当前位胜出后,后面的不再对比,
    • 例如:
(1,0,0) > (0,2,2)
(1,1,0) > (1,0,3)
(1,1,3) > (1,1,2)
  •  特殊规则:
    • ​​​​​​​行内样式权重大于所有选择器
    • !important 的权重,大于 行内样式 ,大于 所有选择器 权重最高!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值