选择器
要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器。
HTML页面中的元素就是通过CSS选择器进行控制的。
- 元素选择器
作用:通过元素选择器可以选择页面中的所有指定元素
语法:标签名{}
p{color:red} - id选择器
作用:通过元素的id属性值选中唯一的一个元素
语法:#id属性值{}
#p1{font-size=20px} - 选择器分组(并集选择器)
作用:通过选择器分组可以同时选中多个选择器对应的元素
语法:选择器1,选择器2,选择器N{}
/#p1,.p2,h1{background-color: yellow; - 类选择器,可以根据元素的class属性值选 取元素。
语法:.className { }
比如.hello会选中页面所有class属性为hello的元素。
5.通配选择器
作用:可以用来选中页面中的所有的元素
语法:*{}
*{color:red} - 复合选择器(交集选择器)
作用:可以选中同时满足多个选择器的元素
语法:选择器1选择器2选择器N{}
span.p3{background-color: yellow;
对于id选择器来说,不建议使用复合选择器
我们可以为元素设置class属性
它和id属性类似,只不过class属性可以重复
拥有相同class属性值的元素,我们说他们是一组元素
可以同时为一个元素设置多个class属性值,多个值之间使用空格隔开 - 子元素选择器
作用:选中指定父元素的指定子元素
语法:父元素 > 子元素
IE6及以下的浏览器不支持子元素选择器
选中id为d1的div中的p元素中的span元素*/
/#d1 p span{font-size: 50px;}
div > span{background-color: yellow;}
元素之间的关系
父元素:直接包含子元素的元素
子元素:直接被父元素包含的元素
祖先元素:直接或间接包含后代元素的元素,父元素也是祖先元素
后代元素:直接或间接被祖先元素包含的元素,子元素也是后代元素
兄弟元素:拥有相同父元素的元素叫做兄弟元素
为第一个p标签设置一个背景颜色为黄色
:first-child 可以选中第一个子元素
:last-child 可以选中最后一个子元素
:nth-child 可以选中任意位置的子元素
该选择器后边可以指定一个参数,指定要选中第几个子元素
even 表示偶数位置的子元素
odd 表示奇数位置的子元素
body>p:first-child{
background-color: yellow;
}
p:last-child{
background-color: yellow;
}
p:nth-child(even){
background-color: yellow;
}
*/
/*
:first-of-type
:last-of-type
:nth-of-type
和child类似,只不过child是在所有的子元素中找
而type是在当前类型的子元素中找
p:first-of-type{
background-color: yellow;
}
*/
p:last-of-type{
background-color: yellow;
}
兄弟元素选择器
/*
为span后的一个p元素设置一个背景颜色为黄色
后一个兄弟元素选择器
作用:可以选中一个元素后紧挨着的指定的兄弟元素
语法:前一个 + 后一个
span + p{
background-color: yellow;
}
*/
/*
选中后边的所有兄弟元素
语法:前一个 ~ 后边所有
*/
span ~ p{
background-color: yellow;
}
- 伪类专门用来表示元素的一种特殊的状态比如:访问过的超链接、普通的超链接、获取焦点的文本框当我们需要为处在这些特殊状态的元素设置样式时,就可以使用伪类
(1)正常链接
a:link
为没访问过的链接设置一个颜色为绿色
a:link{color: yellowgreen;}
(2)访问过的链接
a:visited 表示访问过的链接,浏览器是通过历史记录来判断一个链接是否访问过,由于涉及到用户的隐私问题,所以使用:visited伪类只能设置字体的颜色
为访问过的链接设置一个颜色为红色
a:visited{color: red;}
(3)鼠标滑过的链接
a:hover
为鼠标滑过的链接设置一个天蓝色
a:hover{color: skyblue;}
(4)正在点击的链接
a:active
为鼠标正在点击的链接设置黑色
a:active{color: black;}
a的伪类
涉及到a的伪类一共有四个
:link
:visited
:hover
:active
而这四个选择器的优先级是一样的
*/
a:link{
color: yellowgreen;
}
a:visited{
color: red;
}
a:hover{
color: orange;
}
a:active{
color: cornflowerblue;
}
在开发的时候一定要注意,搞清楚它的顺序,按照需求来操作
(5):hover和:active也可以为其它元素设置IE6中,不支持对超链接以外的元素设置:hover和:active
(6)获取焦点
:focus
文本框获取焦点以后,修改背景颜色为黄色
input:focus{background-color: yellow;}
(7)指定元素前
:before
一般它都需要结合content这个样式一起使用
通过content可以向before或after的位置添加一些内容
p:before{content: "我会出现在整个段落的最前边";
color: green;}
(8)指定元素后
:after
after表示元素最后边的部分
p:after{content: "我会出现在整个段落的最后边";
color: orange;}
(9)选中的元素
::selection
p::selection{background-color: orange;}
为p标签中选中的内容使用样式可以使用::selection伪类注意:这个伪类在火狐中需要采用另一种方式编写
(10) 为p中第一个字符来设置一个特殊的样式
p:first-letter{color: red;
font-size: 20px;}
(11)为p中的第一行设置一个背景颜色为黄色
p:first-line{background-color: yellow;}
- 属性选择器
作用:可以根据元素中的属性或属性值来选取指定元素
语法:
[属性名] 选取含有指定属性的元素
[属性名="属性值"] 选取含有指定属性值的元素
[属性名^="属性值"] 选取属性值以指定内容开头的元素
[属性名$="属性值"] 选取属性值以指定内容结尾的元素
[属性名*="属性值"] 选取属性值包含指定内容的元素
p[title]{
background-color: yellow;
}
*/
/*为title属性值是hello的元素设置一个背景颜色为黄色
p[title="hello"]{
background-color: yellow;
}
*/
/*为title属性值以ab开头的元素设置一个背景颜色为黄色
p[title^="ab"]{
background-color: yellow;
}
*/
/*为title属性值以c结尾的元素设置一个背景颜色
p[title$="c"]{
background-color: yellow;
}
*/
/*为title属性值包含c的元素设置一个背景颜色*/
p[title*="c"]{
background-color: yellow;
}
- 否定伪类
/*
为所有的p元素设置一个背景颜色为黄色,除了class值为hello的
否定伪类:
作用:可以从已选中的元素中剔除出某些元素
语法:
:not(选择器)
*/
p:not(.hello){
background-color: yellow;
}
- 样式的继承
<!--
像儿子可以继承父亲的遗产一样,在CSS中,祖先元素上的样式,也会被他的后代元素所继承
利用继承,可以将一些基本的样式设置给祖先元素,这样所有的后代元素将会自动继承这些样式
但是,并不是所有的样式都会被子元素所继承,比如:背景、边框、定位相关的样式都不会被继承
-->
<div style="background-color: yellow;">
<p>
我是p标签中的文字
<span>我是span中的文字</span>
</p>
</div>
<span>我是p元素外的span</span>
- 选择器的优先级
当使用不同的选择器,选中同一个元素时,并且设置相同的样式时,这时样式之间产生了冲突,最终到底采用哪个选择器定义的样式,由选择器的优先级(权重)决定,优先级高的优先显示
优先级的规则
内联样式,优先级1000
id选择器,优先级100
类和伪类,优先级10
元素选择器,优先级1
通配*,优先级0
继承的样式,没有优先级
当选择器中包含多种选择器时,需要将多种选择器的优先级相加,然后再比较
但是注意,选择器优先级计算不会超过他的最大的数量级,如果选择器的优先级一样,则使用靠后的样式,并集选择器的优先级是单独计算的
div, p, #p1, .hello{}
可以在样式的最后添加一个!important,则此时该样式将会获取一个最高的优先级,将会优先于所有的样式显示,甚至超过内联样式,但是在开发中,尽量避免使用!important
网友评论