CSS选择器
1.选择器目录
这里写目录标题
1.1 元素选择器
语法:E{…}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="app">helloworld</div>
</body>
</html>
1.2 属性选择器
语法:E[attr=‘value’]{…}
attr指如有id,name等属性,整句话意思是:匹配所有属性attr为value的E元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div[id='yyy']
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="yyy">helloworld</div>
</body>
</html>
它还有其它语法格式(像正则表达式语法):
1.2 .1 E[attr~=‘value’]{…} :匹配所有包含attr属性,且attr属性的值以空格隔开的系列值,其中的某个值为value的E元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div[id~=yyy]{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="xxx yyy zzz">helloworld</div>
</body>
</html>
1.2 .2 E[attr|=‘value’]{…} :匹配所有包含attr属性,且attr属性的值以连字符分隔开的系列值,其中的第一个值为value的E元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div[id|='yyy']{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="yyy-xxx-zzz">helloworld</div>
</body>
</html>
1.2 .3 E[attr^=‘value’]{…} :匹配所有包含attr属性,且是以attr属性的value值开头的E元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div[id^=yyy]{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="yyyAAAA">helloworld</div>
</body>
</html>
1.2 .4 E[attr$=‘value’]{…} :匹配所有包含attr属性,且是以attr属性的value值结尾的E元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div[id$=yyy]{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="AAAAyyy">helloworld</div>
</body>
</html>
1.2 .5 E[attr*=‘value’]{…} :匹配所有包含attr属性,且attr属性的值包含value的E元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div[id*=yyy]
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="AAAAyyyBBB">helloworld</div>
</body>
</html>
1.3 ID选择器
#idValue{…} :匹配所有id属性值是idValue的E元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
#app
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div id="app">helloworld</div>
</body>
</html>
1.4 class选择器
E.classValue{…} :匹配所有lclass
属性值是idValue的E元素起作用,E元素可以省略
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.appClass
{
background-color: blue;
}
div.divClass
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div class="appClass">helloworld1</div>
<div class="divClass">helloworld2</div>
<span class="divClass">helloworld3</span>
</body>
</html>
1.5 包含选择器
Selector1 Selector2{…} 指定的class样式对处在左侧选择器对应的元素内部的且匹配Selector2的子元素里面的所有后代元素都起作用。包含选择器也叫后代选择器。也即是右边的Selector2选择器对应的元素必须处于左边的Selector1选择器对应的元素内部,则指定的class样式才对Selector2的子元素里面的所有后代元素起作用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div .divClass
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div>
<div class="divClass">div子代
</div>
</div>
<div>
<span>
<div class="divClass">div孙代
</div>
</span>
</div>
<div>
<span>
<sapn>
<div class="divClass">div曾孙
</div>
</sapn>
</span>
</div>
</body>
</html>
1.6 子选择器
Selector1 >Selector2{…} 指定的class样式对处在左侧选择器对应的元素内部的且匹配Selector2的子元素起作用,不包含其子元素。也即是右边的Selector2选择器对应的元素必须处于左边的Selector1选择器对应的元素内部,则指定的class样式才只对Selector2的元素起作用。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
div > .divClass
{
background-color: blue;
}
</style>
</head>
<body>
<div>你好,世界</div>
<div>
<div class="divClass">div子代
</div>
</div>
<div>
<span>
<div class="divClass">div孙代
</div>
</span>
</div>
<div>
<span>
<sapn>
<div class="divClass">div曾孙
</div>
</sapn>
</span>
</div>
</body>
</html>
1.7 兄弟选择器
1.7.1 Selector1 + Selector2{…} 指定的class样式,需要满足对左侧选择器对应的元素且是其相邻的,并且匹配右侧Selector2的元素,还要满足二者有相同的父元素,才会对左侧选择器对应的元素且匹配Selector2相邻元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.divClass + div
{
background-color: blue;
}
</style>
</head>
<body>
<div class="divClass">你好,世界</div>
<div >相邻兄弟</div>
<div >隔壁兄弟</div>
</body>
</html>
1.7.2 Selector1 ~ Selector2{…} 指定的class样式,需要满足对左侧选择器对应的元素且是其后面的所有兄弟结点,并且都匹配右侧Selector2的元素,还要满足二者有相同的父元素,才会对左侧选择器对应的元素后面的所有兄弟结点且匹配Selector2的元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.divClass ~ div
{
background-color: blue;
}
</style>
</head>
<body>
<div class="divClass">你好,世界</div>
<div >相邻兄弟</div>
<div >隔壁兄弟1</div>
<div >隔壁兄弟2</div>
</body>
</html>
1.8 选择器组合
Selector1,Selector2…{…}指定的class样式多个选择器对应的元素起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.divClass,div,#app
{
background-color: blue;
}
</style>
</head>
<body>
<div class="divClass">你好,世界1</div>
<div >你好,世界2</div>
<div id="app">你好,世界3</div>
<p>你好,世界4</p>
</body>
</html>
1.9 伪元素选择器
1.9.1 :first-letter: 该选择器对应的CSS样式对指定元素内的第一个字符起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
:first-letter{
color: blue;
}
</style>
</head>
<body>
<div class="divClass">你好,世界</div>
</body>
</html>
1.9.2 :first-line: 该选择器对应的CSS样式对指定元素内的第一行内容起作用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
:first-line{
color: blue;
}
</style>
</head>
<body>
<div class="divClass">你好,世界</div>
</body>
</html>
1.9.3 :before:该选择器与内容元素结合起来一起使用,用 于在指定对象内部的前端插入内容。 :after:该选择器与内容元素结合起来一起使用,用于在指定对象内部的尾部插入内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.divClass:before{
content:'你好,';
}
.divClass:after{
content:url(小可爱以泽.JPG);
}
</style>
</head>
<body>
<div class="divClass">世界</div>
</body>
</html>
1.9.4 content:该属性值可以是字符串、url(url)、attr(alt)、counter(name)、counter(name,list-style-type)、open-quote、close-quote等格式。该属性用于向指定元素之前或之后插入插入指定内容
1.9.4.1 counter属性值
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style type="text/css">
.divClass{
counter-increment: mycounter;
}
/* counter-increment是一个函数,属性设置某个选取器每次出现的计数器增量。默认增量是 1。 */
.divClass:before{
content:counter(mycounter) '.';
}
</style>
</head>
<body>
<div class="divClass">java</div>
<div class="divClass">css</div>
<div class="divClass">js</div>
</body>
</html>
2.0 新增的伪元素选择器
2.0.1 结构性伪类元素:
2.0.1.1 Selector:root 匹配文档根元素。在html文档中,根元素永远是<html…/>元素。
2.0.1.2 Selector:first-child 匹配符合Selector选择器,而且必须是其父元素的第一个子节点元素
2.0.1.3 Selector:last-child 匹配符合Selector选择器,而且必须是其父元素的最后一个子节点元素
2.0.1.4 Selector:nth-child(n) 匹配符合Selector选择器,而且必须是其父元素的第n个元素
2.0.1.5 Selector:nth-last-child(n) 匹配符合Selector选择器,而且必须是其父元素的倒数第n个元素
2.0.1.6 Selector:only-child 匹配符合Selector选择器,而且必须是其父元素的唯一一个子元素
2.0.1.7 Selector:first-of-type 匹配符合Selector选择器,而且是与它同类型、同级兄弟元素的第一个元素
2.0.1.8 Selector:last-of-type 匹配符合Selector选择器,而且是与它同类型、同级兄弟元素的最后一个元素
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<style type="text/css">
:root{
background-color: blue;
}
li:first-child
{
background-color: red;
}
li:last-child
{
background-color: green;
}
li:nth-child(2)
{
background-color: coral;
}
li:nth-last-child(2)
{
background-color: yellow;
}
li:first-of-type{
background-color: white;
}
li:last-of-type{
background-color: black;
}
</style>
<div>
你好,世界!
</div>
<div>
<ul>
<li>
11111
</li>
<li>
2222
</li>
<li>
333333
</li>
<li>
4444444444
</li>
<li>
5555555
</li>
</ul>
</div>
</body>
</html>
2.0.2 UI元素状态伪类元素:
2.0.2.1 Selector🔗 匹配Selector选择器且未被访问前的元素(通常只能是超链接)
2.0.2.2 Selector:visited: 匹配Selector选择器且已被访问过的元素(通常只能是超链接)
2.0.2.3 Selector:active: 匹配Selector选择器且处于被用户激活(在鼠标点击与释放之间)状态的元素
2.0.2.4 Selector:hover: 匹配Selector选择器且处于鼠标悬停状态的元素
2.0.2.5 Selector:focus: 匹配Selector选择器且已得到焦点的元素
2.0.2.6 Selector:enabled: 匹配Selector选择器且当前处于可用的元素
2.0.2.7Selector:disabled: 匹配Selector选择器且当前处于不可用的状态元素
2.0.2.8 Selector:checked: 匹配Selector选择器且当前处于选中状态的元素
2.0.2.9 Selector:default: 匹配Selector选择器且页面打开时处于选中状态
2.0.2.10 Selector:read-only: 匹配Selector选择器且处于只读状态
2.0.2.11 Selector:read-write: 匹配Selector选择器且处于只写状态
2.0.2.12 Selector:selection: 匹配Selector选择器元素中且当前被选中的内容