文章目录
1.简单选择器
1.1元素选择器
根据标签名来选中指定的元素,如下面的 p 、 h 2 p、h2 p、h2,语法就是:标签名 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p{
color: blueviolet;
font-size: 15px;
}
h2{
color:coral;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p>我是一个段落</p>
<p>我是第二个段落</p>
</body>
</html>
1.2id选择器
根据元素的 i d id id属性值选中某个元素。注意是某个,而不是多个,因为根据规范,元素 i d id id属性的值应该是唯一的。语法: # i d \#id #id属性值 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p{
color: blueviolet;
font-size: 15px;
}
h2{
color:coral;
}
#red{
color: red;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p id="red">我是一个段落</p>
<p>我是第二个段落</p>
</body>
</html>
如果想选中多个的话,可以使用接下来介绍的类选择器。
1.3类选择器
c l a s s class class是一个标签的属性,他和 i d id id类似,但是值可以重复。类选择器就是根据 c l a s s class class的值选择一组元素。语法: . c l a s s .class .class属性值 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p{
color: blueviolet;
font-size: 15px;
}
h2{
color:coral;
}
#red{
color: red;
}
.blue{
color: blue;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p id="red">我是一个段落</p>
<p class="blue">我是第二个段落</p>
<p class="blue">我是第三个段落</p>
<p>我是第四个段落</p>
</body>
</html>
而且 h t m l html html元素的 c l a s s class class属性值可以同时有多个:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p{
color: blueviolet;
font-size: 15px;
}
h2{
color:coral;
}
#red{
color: red;
}
.blue{
color: blue;
}
.yellow{
color: yellow;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p id="red">我是一个段落</p>
<p class="blue">我是第二个段落</p>
<p class="blue">我是第三个段落</p>
<p class="blue yellow">我是第四个段落</p>
</body>
</html>
比如上面的第 4 4 4个段落,它有两个 c l a s s class class,且后面类也就是 y e l l o w yellow yellow会覆盖掉之前类也就是 b l u e blue blue。
1.4通配选择器
可以选择页面内的所有元素。语法: ∗ { } ^*\{\} ∗{}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
/* p{
color: blueviolet;
font-size: 15px;
}
h2{
color:coral;
}
#red{
color: red;
}
.blue{
color: blue;
}
.yellow{
color: yellow;
} */
*{
color: green;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p id="red">我是一个段落</p>
<p class="blue">我是第二个段落</p>
<p class="blue">我是第三个段落</p>
<p class="blue yellow">我是第四个段落</p>
</body>
</html>
这里要把前面的部分注释掉才能显示出这个效果。原因是不同的选择器的优先级是不同的。我们稍后会讲到。
A
∗
A\ ^*
A ∗会选中
A
A
A元素的所有子元素:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div *{
color:red;
}
</style>
</head>
<body>
<div>
我是一个div 我有子元素
<p>11111</p>
<p>222222</p>
<p>
333333
<ul>
<li>a</li>
<li>b</li>
<li>c</li>
</ul>
</p>
<p>444444</p>
</div>
<div>我是一个div 我没有子元素</div>
</body>
</html>
2.复合选择器
2.1交集选择器
如果我想要把 c l a s s class class为 r e d red red的 d i v div div元素的字体颜色设置为红色,该怎么写呢?之前介绍的简单选择器已经不能满足我们的需求了。我们需要交集选择器,它可以选择出满足所有条件的元素。语法: 选择器1选择器2选择器3…… { } \{\} {}。不过需要注意一点,如果使用了元素选择器的话,需要以它为开头。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div.red{
color:red;
}
.a.b.c{
color:blue;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p>我是一个段落</p>
<div class="red">我是div</div>
<p class="a">我是a</p>
<p class="a b c">我既是a 也是b 还是c</p>
</body>
</html>
2.2并集选择器
如果我想把所有的 p 、 d i v p、div p、div元素的样式设置成一样的,该怎么办呢?可以使用并集选择器,它会选中多个选择器对应的元素。语法: 选择器1,选择器2,…… { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div,p{
color:red;
}
</style>
</head>
<body>
<h1>我是h1标题</h1>
<h2>我是h2标题</h2>
<p>我是一个段落</p>
<div class="red">我是div</div>
<p class="a">我是a</p>
<p class="a b c">我既是a 也是b 还是c</p>
</body>
</html>
3.关系选择器
首先了解一下
h
t
m
l
html
html中的元素关系:
3.1子元素选择器
选中指定父元素的指定子元素。语法: 父元素>子元素 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div>span{
color:red;
}
</style>
</head>
<body>
<div>
我是一个div
<p>
我是div中的p元素
<span>我是p元素中的span元素</span>
</p>
<span>我是div元素中的span元素</span>
</div>
<span>
我是div元素的兄弟元素span
</span>
</body>
</html>
3.2后代元素选择器
选择指定元素的指定后代元素。语法: 祖先 后代 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div span{
color:red;
}
</style>
</head>
<body>
<div>
我是一个div
<p>
我是div中的p元素
<span>我是p元素中的span元素</span>
</p>
<span>我是div元素中的span元素</span>
</div>
<span>
我是div元素的兄弟元素span
</span>
</body>
</html>
3.3选择下一个兄弟元素
注意只会选择下一个。语法:自己+目标兄弟 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div+span{
color:red;
}
</style>
</head>
<body>
<div>
我是一个div
<p>
我是div中的p元素
<span>我是p元素中的span元素</span>
</p>
<span>我是div元素中的span元素</span>
</div>
<span>我是div元素的兄弟元素span</span>
<span>我是div元素的兄弟元素span</span>
<span>我是div元素的兄弟元素span</span>
</body>
</html>
如果该元素的下一个元素不符合要求,那么依然不会选取。
3.4选择下面的所有兄弟元素
语法:自己~目标兄弟 { } \{\} {}。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div~span{
color:red;
}
</style>
</head>
<body>
<span>我是div元素的兄弟元素span</span>
<div>
我是一个div
<p>
我是div中的p元素
<span>我是p元素中的span元素</span>
</p>
<span>我是div元素中的span元素</span>
</div>
<p>我是div元素的兄弟元素P</p>
<span>我是div元素的兄弟元素span</span>
<span>我是div元素的兄弟元素span</span>
<span>我是div元素的兄弟元素span</span>
</body>
</html>
4.属性选择器
[属性名] 选择含有指定属性的元素:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
[title]{
color:red;
}
</style>
</head>
<body>
<p title>段落一</p>
<p>段落二</p>
<p>段落三</p>
<p>段落四</p>
<p>段落无</p>
</body>
</html>
[属性名=属性值] 选择含有指定属性和属性值的元素;[属性名^=属性值] 选择含有指定属性,且属性值以指定值开头的元素;[属性名$=属性值] 选择含有指定属性,且属性值以指定值结尾的元素:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
[title=abc]{
color:red;
}
[title^=cde]{
color:blue;
}
[title$=cde]{
color:green;
}
</style>
</head>
<body>
<p title>段落一</p>
<p title="abc">段落二</p>
<p title="cdef">段落三</p>
<p title="bcde">段落四</p>
<p>段落无</p>
</body>
</html>
[属性名*=属性值] 选择含有指定属性,且属性值含有指定值的元素:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
[title=abc]{
color:red;
}
[title*=cde]{
color:blue;
}
</style>
</head>
<body>
<p title>段落一</p>
<p title="abc">段落二</p>
<p title="cdef">段落三</p>
<p title="bcde">段落四</p>
<p>段落无</p>
</body>
</html>
5.伪类选择器
伪类可以理解成不存在的类、特殊的类,它用来描述一个元素的特殊状态,比如第一个元素、被点击的元素、鼠标移入移出的元素等。伪类一般情况下使用:开头,详情可以看这个链接。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
ul>:first-child{
color:red;
}
ul>li:first-of-type{
color:blue;
}
ul>li:last-child{
color:green;
}
</style>
</head>
<body>
<ul>
<span>test</span>
<li>第一个</li>
<li>第二个</li>
<li>第三个</li>
<li>第四个</li>
<li>第五个</li>
</ul>
</body>
</html>
再举一个超链接的例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
/*
未访问过的链接
*/
a:link{
color:red;
}
/*
访问过的链接
*/
a:visited{
color:orange;
}
/*
鼠标移到链接上时
*/
a:hover{
color:blue;
}
/*
鼠标点击链接时
*/
a:active{
color:green;
}
</style>
</head>
<body>
<a href="https://mp.csdn.net/console/article?spm=1011.2124.3001.5114">这是一个超链接</a>
</body>
</html>
6.伪元素选择器
伪元素表示页面中一些特殊的并不真实存在的元素,比如第一个字母、第一行等等。它一般使用::开头。在第5节中,我提供了一个网址,里面有更加详细的介绍。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p::first-letter{
font-size: 30px;
}
p::first-line{
color: red;
}
</style>
</head>
<body>
<p>暖国的雨,向来没有变过冰冷的坚硬的灿烂的雪花。博识的人们觉得他单调,他自己也以为bai不幸否耶?江南的雪,
可是滋润美艳之至了;那是还在隐约着的青春的消息,是极壮健的处子的皮肤。雪野中有血红的宝珠山茶,白中隐青
的单瓣梅花,深黄的磬口的腊梅花;雪下面还有冷绿的杂草。</p>
<p>胡蝶确乎没有;蜜蜂是否来采山茶花和梅花的蜜,我可记不真切了。但我的眼前仿佛看见冬花开在雪野中,有许多蜜
蜂们忙碌地飞着,也听得他们嗡嗡地闹着。</p>
<p>孩子们呵着冻得通红,像紫芽姜一般的小手,七八个一齐来塑雪罗汉。因为不成功,谁的父亲也来帮忙了。罗汉就塑得
比孩子们高得多,虽然不过是上小下大的一堆,终于分不清是壶卢还是罗汉;然而很洁白,很明艳,以自身的滋润相
粘结,整个地闪闪地生光。</p>
<p>第二天还有几个孩子来访问他;对了他拍手,点头,嘻笑。但他终于独自坐着了。晴天又来消释他的皮肤,寒夜又使他
结一层冰,化作不透明的模样;连续的晴天又使他成为不知道算什么,而嘴上的胭脂也褪尽了。</p>
<p>是的,那是孤独的雪,是死掉的雨,是雨的精魂。</p>
</body>
</html>
7.继承
样式是可以继承的。我们为一个元素设置的样式,同时也会应用到它的后代元素中。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
p{
color:red;
}
</style>
</head>
<body>
<p>
我是p元素
<span>我是p元素内的span元素</span>
</p>
</body>
</html>
但是不是所有的样式都会被继承,背景、布局相关的等等就不会被继承。可以通过查阅文档来确定:
8.选择器的权重
当我们通过不同的选择器,选中了一个相同的元素时,就可能会出现样式冲突。如果发生了冲突,就要通过选择器的权重来决定最终应用哪个样式。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
div{
color:red;
}
.blue{
color:blue;
}
</style>
</head>
<body>
<div class="blue">一个div</div>
</body>
</html>
关于优先级的相关介绍可以看这篇文章。这里直接给出结论:
权重相同怎么办?就近原则(靠下的,也就是后出现的):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
.blue{
color:blue;
}
.green{
color:green;
}
</style>
</head>
<body>
<div class="blue green">一个div</div>
</body>
</html>
或者使用 i m p o r t a n t important important:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>第一个网页</title>
<style>
.blue{
color:blue !important;
}
.green{
color:green;
}
</style>
</head>
<body>
<div class="blue green">一个div</div>
</body>
</html>
不过尽量不要使用这个……