css选择器
概述
选择器是用来快速便捷的查找某一元素的,一个html文档中这么多元素,属性,如果只使用获得某一元素然后遍历再获得子元素的方法那时不可想象的,可能随便查找一个元素都需要几十行代码。
而选择器就是为了简化查找操作的。他将几种常用的标签作为选择的key,只需要知道这些标签内部就会有一套算法帮助我们快速查找,并且还可以几个key连在一起查找。
选择器种类
*(清空) #(ID) .(类)
*(清空选择器)
这个选择器会选择所有元素,常被用作清空margin和padding
*{ |
#(ID选择器)
它会选择所有匹配的ID
例如<div id="gac_scont"></div>
css
#gac_scont{
border: 1px solid black;
}
.(类选择器)
类选择器会选择对应的类,例如<div class="DH7hPe"></div>
css
.DH7hPe
{
color: red;
}
X(类型),X[…](属性), x:…(伪类)
X是直接选择某种元素。例如a, img等。a{color: red;}
ul { margin-left: 0;}
X[attibute]是选择该元素的某些属性,则对这个元素进行某些动作,例如:a[title]//存在title属性
{
color: green;
}
a[href="http://strongme.cn" rel="external nofollow"]
{
color: #1f6053;
}
//如果链接时对应的链接则把链接中的文本设置成绿色
对于这些属性还可以使用类似正则表达式的形式。例如:a[href^="https"]//以https开头
a[href$=".jpg"]//链接以jpg结尾
a[href*="strongme"]//只要存在strongme的链接都可以通过,例如strongme.com,strongme.top
a[headers~= col1]//匹配属性有多个由空格分隔的值 选择其中一个
例如:
<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>
a[data-info~="external"]{ color: red;}
伪类选择器
选择器 | 说明 | 举例 |
---|---|---|
:first-child | 匹配父元素的第一个子元素 | p:first-child |
:link | 未被点击的链接 | a:link |
:visited | 已经被点击的链接 | a:visited |
:active | 按下但未被释放的元素 | a:active |
:hover | 鼠标悬浮在其上 | |
X:focus | 当前获得焦点的X元素 | |
lang(C) | lang属性是C的元素 | q:lang(sv) |
:first-line | 匹配元素的第一行 | p:first-line |
:first-letter | 匹配元素的第一个字母 | p:first-letter |
:before | 在元素生成之前插入的内容 | p:before{ content:”台词:”;} |
:after | 在元素生成之后插入的内容 | |
:enable | 匹配表单中激活的元素 | |
:disable | 匹配禁用的元素 | input[type="text"]:disabled { background:#ddd; } |
:checked | 选择表单中被选中的单选框或复选框 | |
:selection | 匹配当前选中的元素 | |
:root | 根元素 | |
:nth-child(n) | 第n个子元素 | |
:nth-last-child(n) | 倒数第n个子元素 | |
:first-of-type | 和该元素同种类的第一个子元素 | |
:empty | 匹配不包含任何子元素的元素 | p:empty |
组合选择器
- X,Y(多元素选择器): 匹配X或Y
- X Y: 首先匹配X,在符合X条件的元素中再用Y匹配
- X>Y: 匹配X,然后匹配在X下的直接后代
- X+Y: 选择X条件下选中元素中第一个Y元素
<div id="container"> |
优先级及性能
可能有多个选择器同时选中一个元素,这时候就需要考虑优先级来确定哪一个选择器生效了。一般来说越特殊优先级越高。我们通常使用1表示标签名选择器,10表示类选择器,100表示ID选择器。例如:div.test1 .span var 优先级 1+10 +10 +1
span#xxx .songs li 优先级1+100 + 10 + 1
#xxx li 优先级 100 + 1
一些建议: