CSS 学习笔记 (一) 选择器
一、选择器
元素选择器
元素选择器是最基本的选择器。也是最简单的选择器。可以选择某个或者某些标签
上面的 CSS 会将所有的 h1 和 h2 标签变成红色,背景变成灰色。
通配选择器
可以选择所有元素,或者说是整个文档
上面的选择器可以让整个文档变成红色
类选择器
选择一类元素,必须在标签上指定 class 的属性值。
这段 CSS 会选中下面 html 代码中的 p 标签和 text 标签:
注意,这里的选择器前面包含了一个星号(*
)这里的星号是通配符的含义,即任意元素的 class 属性中如果包含 warning 即会被选中。由于星号是通配符,所以也可省略掉,像下面这样:
效果是一样的。
你也可以指定某个特定的标签,例如:
这段 CSS 只会选中 p 标签,而不会选中 text 标签。不论 text 标签的 class 属性是否包含 warning
多类选择器
class 属性可以包含多个,如果需要选中某个含有两个 class 的标签,可以使用多类选择器。
上面这段 CSS 会选中即含有 warning 又含有 uegent 的标签。即下面的 h3 标签。
这两个词的顺序无关紧要,也可以写成 <h3 class = "uegent warning">
。
ID 选择器
选中某个 id 值得标签
上面这段 CSS 会选中 下面的 h1 标签
注意: 在同一个 html 页面中所有元素的 id 是不可重复的,但是 class 是可以重复的。
属性选择器
如果希望选择有某个属性的元素,而不关心具体的属性值。可以使用属性选择器。
简单属性选择器
上面的选择器可以选择所有含有 class 的 h1 标签。即下面第二个 h1 标签
当然也可以使用通配符。下面的 CSS 会选中所有含有 class 属性的标签。
还可以使用多个属性。下面的 CSS 会选中所有含有 id 和 class 的标签。必须是同时含有两个属性
属性值选择器
可以根据某个属性的具体值来选择标签。
上面的 CSS 表示,选择 id = first-h1
的 h1 标签。即下面的第一个 h1 标签
当然你也可以多个属性的值一起选择,比如:
注意: CSS 里的值必须是完全匹配。比如:
上面这段 CSS 只能选中 h2 标签,如果需要选择 h3 则需要写成:
属性的值必须是完全一样,才会选中标签
部分属性值选择器
上面提到的属性值选择器要求完全匹配,这里的部分属性值选择器要求部分值匹配即可。
这段 CSS 会选中下面的 html 代码中的第二个和第三个标签。因为这两个标签的 class 属性值中都含有"uegent"
子串匹配选择器
类似于正则表达式
特定属性选择器
这个选择器应该是最常见的选择器。以下面的 CSS 为例:
他会选中 lang 属性的值为 "en" 或者以 "en-"(注意:后面有个短线) 开头的元素。所以会选中下面的前两个 p 标签
PS:如果你不理解文档树结构,建议先了解下文档树结构再往下看
后代选择器
也称为包含选择器,或者上下文选择器,它可以选中某个标签下的某些标签。比如,选择 div 下的 p 标签,可以这样写:
上面的 CSS 会选中第一个 p 标签,而不会选中第二个 p 标签
当然并不局限于两个元素,也可以写成下面这样
子元素选择器
选中某个元素的子元素,与后代选择器的区别是,后代选择器可以选中某个元素的子元素,某个元素的子元素的子元素(子孙元素),而子元素选择器只能选择某个元素的子元素。
上面的元素可以选中 div 下的 span 标签,即第一个 span 标签,第二个则无效,而使用后代选择器可以选中两个 span 标签。
子元素选择器只选择一级,而后代是所有的后代,以及后代的后代
相邻兄弟选择器
选中紧接在一个元素后的元素。
上面这段 CSS 可以选中第二个 p 标签,即 div 后的元素。
相邻兄弟选择器可以和子元素选择器一起使用。例如:
伪类选择器
链接伪类
伪类选择器可以选择某些元素处于特定状态的元素。比如,可以为已经被点击过的 a 标签添加一个 CSS。
上面的 CSS 会应用到已经被访问过的 a 标签。对应的,还有一个,选择没有被点击的超链接。
上面的 CSS 会应用到没有被点击过的超链接上。注意,上面的 CSS 只会选中带有 href 属性的 a 标签。
当然也可以和其他选择器配合使用,比如:
动态伪类
选中获取到输入焦点的 a 标签。
选中鼠标指针悬停的 a 标签
选中鼠标点击的元素。PS 有兴趣的同学可以试试将这几个伪类同时用到同一个 a 标签上,看看会发生什么神奇的效果。
结构伪类
如果 class 属性中含有 first-item 则不被选中。例如下面的第一个 li 标签将不被选中
选中第一个元素。
同样还有选中最后一个元素的伪类
还有一个可以根据一个参数来选择第几个元素。
上面的 CSS 可以选中第 2n 个元素,即第 2、4、6、8、10... 位置的元素。如果想选奇数位置的元素,可以设置为:
如果想只选择第几个元素,可以直接写成具体的值,比如只选择第 5 个元素,可以设置为:
nth-child 可以接收一个 an+b 的参数,可以根据 a 和 b 的值计算具体的位置。
表单伪类
选中 任意被勾选/选中的 radio(单选按钮),checkbox(复选框),或者 option(select 中的一项)
上面的 CSS 会选中下面被勾选的选项
如果是 radio 可以这么写:
选中下面的一个勾选后的选项
valid 可以选中校验结果正确的元素。比如:
上面的 CSS 可以在输入框中输入正确的 email 的时候被选中。
当然,还可以选中校验结果不正确的元素。
伪元素选择器
伪元素选择器可以在文档中插入不存在的元素,从而达到某种效果。
设置首字母的样式。
上面的 CSS 可以设置所有 p 标签的首字母的样式。当然也可以设置首行的样式。
在元素前后插入内容
在 h1 标签之前插入"hello" 字符串。同样,也可以在某个元素后插入内容。
当然,伪类与伪元素不止上面说的这些,还有一些其他的选择器,如果需要了解更多,可以看一下参考文章里的博客
参考文章
版权声明: 本文为 InfoQ 作者【U+2647】的原创文章。
原文链接:【http://xie.infoq.cn/article/1612dc6316f6582abe2a59204】。文章转载请联系作者。
评论