css选择器

0.选择器优先级

CSS选择器的优先级顺序按照以下规则:

  1. !important:最高优先级的标志,添加在声明后面,会覆盖其他所有的样式。

  2. 行内样式:包含在HTML元素标签内的样式,会覆盖外部样式表和内部样式表中的样式。

  3. ID选择器:通过ID选择器选中的元素,具有比其他选择器更高的优先级。

  4. 类选择器、属性选择器和伪类选择器:这些选择器的优先级相同,如果同一元素同时出现这几种选择器,优先级按照后面的选择器计算。

  5. 元素选择器、伪元素选择器:这些选择器的优先级最低,只有在其他选择器相同时,才会使用元素选择器和伪元素选择器。

一、id选择器

要对某个特定的元素进行修饰可以使用 id 来定位它

<div id="box">
    ......
</div>
#box {
    background-color: pink;
}

二、类(class)选择器

可以定位多个元素,当对多个元素进行样式修饰的时候可以使用class

<div class="box">
    类
</div>
.box {
    color: red;
}

三、标签选择器

修改页面上所有标签的样式

a { color: red; }

四、后代选择器

后代选择器(descendant selector)又称为包含选择器。

  • 后代选取器(以空格分隔)

即两个元素之间的层次间隔可以是无限的。

<div>
    <ul>
        <li>
            <span></span>
        </li>
    </ul>
</div>
ul li {
    align-text: center;
}
ul span {
    font-size: 16px;
}   

五、相邻选择器

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

<div>
    <h1>
    </h1>
    <p>
    </p>
    <p>
    </p>
    <p>
    </p>
</div>
h1 + p {
    color: #ffff;
    font-size: 18px;
}
p+p {
    color: red;
}

用一个结合符只能选择两个相邻兄弟中的第二个元素。上述css代码(h1 + p)只能修改第一个p元素的样式,
(p + p)只能修改第2,3个p元素的样式

普通相邻兄弟选择器

普通兄弟选择器选取所有指定元素的相邻兄弟元素。

以下实例选取了所有 <div> 元素之后的所有相邻兄弟元素 <p> :

div~p
{
background-color:yellow;
}

六、子选择器

子选择器使用了大于号(子结合符)。子结合符两边可以有空白符,这是可选的

与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。

如果您不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素

<h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
<h1>This is <em>really <strong>very</strong></em> important.</h1>
h1 > strong {color:red;}
/* 这个规则会把第一个 h1 下面的两个 strong 元素变为红色,但是第二个 h1 中的 strong 不受影响*/

七、通配符选择器

通配符选择器用 * 号表示,它是所有选择器中作用范围最广的,能匹配页面中所有的元素。

* {
    padding: 0;
    margin: 0;
}
/* 清除所有 HTML 标记的默认边距 */

八、属性选择器

<p title="hello">
</p>
<p>
</p>
*[title] {
    color: red;
}
/* 把包含标题(title)的所有元素变为红色 */

attr可以是class ;元素自身的属性

[target=_blank] 选择带有 target="_blank" 属性的所有元素。
[class*="con"] 选择所有类名中带有con的元素
a[href^="https"]    选择其 src 属性值以 "https" 开头的每个 <a> 元素。
a[href$=".pdf"] 选择其 src 属性以 ".pdf" 结尾的所有 <a> 元素。
a[href*="w3school"] 选择其 href 属性值中包含 "abc" 子串的每个 <a> 元素
[attr=val]:选择属性"attr"等于val的所有元素;

[attr~=val]:选择属性"attr"包含val的所有元素;

[attr|=val]:选择属性"attr"以val开头的所有元素;

[attr*=“val”]:选择所有类名中含有"val"的元素
[attr*=“val-”]:选择所有类名中含有"val-"的元素

[attr^=“val-”]:选择所有类名中以"val-"开头的元素

[attr$="-val"]:选择所有类名中以"-val"结尾的元素

/*注:前者的三个选择器中,val 必须是单独的一个个体存在.*/

九、伪类选择

1.第一种伪类

1.    :first-child{} // 用来选择父元素下的第一个子元素。
**注意::first-child{}是根据父元素下所有子元素进行排序。**

2.    :last-child{}

3.    :nth-child(n){},(n为具体数字) // // 选中父元素下第n个子元素。

4.     :nth-child(n){} // 选中父元素下所有子元素,n为字母。

5.    :nth-child(2n){} 选中父元素下偶数行的子元素。

4.    :nth-child(even){} // 选中父元素下偶数行的子元素。

5.    :nth-child(2n+1){} // 选中父元素下奇数行的子元素。

6.    :nth-child(odd){} // 选中父元素下奇数行的子元素。
7.    :nth-child(a - n){} // 选中父元素下所有子元素的前a个元素,n为字母,a为数字
       :nth-child(n+b){} // 选中父元素下所有子元素的b个元素之后的所有元素,n为字母,b为数字

2.第二种

同类型

1.    first-of-type
/*
    :first-of-type{},用来选择父元素下的第一个子元素。
    注意::first-of-type{}是根据父元素下所有同类型的子元素进行排序。
*/

2.    last-of-type{} 

3.    nth-of-type(n){}  // 选中父元素下同类型的所有子元素,n为字母

4.    :nth-of-type(n){},(n为具体数字) // 选中父元素下同类型的第n个子元素

5.    :nth-of-type(2n){} // 选中父元素下同类型的所有偶数子元素,n为字母

6.    :nth-of-type(even){}

7.    :nth-of-type(2n+1){} // 选中父元素下同类型的所有奇数子元素,n为字母

8.    :nth-od-type(odd){}

9.

10.

3.第三种

:not(选择器)

<input type="text" value="0" />
<input type="text" value="2" />
<input type="text" class="no-pink" value="3"/>

 input[type="text"]:not(.no-pink) {
    display: block;
    width: 100px;
    height: 10px;
    margin-bottom: 10px;
    padding-left: 10px;
    color: pink;
}
/*input[type=“text”]的样式不作用到第三个input上*/

4.其余的

a:link {color:#FF0000;} /* 未访问的链接 */
a:visited {color:#00FF00;} /* 已访问的链接 */
a:hover {color:#FF00FF;} /* 鼠标划过链接 */
a:active {color:#0000FF;} /* 已选中的链接 */

/*
    注意: 在 CSS 定义中,a:hover 必须被置于 a:link 和 a:visited 之后,才是有效的。
    注意: 在 CSS 定义中,a:active 必须被置于 a:hover 之后,才是有效的。
    注意:伪类的名称不区分大小写。
*/
选择器 示例 示例说明
:checked input:checked 选择所有选中的表单元素
:disabled input:disabled 选择所有禁用的表单元素
:empty p:empty 选择所有没有子元素的p元素
:enabled input:enabled 选择所有启用的表单元素
:first-of-type p:first-of-type 选择的每个 p 元素是其父元素的第一个 p 元素
:in-range input:in-range 选择元素指定范围内的值
:invalid input:invalid 选择所有无效的元素
:last-child p:last-child 选择所有p元素的最后一个子元素
:last-of-type p:last-of-type 选择每个p元素是其母元素的最后一个p元素
:not(selector) :not(p) 选择所有p以外的元素
:nth-child(n) p:nth-child(2) 选择所有 p 元素的父元素的第二个子元素
:nth-last-child(n) p:nth-last-child(2) 选择所有p元素倒数的第二个子元素
:nth-last-of-type(n) p:nth-last-of-type(2) 选择所有p元素倒数的第二个为p的子元素
:nth-of-type(n) p:nth-of-type(2) 选择所有p元素第二个为p的子元素
:only-of-type p:only-of-type 选择所有仅有一个子元素为p的元素
:only-child p:only-child 选择所有仅有一个子元素的p元素
:optional input:optional 选择没有"required"的元素属性
:out-of-range input:out-of-range 选择指定范围以外的值的元素属性
:read-only input:read-only 选择只读属性的元素属性
:read-write input:read-write 选择没有只读属性的元素属性
:required input:required 选择有"required"属性指定的元素属性
:root root 选择文档的根元素
:target #news:target 选择当前活动#news元素(点击URL包含锚的名字)
:valid input:valid 选择所有有效值的属性
:link a:link 选择所有未访问链接
:visited a:visited 选择所有访问过的链接
:active a:active 选择正在活动链接
:hover a:hover 把鼠标放在链接上的状态
:focus input:focus 选择元素输入后具有焦点
:first-letter p:first-letter 选择每个<p> 元素的第一个字母
:first-line p:first-line 选择每个<p> 元素的第一行
:first-child p:first-child 选择器匹配属于任意元素的第一个子元素的 <]p> 元素
:before p:before 在每个<p>元素之前插入内容
:after p:after 在每个<p>元素之后插入内容
:lang(language) p:lang(it) 为<p>元素的lang属性选择一个开始值

十、伪元素选择器

伪元素种类

伪元素 作用
::first-letter 将样式添加到文本的首字母
::first-line 将样式添加到文本的首行
::before 在某元素之前插入内容
::after 在某元素之后插入内容
::before 选择符 在 指定的标签元素内部的 前面 插入内容 ;
::after 选择符 在指定的标签元素内部的 后面 插入内容 ;
 /*content 属性 : 上述两个选择器 必须设置 content 属性 ;
元素类型 : 上述两个选择器 添加 的元素 是 行内元素 ;
如果要为其配置宽高 , 需要 将显示模式 display 转为块级元素 block 或 行内块元素 inline-block ;
伪元素本质 : 在 dom 中看不到插入的元素 ;
权重 : 伪元素选择器 的权重 与 标签选择器 权重相同 , 权重为 1 ; */
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • CSS 伪类是用来添加一些选择器的特殊效果。 由于状态的变化是非静态的,所以元素达到一个特定状态时,它可能得到一个...
    动亿下阅读 1,202评论 0 0
  • css选择器大致分类 基本选择器:元素选择器,群组选择器, id选择器、class选择器 派生选择器:后代元素选择...
    交大小丑阅读 1,684评论 0 0
  • 派生选择器 2.p标签下的span标签添加样式,无需在span标签里面增加id或者class,方便,这种样式比起自...
    Jay_ZJ阅读 5,865评论 0 0
  • 标签选择器: h1, h2, p {} // 选择所有的h1,h2,p 类选择器 .content id选择器...
    边同学_abe0阅读 2,812评论 0 0
  • 首先看一个效果,注意地址栏的变化 然后思考一下,用css如何实现? css选择器的局限 选择器是css中的一大特色...
    XboxYan阅读 2,929评论 0 1

友情链接更多精彩内容