Part 2-2 CSS选择器

2018-09-16  本文已影响0人  那谁_

CSS选择器概况

选择器{
  属性: 值; 
}

基础选择器

元素选择器
元素名{
    属性:值;
}
Id选择器
#id名称{
    属性:值;
}
------------------------
<p id="id名称">......</p>
类选择器
.类名{
    属性:值;
}
------------------------
<p class="类名 类名">......</p>
通配符选择器
*{
    属性:值;
}

关系选择器

后代选择器
选择器1 选择器2{
  属性: 值;
}
子元素选择器
选择器1 > 选择器2{
    属性: 值;
}
相邻兄弟选择器
选择器1 + 选择器2{
    属性:值;
}
通用兄弟选择器
选择器1 ~ 选择器2{
    属性:值;
}

伪类选择器

普通伪类选择器
选择器:关键字{
  属性: 值;
}
--------------------------------
<a href="#">内容......</a>
常用伪类关键字 作用
link a元素在未被访问前的CSS样式
visited a元素在被访问过后的CSS样式
hover 鼠标停浮在选择器上的CSS样式
active a元素在被激活时的CSS样式

结构性伪类选择器

E:first-child和E:last-child
<div>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</div>

<div>
<p>p4</p>
<p>p5</p>
<p>p6</p>
</div>
E:nth-child(n)和E:nth-last-child(n)
    <style>
        p,h1{
            height:30px;
            width:300px;
            border:1px solid #00A2E9;
        }
        p:nth-child(2n){
            background-color: #64b0ff;
        }
    </style>
-------------------------------------------
<div>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</div>

<div>
<p>p1</p>
<p>p2</p>
<p>p3</p>
</div>

<div>
<p>p1</p>
<h1>h1</h1>
<p>p2</p>
<p>p3</p>
</div>
运行效果
E:nth-of-type(n) 和E:nth-last-of-type(n)

伪元素选择器

<style>
  选择器::伪元素{
    content:" "
</style>
常用伪元素选择器 作用
::after 在选中的元素的后面创建一个子元素
::before 在选中的元素的前面创建一个子元素
::first-letter 在选中的元素的第一个字
::first-line 在选中的元素的第一行

属性选择器

<style>
  E[attribute]{
    属性:值
}
</style>
所有元素选择器 作用 出自
[attribute] 选中有该属性的该元素 CSS2
[attribute=value] 选中有该属性且属性的值等于Value的元素 CSS2
[attribute^=value] 选中有该属性且属性的值以Value开头的元素 CSS3
[attribute|=value] 选中有该属性且属性的值以Value开头的元素,但值必须是整个单词 CSS2
[attribute$=value] 选中有该属性且属性的值以Value结尾的元素 CSS3
[attribute*=value] 选中有该属性且属性的值包含Value CSS3
[attribute~=value] 选中有该属性且属性的值包含Value,但值必须是独立的 CSS2

选择器优化

对于浏览器来说,解析每种选择器所耗费的时间并不是一样的。所以当我们使用选择器的时候也有必要了解如何才能写出最优选择器.

选择器效率

根据网站效率专家 Steve Souders 指出,各种 CSS 选择器的效率由高至低排序如下

*   id选择器(#myid)
*   类选择器(.myclassname)
*   标签选择器(div,h1,p)
*   相邻选择器(h1 + p)
*   子选择器(ul > li)
*   后代选择器(li a)
*   通配符选择器(*)
*   属性选择器(a[rel="external"])
*   伪类选择器(a:hover,li:nth-child)

在以下代码中我们可以通过很多种方法去选中它,如p.red#test[class="red"]等等. 但如按照执行效率来,id选择器是最佳的,其次是类选择器,然后是元素选择,最后才是属性选择器.

<p id="test" class="red">我用来测试选择器的优化</p>

选择器解读顺序

浏览器解读选择器,遵循的原则是从选择器的右边到左边读取.
**例如

<style>
  .list .item .item-tt{
    color:"blue";
  }
</style>

这个选择器中,浏览器先找的是.item-tt,然后继续向父级元素寻找.item,再找.list,这样才完成了最终的选择器匹配.
所以如果路径链越短,效率也就相应有所提高.


选择器参考手册

首先是W3school的选择器参考,归类很详细,非常适合入门学习:

或者直接参考选择器手册:


参考资料

上一篇 下一篇

猜你喜欢

热点阅读