CSS 选择器 selector

  • 元素选择器 (type selectors):div {}
  • 通用选择器 (universal selector):* {}
  • id 选择器 (id selectors):#xxx {}
  • 类选择器 (class selectors):.xxx {}
    • 【练习】类选择器实现多种按钮样式
  • 属性选择器 (attribute selectors)
    • [attr] - 拥有 attr 属性的元素
    • [attr=val] - attr 属性等于 val 的元素
    • [attr~=val] - attr 属性包含 val 的元素(空格分割)
    • [attr|=val] - attr 属性等于 val 或者以 'val-' 开头
    • [attr^=val] - attr 属性以 val 开头的元素
    • [attr$=val] - attr 属性以 val 结尾的元素
    • [attr*=val] - attr 属性包含 val 的元素(无需空格分割)
  • 后代选择器 (descendant combinator):div span {}
  • 子选择器 (child combinators):div>span {}
  • 相邻兄弟选择器 (adjacent sibling combinator):div+p
  • 全体兄弟选择器 (general sibling combinator):div~p
  • 选择器组
    • 交集选择器:div.one {}
    • 并集选择器:div, .one, [title="test"] {}
  • 【练习】让所有文本输入框的文字颜色都为红色
  • 【练习】找到内容为 em2、em3、em4 的 em 元素

博文集合:【重识 HTML + CSS】知识点目录

本章 Gitee 代码:https://gitee.com/szluyu99/html_css_note/tree/master/day04

CSS 选择器的作用:按照一定的规则选出符合条件的元素,为之添加 CSS 样式

CSS 选择器的分类:

  • 通用选择器 (universal selector)
  • 元素选择器 (type selectors) / 标签选择器
  • 类选择器 (class selectors)
  • id 选择器 (id selectors)
  • 属性选择器 (attribute selectors)
  • 组合 (combinators)
  • 伪类 (pseudo-classes)
  • 伪元素 (pseudo-elements)

元素选择器 (type selectors):div {}

选中所有的 div 并设置前景色为红色:

通用选择器 (universal selector):* {}

给所有的元素设置前景色为红色:

一般用来给所有元素作一些通用性的设置:

  • 比如内边距、外边距

效率比较低,尽量不要使用

id 选择器 (id selectors):#xxx {}

将 id 值为 one 的元素设置前景色为红色:

id 选择器的注意点:

  • 一个 HTML 文档里面的 id 值是唯一的,不能重复
  • id 值如果由多个单词组成,单词之间可以用中划线-、下划线_连接,也可以使用驼峰标识
  • 最好不要用标签名作为 id 值

中划线 - 又叫连字符 (hyphen),推荐使用

类选择器 (class selectors):.xxx {}

将 class 值为 one 的元素设置前景色为红色:

class 选择器的注意点:

  • 一个元素可以有多个 class 值,每个 class 之间用空格隔开
  • class 值如果由多个单词组成,单词之间可以用中划线-、下划线_连接,也可以使用驼峰标识
  • 最好不要用标签名作为 class 值

【练习】类选择器实现多种按钮样式

在开发过程中,类选择器可以认为是最常用最灵活的选择器

  • 一般会将一些公共样式抽取出来,写到某个类选择器中;想要使用这些样式,加上类名即可


Gitee 代码:class 选择器 - 练习

属性选择器 (attribute selectors)

[attr] - 拥有 attr 属性的元素

拥有 title 属性的元素,设置前景色为红色:

[attr=val] - attr 属性等于 val 的元素

title 属性值恰好等于 one 的元素,设置前景色为红色:

#test[id="test"] 看起来好像一样,其实本质不一样,参考

[attr~=val] - attr 属性包含 val 的元素(空格分割)

title 属性值包含单词 one 的元素(单词 one 与其他单词之间必须用空格隔开):

以下 2 个选择器效果一致

[attr|=val] - attr 属性等于 val 或者以 ‘val-’ 开头

title 属性值恰好等于 one 或者 以单词 one 开头且后面紧跟着连字符 - 的元素:

这个用法很奇特,一般都是用在 lang 属性上:

[attr^=val] - attr 属性以 val 开头的元素

title 属性值以单词 one 开头的元素:

[attr$=val] - attr 属性以 val 结尾的元素

title 属性值以单词 one 结尾的元素:

[attr*=val] - attr 属性包含 val 的元素(无需空格分割)

title 属性值包含单词 one 的元素(无需以空格作为分割):

后代选择器 (descendant combinator):div span {}

div 元素里面的 span 元素(包括直接、间接子元素):

子选择器 (child combinators):div>span {}

div 元素里面的 直接 span 子元素(不包括间接子元素):

建议采用以下写法:> 两边没有空格

div>span {color: red;
}

相邻兄弟选择器 (adjacent sibling combinator):div+p

div 元素后面紧挨着的 p 元素(且 div、p 元素必须是兄弟关系):

全体兄弟选择器 (general sibling combinator):div~p

div 元素后面的 p 元素(且 div、p 元素必须是兄弟关系)

选择器组

交集选择器:div.one {}

同时符合 2 个条件的元素:div 元素、class 值有 one

同时符合 3 个条件的元素:div 元素、class 值有 one、title 属性值等于 test

并集选择器:div, .one, [title=“test”] {}

所有的 div 元素 + 所有 class 值有 one 的元素 + 所有 title 属性值等于 test 的元素:

上面的写法等价于将每个选择器单独写出来:

【练习】让所有文本输入框的文字颜色都为红色

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><title>07-选择器练习_01</title>
</head>
<body><input type="text"><input type="text"><input type="text"><input type="text"><input type="button"><input type="checkbox"><input type="color"><textarea></textarea>
</body>
</html>

答案:先找到 input 输入框,满足 [type="text"] 则为文本输入框,同时 textarea 也属于文本输入框,因此 input[type="text"], textarea {} 即所有文本输入框的选择器。

<style>input[type="text"], textarea {color: red;}
</style>

【练习】找到内容为 em2、em3、em4 的 em 元素


选择器编写建议:在保证精准性的前提下,尽量简洁

最繁琐的写法:

<style>div.box>p>strong>span[title="one"]>span>strong#cat~em {color: red;}
</style>

将没有特征的元素去掉:

<style>div.box span[title="one"] strong#cat~em {color: red;}
</style>

将元素名去掉:

<style>.box [title="one"] #cat~em {color: red;}
</style>

最精简的写法,由于 id 必然是唯一的,直接靠 id 定位:

<style>#cat~em {color: red;}
</style>

【重识 HTML + CSS】CSS 选择器相关推荐

  1. 【重识 HTML + CSS】知识点目录

    重识 HTML + CSS 前言 基本 HTML 标签 基本 CSS 属性 CSS 选择器 CSS 特性 HTML 列表.表格.表单 HTML 元素类型 盒子模型相关知识点 Photoshop 简单使 ...

  2. 【重识 HTML + CSS】项目实战

    项目实战 常见项目目录 CSS Reset CSS 编码规范 浏览器私有前缀 CSS 知识补充 CSS 属性 - white-space CSS 属性 - text-overflow image-se ...

  3. 【重识 HTML + CSS】CSS 特性

    CSS 特性 CSS 属性的继承 继承的注意点 CSS 属性的层叠 CSS 属性的优先级 优先级细节 CSS 属性使用总结 博文集合:[重识 HTML + CSS]知识点目录 本章 Gitee 代码: ...

  4. 【重识 HTML + CSS】CSS 伪类、伪元素

    CSS 伪类.伪元素 伪类 (pseudo-classes) 动态伪类 (dynamic pseudo-classes) :link.:visited.:hover.:active :focus 目标 ...

  5. 【重识 HTML + CSS】官方文档的阅读

    官方文档 CSS 属性的描述 CSS 属性的取值 组合 (combinators) 出现次数 (multipliers) 类型 (types) < number >.< intege ...

  6. 【重识 HTML + CSS】浮动

    浮动 CSS 属性 - float 浮动的规则 浮动的应用 浮动存在的问题:高度坍塌 清浮动的常见方法 CSS 属性 - clear 各种定位方案对比 博文集合:[重识 HTML + CSS]知识点目 ...

  7. 【重识 HTML + CSS】定位

    定位 标准流 (Normal Flow) CSS 属性 - position relative - 相对定位 static - 静态定位 fixed - 固定定位 画布 (Canvas) 和视口 (V ...

  8. 【重识 HTML + CSS】背景相关知识点

    background 背景 CSS 属性 - 背景 CSS 属性 - background-image 设置元素背景图片 CSS 属性 - background-repeat 设置背景图片是否平铺 C ...

  9. 【重识 HTML + CSS】Photoshop 简单使用

    Photoshop Photoshop 简介 常用功能 常用面板 常用设置 单位设置 标尺设置 颜色模式设置 移动工具设置 增加画布大小 常用快捷键 矩形选框工具 (D) 裁剪工具.切片工具 (C) ...

最新文章

  1. 图神经网络方法总结(Graph Neural Network)
  2. 云路由 vyatta 体验(六)防火墙
  3. SHA1加密(简单)
  4. ios 常用操作-1
  5. C++ 类的深拷贝与浅拷贝||深拷贝通过重载拷贝构造函数与重载赋值运算符实现
  6. 解决SecureCRT无法用非root账号登录ssh
  7. linux 查看用户上次修改密码的日期
  8. java 池化_溯本求源: JAVA线程池工作原理
  9. 退出域不能够重新加入域,郁闷呀
  10. Pentium II Pentium III架构/微架构/流水线 (4) - P6详解 - 高速缓存/Store Buffers
  11. 履带机器人动力总成_工业机器人在动力总成工厂智能化提升中的应用
  12. 分布式设计与开发(四)------数据拆分
  13. Gensim加载word2vec模型与简易使用
  14. python使用scrapy_Python实现从脚本里运行scrapy的方法
  15. tengine php环境,CentOS 7搭建tengine+php+mariadb环境并安装discuz论坛
  16. window下移动设备/硬盘报错位置不可用
  17. 2015蓝桥杯C++A:饮料换购
  18. Mysql闪退无法打开,试试这个方法
  19. linux磁盘扩容不影响原数据,linux 升级磁盘后扩容数据盘大小
  20. 腾讯云服务器到期续费流程

热门文章

  1. 使人无条件相信你的5个策略
  2. 阿里达摩院为什么吸引到世界顶尖人才?
  3. mysql数据库怎么读文件_mysql数据库读写文件
  4. sql过滤代码段_如何创建和管理T-SQL代码段
  5. azure云数据库_如何使用Cloud Shell创建Azure SQL数据库
  6. ssrs批量权限管理_管理SSRS安全性并使用PowerShell自动化脚本
  7. sql azure 语法_方便SQL笔记本,用于在Azure Data Studio中进行故障排除
  8. qml: 多级窗口visible现象;
  9. [转]Delphi 12种大小写转换的方法
  10. WebService 的CXF框架 WS方式Spring开发