CSS选择器
- 因为html和css分离,那么就出现一个问题,如何选择一个元素,将样式添加给这个元素–>css选择器
- 选择器是css属性和html元素的连接桥梁,通过正确的选择器来找到想要操作的元素,添加一定的样式。
选择器{}
1.语法
选择器{key:value;key:value;}
可以批量选择选择器名称相同的元素
- 通过选择器类型不同,可以选择不同的html元素
2.CSS基础选择器分类
1) 标签选择器
- 1-1).说明:直接使用元素标签进行选择
- 例如:
<p></p>
- p{color:red;}
- 例如:
- 1-2).权重:11234<style>h1{color:red;}</style><h1>标签选择器</h1>
2) 类选择器
2-1).说明:
- 1).将html元素的class标签属性值当作选择器使用,需要在这个属性值前面加一个“.”
- 2).通过元素的类名,来选择元素,一个元素可以有多个类名,都代表这个元素
3).类名是元素class属性中的属性值,例如(下例中的sum即为类名)
12<p class='sum'></p><style>.sum{}</style>4).一个html元素可以有多个css属性值(可以有多个类名,每一个类名之间用空格隔开)
- 5).类名可以重复使用
- 2-2).权重:10
- 类选择器最前方一定要有点,例如:123456<style>.title{color:red;}</style><h1 class="title title1">标签选择器</h1><h1 class="title">标签选择器</h1>//以上class属性名为title中的文字颜色都讲被设置为红色
- 类选择器最前方一定要有点,例如:
3) id选择器
3-1).说明:
- 1).一个html元素,id属性值只能用一次,id在html中具有唯一性
- 2).类选择器最前方一定要有#
- 3).通过元素的id名,来选择元素
- 4).类名是元素id属性中的属性值(title/title1),例如:12345<style>#title{color:red;}</style><h1 id="title title1">id选择器</h1><h1 id="title">错误的,不识别</h1>
3-2).权重:100
总结(根据权重):
标签选择器相当于人的姓名,类选择器相当于人的名字,id选择器相当于身份证号码,是独一无二的。
4) 通配符选择器
4-1). 说明:
- 1).通过*匹配全部html元素,包括根元素
- 2).一般不使用,因为全部匹配耗性能
- 3)语法:*{}1*{key:value}
4-2). 权重<1,可被覆盖
5) 并集选择器
- 5-1).说明:
- 1). 你可以对选择器进行分组,这样,被分组的选择器就可以分享相同的声明。用逗号将需要分组的选择器分开。在下面的例子中,我们对所有的标题元素进行了分组。所有的标题元素都是绿色的。
- 例如:1h1,h2,h3,h4,h5,h6{color:green;}
6) 属性选择器
6-1).说明:
1). 对带有指定属性的 HTML 元素设置样式,可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。
- 下面的例子为带有 title 属性的所有元素设置样式:123[title]{color:red;}
- 下面的例子为带有 title 属性的所有元素设置样式:
2). 利用标签的属性名和属性值来选择html元素
- 3). 属性选择器在使用的时候,如果一个元素有两个类名,那么是不生效的。
- 4). 属性选择器我们一般不会使用class,因为class可以直接使用类选择器12345<!--有多少种方法只获取div?-->/*如果class值有两个,不能这样使用*/<style>[class=div1]{};</style><div class="div1 p1" id="div2"></div><p class="p1"></p>
6-2). 语法:
[标签属性名]{}
[标签属性名=属性值]{}
123456789<style>h1[title]{} //交集选择器//权重:标签+属性的权重=11[type]{}//权重:10[type=text]{}//权重:10</style><a href="" title="">link</a>
6-3). 权重:10
7)属性和值选择器
7-1). 说明:
1). 下面的例子为 title=”xx” 的所有元素设置样式:
1234[title=xx]{border:5px solid blue;}2). 设置表单的样式
12345678input[type="text"]{width:150px;display:block;margin-bottom:10px;background-color:yellow;font-family: Verdana, Arial;}
8)分组选择器
- 8-1).作用(应用场景):
- 1). 同一份css样式,可以一次性的添加给多个不同的html元素
8-2).语法:
- 选择器1,选择器2,选择器3{};例如:12.box,li,.p1{color: red}.box{color:green}
- 选择器1,选择器2,选择器3{};例如:
8-3).权重
- 1)分组选择器将不同的html分为一组,权重计算的时候都是独立计算,不会叠加。
9)交集选择器
- 9-1).一个元素具有两个属性(两种属性同属一个元素的时候),可以使用交集选择器来进行元素的准确选择
9-2).组成选择器的两部分,必须属于同一个
反例(错误用法):
123<style>h1.p1{} //-->什么都选择不到</style><p class="p1"></p><h1></h1>正例(正确用法):
123456789<p class='name1 name2' id='id1'></p><style>//第一种:p.name1{}//第二种:p#id1{}//第三种:.name1.name2{}</style>使用解说(正确用法):
- 1.组合选择器之间没有任何的符号和空格
- 2.标签选择器和其他选择器组合的时候,标签选择器要放在前面
- 3.交集选择器是两个选择器组合在一起,可以是1)标签和类名,2)标签和属性选择器,3)标签和id,4)两个类选择器。
9-3). 作用
- 精确查找元素,增加选择器的权重1234567891011121314151617181920212223242526<style>h1{}//标签选择器 权重:1[title]{}//属性选择器 权重:10[title=xx]{}//属性选择器 权重:10h2[title]{}//交集选择器 权重:11h2[title=xx]{}//交集选择器 权重:11</style><h1 title="xx"></h1><h2 title="xx"></h2><style>p.p1{}//交集选择器 权重:11</style><p class="p1"></p><style>.p1.p2{}//交集选择器 权重:20</style><p class="p1 p2"></p>
- 精确查找元素,增加选择器的权重
10)子集选择器
- 10-1). 说明:
- 1). 与后代选择器相比,子元素选择器只能选择作为某元素子元素的元素。
- 2). 父级选择器是用来确定范围的,
- 3). 子级选择器才是我们要添加样式的那个元素
- 4). 子级选择器必须是紧邻的父子关系
- 10-2). 语法:
- 父级选择器>子级选择器
- 10-3). 权重
- 所有选择器之和
|
|
11)后代选择器(派生选择器)
- 11-1). 说明:
- 1). 在一个根元素的范围内,查找到它的后代元素
- 2). 后代选择器在写的时候尽量控制在3个左右
- 3). 选择器过多浪费性能,不建议使用
11-2). 举例:
1). html结构:
1234<ol><li><strong>我是斜体字。这是因为 strong 元素位于 li 元素内。</strong></li></ol>2). 列表中的 strong 元素变为斜体字,而不是通常的粗体字,可以这样定义一个派生选择器:
1234li strong {font-style: italic;font-weight: normal;}3). 后代选择器在写的时候尽量控制在3个左右,选择器过多浪费性能:
12345678910<style>.div ul span{}</style><div class="div"><ul><li><span>只选择这个span元素</span></li></ul></div>
11-3). 语法:
- 祖辈选择器 要查找的后代选择器{};(中间用空格连接)
12)相邻兄弟选择器
- 12-1). 说明:
- 1). 相邻兄弟选择器可选择紧接在另一元素后的元素,且二者有相同父元素。
- 2). 通过各个元素选择弟弟选择器,两个选择器之间用“+”连接;例如:
h1 + p {margin-top:50px;}
12-2).语法:
- 哥哥选择器+弟弟选择器{};123456789101112<style>.list1+li{color:red;}//22222变为红色.list3+li{color:green;}//4444变为绿色</style><ul><li class="list1">11111</li><li>22222</li><li class="list3">33333</li><li>4444</li></ul>
- 哥哥选择器+弟弟选择器{};
12-3).权重:选择器之和
13)伪类选择器
- 13-1).说明:
- 1). 给一个元素添加某种状态
- 例如:鼠标经过时/获取焦点时/鼠标点击时
- 1). 给一个元素添加某种状态
- 13-2). 权重:10
13-3).举例:
1). a标签
CSS 伪类用于向某些选择器添加特殊的效果
12345678910111213<style>a:link {color: #FF0000}/* 未访问的链接 是默认状态*/a:visited {color: #00FF00}/* 已访问的链接 鼠标点击后的状态*/a:hover {color: #FF00FF}/* 鼠标移动到链接上 鼠标经过的状态*/a:active {color: #0000FF}/* 选定的链接 鼠标点击的状态*/</style><a href="javascript:void (0)">最初形态</a><a href="javascript:void 0">赛亚人形态</a><a href="javascript:">超级赛亚人形态</a>2). input标签
1234567<style>.input{border: 1px solid gainsboro}.input:hover{border-color: gray}.input:focus{border-color: blue}/*input:focus 鼠标聚焦后的状态,input独有的属性*/</style><input type="text" class="input">
14)CSS 伪元素
- 14-1). 说明:
- 1). 通过css代码向指定元素内添加假的(html中不存在的)元素
14-2). 举例:
CSS 伪元素用于向某些选择器设置特殊效果
- 1)before
- “before”会出现在div所有内容之前
- “:before”伪元素可以在元素的内容前面插入新内容。
下面的例子在每个
<h1>
元素前面插入内容:’我是一个伪元素’:1234h1:before{content:'我是一个伪元素';}2)after
- 会出现在div所有内容之后
使用伪元素的时候要保证两个前提 - 2-1)要有display这个属性
2-2)要有content这个属性,这个属性的属性值可以为空,但是引号不能少(
content:""
):12345678910111213141516171819202122<style>div{width: 300px;height: 300px;background-color: red;}div:before{display: block;content: "我是before";font-size: 40px;color: white;}div:after{display: block;content: "我是aftre";font-size: 40px;color: blue;}</style><div><span>我是span</span></div>网页显示:
“伪元素选择器”
注意
1.选择器的查找机制
- 选择器的查找机制是从右向左,例如:123456<style>.div ul li{}<!-- 第一步选择这个文档中所有的li第二步选择哪些li是ul下面的第三步选择哪些li是ul下面,ul还是.div1下面的 --></style>