CSS1 中定义的选择器

类型选择器

用于选择指定类型的元素(其实他就是 html 标签选择器),常见用法如下:

body {
/*对 body 元素定义样式*/
} body,div {
/*同时选择多种标签元素*/
}

ID 选择器

用于选择指定 ID 的 html 元素,常见使用方法如下:

<div id="nav">

</div>

<style>
#nav {
/*定义 ID 为 nav 的元素的样式*/
}
</style>

因为 CSS 的渲染顺序是从右往左进行渲染的,而 ID 则是全唯一的,那么就可以省略掉前面的类型选择器。

类选择器

用于选择指定类名的 html 元素,常见使用方法如下:

<div class="nav">

</div>

<style>
.nav {
/*定义 class 为 nav 的元素的样式*/
}
</style>

包含选择器

用于选择层级嵌套的元素,常见使用方法如下:

<div class="nav">
<div class="nav-tools"> </div>
</div> <div class="nav">
<div>
<div class="nav-tools"> </div>
</div>
</div> <style>
.nav .nav-tools {
/*定义元素的父级元素 class 包含 nav,且子元素class 包含 nav-tools 的元素*/
}
</style>

需要注意的是:包含选择器不关心层级,只要后面的选择器是被包含在前一个元素中的即可。如上述例子,两个 nav-tools 都会被选择器选中!

伪类选择器

:link——链接伪类选择器

用于定义链接未被访问状态时的样式,常见使用方法如下:

<div class="nav">
<div class="nav-tools">
<ul>
<li><a href="#"></a></li>
</ul>
</div>
</div> <style>
a:link {
text-decoration: none;
color: blue;
}
</style>

:visited——链接伪类选择器

用于定义已被访问的链接样式,常见使用方法如下:

<style>
a:visited {
text-decoration: none;
color: red;
}
</style>

:active——用户操作伪类选择器

用于定义被激活的元素样式,常见使用方法如下:

<style>
a:active {
text-decoration: none;
color: green;
}
</style>

:hover——用户操作伪类选择器

用于定义鼠标经过元素是的样式,常见使用方法如下:

<style>
a:hover {
text-decoration: none;
background-color: #F4F4F4;
}
</style>

:focus——用户操作伪类选择器

用于定义获得焦点的元素样式,常见使用方法如下:

<style>
input:focus {
text-decoration: none;
background-color: #F4F4F4;
}
</style>

::first-line

用于定义元素内第一行文本的样式,常见使用方法如下:

<div class="doc">
<p>层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。</p>
</div> <style>
.doc {
width: 360px;
}
.doc>p::first-line {
color: red;
}
</style>

::=first-letter

用于定义元素内第一个字符的样式,常见使用方式如下:

<style>
.doc {
width: 360px;
}
.doc>p::first-letter {
font-size: 2em;
color: red;
}
</style>

CSS2中定义的选择器

*——通配选择器

用于定义 DOM 中所有元素的共同样式,常见使用方法如下:

<div class="nav">
<div>
<div class="nav-tools"> </div>
</div>
</div> <style>
.nav * {
margin: 0;
}
</style>

如果要重置默认样式的话,不建议使用通配选择器

[attribute]——属性选择器

用于定义元素包含属性为attribute的元素的样式,常见使用方法如下:

<div class="nav">
<div>
<div class="nav-tools">
<ul>
<li active>Menu</li>
<li>Index</li>
</ul>
</div>
</div>
</div> <style>
li[active] {
color: red;
}
</style>

[attribute=“value”]——属性选择器

用于定义元素属性的值为指定的值样式,常见使用方法如下:

<div class="nav">
<div>
<div class="nav-tools">
<ul>
<li active="active">Menu</li>
<li active>Index</li>
</ul>
</div>
</div>
</div> <style>
li[active="active"] {
color: red;
}
</style>

[attribute~="value"]——属性选择器

用于定义属性中包含指定值且以空格来分隔属性值得元素,常见使用方法如下:

<div class="nav">
<div>
<div class="nav-tools">
<ul>
<li active="test active">Menu</li>
<li active="active-test">Index</li>
</ul>
</div>
</div>
</div> <style>
li[active~="active"] {
color: red;
}
</style>

如上所示,只有第一个 li 的前景色会被定义为红色!

[attribute|="value"]——属性选择器

用于定义属性中包含指定值且以连字符(-)链接的属性值,常见使用方法如下:

<div class="nav">
<div>
<div class="nav-tools">
<ul>
<li active="test active">Menu</li>
<li active="active-test">Index</li>
</ul>
</div>
</div>
</div> <style>
li[active|="active"] {
color: red;
}
</style>

如上所示:只有第二个 li 的前景色会被定义为红色!

:first-child——结构伪类选择器

用于定义元素的第一个元素的样式,常见使用方式如下:

<div class="nav">
<div>
<div class="nav-tools">
<ul>
<li active="test active">Menu</li>
<li active="active-test">Index</li>
</ul>
</div>
</div>
</div> <style>
li:first-child {
color: red;
}
</style>

注意 :first-child 是作用于同级,且相同标签的第一个元素。如上所示,如果要定义第一个 li 的样式,那么久需要使用 li:first-child,而不是 ul:first-child!

:lang(en)

用于定义属性为 lang=“en” 的元素样式,常见使用方法如下:

<div>
<p lang="en">Hello World</p>
</div> <style>
p:lang(en) {
color: red;
}
</style>

::before

用于定义元素之前的内容和样式,常见使用方法如下:

<div>
<a>World</a>
</div> <style>
a::before {
content: "Hello ";
}
</style>

::after

用于定义元素之后的内容和样式,常见使用方法如下:

<div>
<a>Hello</a>
</div> <style>
a::after {
content: "World";
}
</style>

div > p

用于定义元素的第一级子元素的样式,常见方法使用如下:

<div class="nav">
<div>
<div class="nav-tools">
<ul>
<li active="test active">Menu</li>
<li active="active-test">Index</li>
</ul>
</div>
</div>
</div> <style>
.nav-tools > ul {
background-color: red;
}
.nav-tools > li {
/*这个不会生效,因为 li 不是 ul 的直接子元素*/
}
</style>

h1 + p

用于定义元素相邻的元素样式,常见使用方法如下:

<div>
<h1>CSS</h1>
<p>层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。</p>
</div> <style>
h1 + p {
color: red;
}
</style>

CSS3 新增属性选择器

[foo^="bar"]

用于定义元素属性以 bar 开头的元素的样式

<div>
<a href="http://www.betterde.com">Betterde Inc.</a>
<a href="https://www.betterde.com">Betterde Inc.</a>
</div> <style>
a[href^="https"] {
color:green;
}
</style>

如上所示,标记 https 链接为绿色。

[foo$="bar"]

用于定义元素属性以 bar 结尾的元素的样式

<div>
<a href="http://www.betterde.com/logo.png">logo.png</a>
<a href="http://www.betterde.com/style.css">style.css</a>
<a href="http://www.betterde.com/main.js">main.js</a>
</div> <style>
a[href$="png"] {
background: url(system/filetype/png.png) no-repeat left center;
padding-left: 18px;
} a[href$="css"] {
background: url(system/filetype/css.png) no-repeat left center;
padding-left: 18px;
} a[href$="js"] {
background: url(system/filetype/js.png) no-repeat left center;
padding-left: 18px;
}
</style>

如上所示,识别超链接的所链接的文件格式,并在前面添加文件类型图标!

[foo*="bar"]

用于定义元素属性中包含 bar 的元素的样式,需要注意的是,这里是包含,也就是说无论是什么样的组合,只要属性值还有这bar 这三个连续字母的都会被选中!

<div>
<h1 class="title big full-right"></h1>
<h2 class="title big full-right"></h1>
<h1 class="big-title"></h1>
</div>
<style>
a[class*="title"] {
color: red;
}
</style>

如上所示:div 内的三个元素都将会被渲染为红色字体!

虽然 CSS3 中任然保留 CSS2 中定义的属性选择器,但是建议使用 CSS3 的属性选择器来替代!

结构伪类选择器

:root

用于定义 html 标签元素的样式

:nth-child(n)

用于定义子元素的样式,n 表示第几个子元素。n 可以是数字,或关键字odd、even或公式。常见使用方法如下:

<table>
<tbody>
<tr>
<td>name</td>
<td>gender</td>
<td>age</td>
</tr>
<tr>
<td>George</td>
<td>Male</td>
<td>23</td>
</tr>
<tr>
<td>Kevin</td>
<td>Male</td>
<td>28</td>
</tr>
<tr>
<td>Angule</td>
<td>Male</td>
<td>23</td>
</tr>
</tbody>
</table> <style>
tr:nth-child(even) {
background-color: red;
}
</style>

:nth-last-child(n)

与 :nth-child(n)用法相同,只是排序方式是从后往前!

:nth-of-type(n)

用于定义相同元素的第 n 个元素的样式,常见使用方法如下:

<table>
<tbody>
<tr>
<td>name</td>
<td>gender</td>
<td>age</td>
</tr>
<tr>
<td>George</td>
<td>Male</td>
<td>23</td>
</tr>
<tr>
<td>Kevin</td>
<td>Male</td>
<td>28</td>
</tr>
<tr>
<td>Angule</td>
<td>Male</td>
<td>23</td>
</tr>
</tbody>
</table> <style>
tr:nth-of-type(even) {
background-color: red;
}
</style>

:nth-last-of-type(n)

与 :nth-of-type(n)用法相同,只是排序方式是从后往前!

:last-child

用于定义最后一个元素的样式,常见使用方法如下:

<table>
<tbody>
<tr>
<td>name</td>
<td>gender</td>
<td>age</td>
</tr>
<tr>
<td>George</td>
<td>Male</td>
<td>23</td>
</tr>
<tr>
<td>Kevin</td>
<td>Male</td>
<td>28</td>
</tr>
<tr>
<td>Angule</td>
<td>Male</td>
<td>23</td>
</tr>
</tbody>
</table> <style>
tr:last-child {
background-color: red;
}
</style>

:first-of-type

定义第一个元素相同类型元素的样式,与 :nth-of-type(1) 效果一样

:last-of-type

定义最后一个元素相同类型元素的样式,常见使用方法如下:

<table>
<tbody>
<tr>
<td>name</td>
<td>gender</td>
<td>age</td>
</tr>
<tr>
<td>George</td>
<td>Male</td>
<td>23</td>
</tr>
<tr>
<td>Kevin</td>
<td>Male</td>
<td>28</td>
</tr>
<tr>
<td>Angule</td>
<td>Male</td>
<td>23</td>
</tr>
</tbody>
</table> <style>
tr:last-of-type {
background-color: red;
}
</style>

:only-child

用于定义子元素只有一个且与制定元素标签相同,常见使用方法如下:

<div>
<h1>Hello</h1>
</div> <style>
h1:only-child {
/*如果 div 中还有其他任何元素,则h1不会按照该选择器中定义的样式渲染*/
}
</style>

:only-of-type

用于定义只包含一个制定的标签元素的样式,常见使用方法如下:

<div>
<h1>Hello</h1>
</div> <style>
h1:only-of-type {
/*如果 div 中还有其他任何元素,则h1不会按照该选择器中定义的样式渲染*/
}
</style>

:empty

用于定义,一个元素中没有包含任何子元素的样式,常见使用方法如下:

<div>

</div>

<style>
div:empty {
display: none;
}
</style>

CSS3 新增的其他选择器

E ~ F

用于定义兄弟元素的样式,常见使用方法如下:

<div>
<p>Hello</p>
</div>
<p>CSS</p> <style>
div ~ p {
color: red;
}
</style>

div 元素中的 p 不会被渲染为红色字体,只有跟 div 是同级的 p 才会被渲染为红色!

:not(s)

用于定义指定元素,并且过滤 s 所指定的选择器元素,常见使用方法如下:

<div>
<p class="red">Hello</p>
<p class="blue">World</p>
<p>Welcome!</p>
</div> <style>
p:not(.red) {
color: blue;
}
</style>

注意:s 是一个简单的结构选择器,不能使用复合选择器,该选择器只匹配第一个复合条件的元素。如上所示,最后一个 p 不会被渲染为蓝色!

:target

用于定义被访问的锚链样式,常见使用方法如下:

<div>
<div id="text-one">
<p>这是第一个文本段</p>
</div>
<div id="text-two">
<p>这是第二个文本段</p>
</div>
</div> <style>
div:target {
color: red;
}
</style>

注意:当我们激活锚链时(url中包含 #text-one 或 #text-two),对应的 div 内的元素字体会被渲染为红色!

CSS3 UI 元素状态伪类选择器

:enabled

用于定义元素的 enabled 时的样式,常见使用方式如下:

<div>
<input type="text">
</div> <style>
input:enabled {
background: #ffff00;
}
</style>

注意:元素默认状态为 enabled

:disabled

用于定义元素处于禁用状态时的样式,常见使用方法如下:

<div>
<input type="text" disabled="disabled"/>
</div> <style>
input:disabled {
background: #dddddd;
}
</style>

:checked

用于定义元素被选中时的样式,常见使用方式如下:

<div>
<form>
<input type="checkbox" />
</form>
</div> <style>
input:checked {
color: green;
}
</style>

CSS 学习笔记——CSS Selector的更多相关文章

  1. Html和Css学习笔记-css进阶-盒模型

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 此篇博客是我的复习笔记,html和css学的时间太久了,忘得差不多了,最近要使用一下,所以重新打开html的书略读,后记录了标签 ...

  2. Html和Css学习笔记-css基础知识

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 此篇博客是我的复习笔记,html和css学的时间太久了,忘得差不多了,最近要使用一下,所以重新打开html的书略读,后记录了标签 ...

  3. CSS学习笔记——CSS选择器样式总结

    <style type="text/css"> * { padding:0; margin:0; } .box h2 { //内边距左边的距离 padding-left ...

  4. CSS学习笔记——CSS中定位的浮动float

    昨天在解决了盒模型的问题之后又出现了新的知识模糊点:浮动和绝对定位?今天先解决浮动相关的问题,首先列举出想要解决的问题: 1.浮动到底是怎么样的? 2.浮动对元素的影响有什么? 3.浮动主要用来干什么 ...

  5. w3school之CSS学习笔记

    由于web自动化测试中,会用到比较复杂的定位方式:CSS定位,这种定位方式比较简洁,定位速度较快,所以继续学习前端的CSS知识,总结下学习笔记,以便后续查看.同时,也希望能帮助到大家. 学习网址:ht ...

  6. CSS学习笔记之选择器

    目录 1.元素选择器 2.继承 3.选择器分组 4.声明分组 5.后代选择器 6.子元素选择器 7.相邻兄弟选择器 8.类选择器 9.ID 选择器 10.属性选择器 11.伪类 12.伪元素 1.元素 ...

  7. CSS学习笔记之基本介绍

    1.简介 层叠样式表(Cascading Style Sheets,CSS)允许我们把样式设置存储在文件中,从而将内容与表现分离 当同一个 HTML 元素被不只一个样式定义时,最终的样式确定顺序如下( ...

  8. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  9. HTML+CSS学习笔记 (7) - CSS样式基本知识

    HTML+CSS学习笔记 (7) - CSS样式基本知识 内联式css样式,直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌 ...

随机推荐

  1. 三十八、LNMP潮流组合搭建

    一.安装mysql 数据库 1.1  mysql数据库安装的三种方法: 1)编译安装,在lamp经典组合安装是5.1版本,是configure,make,make install,这里如果是5.5版本 ...

  2. day28-黏包现象

    #黏包现象:信息还没接收完,下一次接收的时候一下子接收好几条黏在一起的信息. #黏包现象的原因:接收端不知道发送端发送的数据的长度.recv(字节数小了). # 第一次无法接收完就缓存起来,下一次接收 ...

  3. Docker系列八: 数据卷

    什么是数据卷 生成环境中使用docker的过程中,往往需要对数据进行持久化,或者需要多个容器之间进行数据共享,这个就涉及到了容器数据管理 容器中管理数据主要有两种方式: 数据卷:容器内数据之间映射到本 ...

  4. MySQL数据库简单操作

    title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...

  5. surprise库使用

    自动交叉使用法 #-*- coding:utf-8 -*- from surprise import SVD from surprise import Dataset from surprise.mo ...

  6. 1059 C语言竞赛 (20 分)

    题目:1059 C语言竞赛 (20 分) C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份“神秘大奖”(比如很巨大的一本学生 ...

  7. 105)PHP,递归删除目录

    Unlink(文件地址)删除文件.

  8. labview状态机

    状态机主要由3部分组成,包括一个while循环,一个条件结构,以及while循环的移位寄存器,其中while循环用于保证程序的持续运行,条件结构用于处理不同状态的执行,移位寄存器用于实现从一个状态跳转 ...

  9. 使json或字典输出更美观

    这里是选取的项目中部分代码,但是关于json或字典格式化输出的代码是完整的def send_post(url, data): 使用json.dumps()后数据被转成了str类型,如果还要对该数据像字 ...

  10. volatile与Synchronized

    摘自: https://blog.csdn.net/zxh476771756/article/details/78685581 一.JVM内存模型: JVM将内存组织为主内存和工作内存两个部分. 主内 ...