CSS选择器类型总结

1.通用选择器

一般用于给所有元素做一些通用性的样式设置,比如清除内边距、外边距等。但是效率比较低,尽量不要使用。

* {
margin: 0;
padding: 0;
}

2.元素选择器

也叫做“标签选择器”,用于选中一类标签进行样式设置。

div { color: #ff0000; }
span { font-size: 18px; }

3.类选择器

给元素添加class属性,通过.class属性值来选中元素。

  • 一个元素可以有多个class值,每个class值之间用空格隔开;
  • class值如果由多个单词组成,单词之间可以用中划线-下划线_,也可以使用驼峰标识;
  • 最好不要用标签名作为class值;
.box {
width: 100px;
height: 100px;
background-color: #ff0000;
}
<div class="box"></div>

4.id选择器

给元素添加id属性,通过#id属性值来选中元素。

  • 一个HTML文档里面的id值是唯一的,不能重复;
  • id值如果由多个单词组成,单词之间可以用中划线-下划线_,也可以使用驼峰标识;
  • 最好不要用标签名作为id的值;
#container { color: #ff0000; }
<div id="container"></div>

5.属性选择器

  • [attr]:选中拥有attr属性的元素;

    /* 选中拥有title属性的元素 */
    [title]: { color: #ff0000; }
    <div title="one">内容</div>
  • [attr=val]:选中attr属性值恰好等于val的元素;

    /* 选中title值恰好等于one的元素 */
    [title="one"] { color: #ff0000; }
    <div title="one">内容</div>
  • [attr*=val]:选中attr属性值包含单词val的元素;

    /* title属性值包含单词one的元素 */
    [title*="one"] { color: #ff0000; }
    <div title="one">内容1</div>
    <p title="aaaone">内容2</p>
    <span title="one-two">内容3</span>
  • [attr^=val]:选中attr属性值以val开头的元素;

    /* title属性值以单词one开头的元素 */
    [title^="one"] { color: #ff0000; }
    <div title="one">内容1</div>
    <span title="one-two">内容2</span>
    <p title="one two">内容3/p>
  • [attr|=val]:选中attr属性值恰好等于val或以单词val开头后面紧跟连字符-的元素;

    /* title属性值恰好等于one或者以单词one开头且后面跟着连字符-的元素 */
    [title|="one"] { color: #ff0000; }
    <div title="one">内容1</div>
    <span title="one-two">内容2</span>
  • [attr~=val]:选中attr属性值包含单词val的元素(单词之间必须用空格隔开);

    /* title属性值包含单词one的元素(单词one与其他单词之间必须用空格隔开) */
    /* 效果类似于类选择器 */
    [title~="one"] { color: #ff0000; }
    <div title="one">内容1</div>
    <p title="one two">内容2</p>
  • [attr$=val]:选中attr属性值以单词val结尾的元素;

    /* title属性值以单词one结尾的元素 */
    [title$="one"] { color: #ff0000; }
    <div title="two-one">内容1</div>
    <p title="two one">内容2</p>

6.后代选择器

选择指定元素下的子元素,包括直接和间接子元素,使用空格进行隔开。

/* 选择div下所有span元素 */
div span { color: #ff0000; }
<div>
<span>文字内容1</span>
<p>
<span>文字内容2</span>
</p>
</div>

7.子代选择器

选择指定元素下的直接子元素,不包括间接子元素,使用>

/* 选择div元素下的直接span元素 */
div > span { color: #ff0000; }
<div>
<span>文字内容1</span>
</div>

8.兄弟选择器

  • 相邻兄弟选择器+:选择某元素后面紧挨的兄弟元素;

    /* div元素后面紧挨的p元素 */
    div + p { color: #ff0000; }
    <div></div>
    <p>内容</p>
  • 全兄弟选择器~:选择某元素后面的兄弟元素,不需要紧挨;

    /* div元素后面的p元素 */
    div ~ p { color: #ff0000; }
    <div></div>
    <p>内容1</p>
    <p>内容2</p>

9.交集选择器

选择同时符合多个条件的元素。

/* 选择div元素且class为one的 */
div.one { color: #ff0000; } /* 选择div元素且class为one且title属性值等于one的 */
div.one[title="one"] { color: #ff0000; }
<div class="one" >内容1</div>
<div class="one" title="one">内容2</div>

10.并集选择器

不同选择条件,中间用,连接,进行全部选中。

/* 所有的div元素 + 所有class值有one的元素 + 所有title属性值等于one的元素 */
div, .one, [title="one"] { color: #ff0000; }
<div>内容1</div>
<span title="one">内容2</span>
<p class="one">内容3</p>

11.伪类选择器

11.1.动态伪类

  • :link:a:link未访问的链接;
  • :visited:a:visited已访问的链接;
  • :hover:a:hover鼠标移动到链接上;
  • :active:a:active激活的链接(鼠标在链接上长按未松开);
  • :focus:当前拥有输入焦点的元素(能接收键盘的输入,一般为input);

注意点:

  • :hover必须放在:link:visited后面才能完全生效;
  • :active必须放在:hover后面才能完全生效;
  • 建议编写顺序:link、visited、focus、hover、active;
  • 处理a元素,:hover:active也能用于其他元素;

11.2.目标伪类和语言伪类

  • 目标伪类::target

  • 语言伪类::lang

11.4.元素状态伪类

  • :enabled:可用的;
  • :disable:禁用的;
  • :checked:选中的;

11.5.结构伪类

  • :nth-child(n):父元素中的第n个子元素(n代表任意正整数和0,也可用even(偶数)和odd(奇数));

    /* 选中所有父元素下的第一个为p的元素 */
    p:nth-child(1) { color: #ff0000; }
  • :nth-last-child(n):与:nth-child相反,父元素中倒数第n个子元素;

    /* 选中父元素下倒数第一个为p的元素 */
    p:nth-last-child(1) { color: #ff0000; } /* 选中最后两个为p的元素 */
    p:nth-last-child(-n + 2) { color: #ff0000; }
  • nth-of-type(n):计数时只计算同种类型的元素;

    /* 选中父元素下所有p元素中的第二个p元素 */
    p:nth-of-type(2) { color: #ff0000; }
  • :nth-last-of-type(n):从后往前计算同种类型的元素;

    /* 选中父元素下所有p元素中倒数第二个p元素 */
    p:nth-last-of-type(2) { color: #ff0000; }
  • :first-child:等同于:nth-child(1)

  • :last-child:等同于:nth-last-child(1)

  • :first-of-type:等同于:nth-of-type(1)

  • :last-of-type:等同于:nth-last-of-type(1)

  • :only-child:是父元素中唯一的子元素;

  • :only-of-type:是父元素中唯一的指定类型的元素;

  • :empty:里面完全空白的元素,不包含子元素和内容;

  • :root:根元素,就是html元素;

11.6.否定伪类

:not()的格式是:not(x)表示除x以外的元素(x表示简单的选择器,可以是元素、通用、属性、类、id、伪类(除否定伪类)选择器等)。

/* 选中父元素下所有p元素不是第一个和最后一个的p元素 */
p:not(:first-of-type):not(:last-of-type) { color: #ff0000; }

注意::not()只支持简单选择器,不支持组合选择器,比如交集和并集选择器等。

CSS选择器类型总结的更多相关文章

  1. 第二天(CSS 选择器)

    1.常用的CSS选择器         类型选择器: 例如: p { color : red ; }         后代选择器: 例如: h2 span { font-weight : bold ; ...

  2. css格式比较及选择器类型总结

    在前端入门的前三天把网页制作过程中常用的一些标签和属性都认识和练习了一遍,能够做出简单模块的框架.就像老师说的网页制作就像建一栋大楼,html是砖和水泥,css是精装,js是完善各个功能.现在就开始进 ...

  3. css选择器

    常用css选择器,希望对大家有所帮助,不喜勿喷. 1.*:通用选择器 * { margin: 0; padding: 0; } 选择页面上的全部元素,通常用于清除浏览器默认样式,不推荐使用. 2.#i ...

  4. CSS选择器的权重与优先规则?

    我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...

  5. CSS系列:CSS选择器

    选择器(selector)是CSS中很重要的概念,所有HTML语言中的标记样式都是通过不同的CSS选择器来控制的.用户只需要通过选择对不同的HTML标签进行选择,并赋予各种样式声明,即可实现各种效果. ...

  6. 细说CSS选择器

    众所周知,CSS的一个核心特征就是能向文档中的一组元素类型应用某些规则.每个规则都有两个基本部分:选择器(selector)和声明块(declaration block).下图显示了规则的各个部分. ...

  7. CSS选择器详解

    选择器是CSS的核心,从最初的元素.class/id选择器,演进到伪元素.伪类,以及CSS3中提供的更丰富的选择器,定位页面上的任意元素开始变得愈发的简单. 1.元素选择器 这是最基本的CSS选择器, ...

  8. CSS和CSS选择器

    一:CSS CSS有三种书写形式(优先级从高到低) 1)行内样式:(内联样式)直接在标签style属性中书写 2)内页样式:在本网页的style标签中书写 3)外部样式:在单独的CSS文件中书写,然后 ...

  9. CSS 选择器(转)

    原文转自:http://www.cnblogs.com/xyzhanjiang/p/5447406.html CSS 选择器除了样式表匹配元素时需要用到,在使用 jQuery 等库的时候也可以利用 C ...

随机推荐

  1. [atARC084D]Small Multiple

    构造一张图:$\forall x$,向$10x$连一条边权为0的边,向$x+1$连1条边权为1的边,那么0到$i$的代价即为$i$各位数字之和 考虑到我们只关心于当前点的两个特征:1.模$n$的余数( ...

  2. [atARC085F]NRE

    令$(S_{a},S_{b})$表示$a_{i}\in S_{a}$且$b_{i}\in S_{b}$的i个数,那么答案相当于$S(0,1)+S(1,0)=S(0,1)+S(\{0,1\},0)-S( ...

  3. 洛谷 P3644 [APIO2015]八邻旁之桥(对顶堆维护中位数)

    题面传送门 题意: 一条河将大地分为 \(A,B\) 两个部分.两部分均可视为一根数轴. 有 \(n\) 名工人,第 \(i\) 名的家在 \(x_i\) 区域的 \(a_i\) 位置,公司在 \(y ...

  4. 手写Bitset优化

    一种优化方法,具体例子可以看这里 这里只是存一下手写Bitset的板子 struct Bitset { unsigned a[1600]; void reset() { memset(a,0,size ...

  5. Markdown 目录

    Markdown 目录 1. TOC TOC 全称为 Table of Content,自动列出全部标题. 用法: [toc] 在 Markdown 中,自动生成目录非常简单,只需要在恰当的位置添加 ...

  6. Matlab 代码注释

    Matlab 代码注释 一直在找类似doxygen一样将程序注释发表成手册的方法,现在发现,Matlab的publish功能自己就能做到. Publish 简介 并非所有注释都能作为文本进行输出,MA ...

  7. Nginx 动态增加扩展

    Nginx 动态增加扩展 1. 先查看目前nginx已加载模块 /home/nginx-1.18.0 # nginx -V nginx version: nginx/1.18.0 built by g ...

  8. 【Python小试】统计一条核酸序列中频数非0或为2的双核苷酸

    概念 双核苷酸由任意2个碱基组成 测试1 dna = "AATGATGAACGAC" #一一列举 dinucleotides = ['AA','AT','AG','AC', 'TA ...

  9. stlink 无法再keil中识别 按下复位键可以识别

    最近遇到一个很是头痛的问题 本来板子是好好的,就是从公司带回的家里 然后再次用stlink烧写程序的时候就出现了问题: 但是查看电脑端,上面是有stlink的 也就是电脑是好的, 我立刻又试了一下家中 ...

  10. C++ 德才论

    输入样例: 14 60 80 10000001 64 90 10000002 90 60 10000011 85 80 10000003 85 80 10000004 80 85 10000005 8 ...