css3选择器
在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素。
"CSS" 列指示该属性是在哪个 CSS 版本中定义的。(CSS1、CSS2 还是 CSS3。)css3选择器分类如下图所示:

1、基本选择器
基本选择器是CSS中使用最频繁,最基础,也是CSS中最早定义的选择器。如图所示

1-1 通配选择器
*{
padding:0;
margin:0;
}
“ * ”用来选择所有元素。表示所有元素的内外边距都是0。
1-2 通配符选择器
p{
height:10px;
width:10px;
}
表示p元素的宽高为10px。
1-3 ID选择器
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style>
#123{
width:10px;
height:10px;
}
</style>
</head>
<body>
<div id="123">选择的是这个</div>
<div>456</div>
</body>
</html>
在使用ID选择器之前,需要在HTML文档中给对应的元素设置id属性并设置值,才能找到对应的元素。ID选择器具有唯一性,在一个页面中不能同时出现id相同的属性值。在CSS样式中使用id选择器时,需要在id属性值的前面加上“#”号,如(#id)。
1-4 类选择器
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style>
.yxz{
width:10px;
height:10px;
}
</style>
</head>
<body>
<div class="123">abc</div>
<div>456</div>
</body>
</html>
在使用ID选择器之前,需要在HTML文档中给对应的元素设置class属性并设置值,才能找到对应的元素。但与ID选择器不同的是,类选择器在一个页面中可以有多个相同的类名,而ID选择器的ID名在整个页面中只能有一个。在CSS样式中使用类选择器时,需要在属性值的前面加上点号(.),如(.class)。
1-5 群组选择器
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title></title>
<style>
h1,h2{
heigh:10px;
width:20px;
font-size:14px;
}
</style>
</head>
<body>
<h1>123</h1>
<h2>456</h2>
</body>
</html>
将具有相同样式的元素分组在一起,每个选择器之间用逗号(,)隔开。表示h1,h2具有相同的样式。
2、层次选择器
通过后代、父子、相邻以及通用几种关系选择需要元素。如图所示:

2-1 后代选择器
<!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>
*{
padding:0;
margin:0;
div p{
background:orange;
}
</style>
</head>
<body>
<div>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2h2h2h2h2</h2>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
</div>
</body>
</html>
div和p之间一定要空格隔开。效果图所示:

表示被div包含的p标签。
2-2 子选择器
<!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>
*{
padding:0;
margin:0;
}
div>p{
background:orange;
}
</style>
</head>
<body>
<div>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2h2h2h2h2</h2>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
</div>
</body>
</html>
效果如图所示:

表示选中父元素div下面的子元素p标签。
2-3 相邻兄弟选择器
相邻兄弟选择器(E+F)可以选择紧接在另一个元素后的元素,它们具有一个相同的父元素。
<!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>
*{
padding:0;
margin:0;
}
h2+p{
background:orange;
}
</style>
</head>
<body>
<div>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2h2h2h2h2</h2>
<h2>h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
</div>
</body>
</html>
效果如图所示:

表示h2紧接的第一个p标签,而不是所有的p标签。
2-4 通用兄弟选择器
用于选择某元素后面的所有兄弟元素,它们也具有相同的父元素。
<!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>
*{
padding:0;
margin:0;
}
h2~p{
background:orange;
}
</style>
</head>
<body>
<div>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2h2h2h2h2</h2>
<h2>h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
<p>ppppppppppppppp</p>
<h2>h2h2h2h2h2</h2>
<h2>h2h2h2h2h2h2h2</h2>
<p>ppppppppppppppp</p>
</div>
</body>
</html>
效果如图所示:

表示h2后面的所有p标签。
3、伪类选择器
css3中的伪类选择器可以分成5种:动态伪类选择器,目标伪类选择器,UI状态伪类选择器,结构伪类选择器和否定伪类选择器。如图所示:

3-1 动态伪类选择器
顾名思义,是发生交互时才体现出来

例子:focus获取焦点
<!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>
input:focus{
background:yellow;
border:10px solid pink;
}
</style>
</head>
<body>
<input type="text">
<input type="text">
<input type="text">
</body>
</html>
效果图

当鼠标移动到第二个方框中发生交互效果。
3-2 目标伪类选择器
目标伪类选择器“:target”用来匹配文档链接中的URI中某个标识符的目标元素。
<!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>
*{
margin:0;
padding:0;
}
a{
display:block;
width:100px;
height:50px;
background:red;
margin:10px auto;
}
div{
width:200px;
height:100px;
margin:10px auto;
text-align: center;
font-size:60px;
font-weight: 900;
}
div:target{
/* 当div被锚点连接指向:css背景发生变化 */
background:orange;
}
</style>
</head>
<body>
<a href="#box1">连接div1</a>
<a href="#box2">连接div2</a>
<div id="box1">1</div>
<div id="box2">2</div>
</body>
</html>
效果图所示:

当点击“连接div2”时,下方“2”区域发生背景颜色变化。
3-3 UI元素状态伪类选择器
主要用于form表单元素上,UI元素的状态一般包括:启用,禁用,选中,未选中等。常用的有:
E:enabled
例子:
<!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>
input:enabled{
background:pink;
}
input:disabled{
background:blue;
}
</style>
</head>
<body>
<input type="text">
<br>
<input type="text" disabled>
<br>
<input type="text" disabled>
<br>
<input type="text" disabled >
<br>
<input type="text">
</body>
</html>
效果图
粉色区域为可用状态,点击后框内有光标。蓝色区域为不可用状态。
3-4 结构性伪类选择器
<!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>
ul:nth-child(2) li:nth-child(3){
background:orange;
}
</style>
</head>
<body>
<ul>
<li>123</li>
<li>123</li>
</ul>
<ul>
<li>老虎</li>
<li>老虎</li>
<li>老虎</li>
</ul>
</body>
</html>
效果图:

表示选中的是第二个列表当中的第三个。
3-5 否定伪类选择器
否定伪类选择器“:not()”主要用来定位不匹配该选择器的元素。
4、伪元素
css3中,规定伪元素由两个冒号开头作为表示。(可能会改变dom结构,创造虚拟dom)
常用的两个伪元素“::before”和"::after"。这两个伪类会再选择的元素前或后创建虚拟dom,常和content联用。
还有其他伪元素,"::first-line" "::first-letter" " ::selection"。
例子:
<!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>
p::before{
content:"a";
color:blue;
}
p::after{
content:"b";
color:red;
}
</style>
</head>
<body>
<p>123</p>
</body>
</html>
效果图

表示在“123”之前加上了一个蓝色的a,之后加上了一个红色的b。
5、属性选择器
通过各种属性给元素添加信息。语法如下:
1: 选择符[属性名] 只要带有当前属性名就会被选中。
<!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>
em{
display:inline-block;
width:16px;
height:16px;
}
li[class="pic"] em{
height: 10px;
width: 10px;
background-color: red;
}
li[class="html"] em{
height: 10px;
width: 10px;
background-color: black;
}
</style>
</head>
<body>
<ul>
<li class="pic">brucebrucebruce.jpg <em></em></li>
<li class="pic">bruce.png <em></em></li>
<li class="pic">bruce.gif <em></em></li>
<li class="html">index.html <em></em></li>
<li class="html">case.html <em></em></li>
<li class="txt">txt.doc <em></em></li>
<li class="html">nihao.html <em></em></li>
</ul>
</body>
</html>
效果图下图所示:

表示选中属性名为pic后面的em属性,选中属性名为html后面的em属性。
欢迎补充。
浙公网安备 33010602011771号