通配选择器

可以与任何元素匹配,就像是一个通配符

/*每一个元素的字体都设置为红色*/
* {color: red;
}

元素选择器

指示文档元素的选择器。

/*为body的字体设置为红色*/
body {color: red;
}

分组

  • 选择器分组
h1, h2, h3 {color: red;
}

  • 声明分组
h1 {font: 18px Helvetica;color: purple;background: aqua;
}

  • 结合选择器和声明分组
h1, h2, h3 {font: 18px Helvetica;color: purple;background: aqua;
}

类选择器和ID选择器

独立于文档元素的方式来指定样式

  • 类选择器
.warning {font-weight: bold
}/*包含warning元素的p标签会apply下面的style*/
p.warning {font-weight: bold
}/*同时包含urgent和warning类名的元素会apply下面的style,类名顺序不限*/
.urgent.warning {font-weight: bold
}/*同时包含urgent和warning类名的元素P会apply下面的style*/
p.urgent.warning {font-weight: bold
}

  • ID选择器
#content {margin: 0;
}

ID选择器和类选择器的不同之处:

  1. 在一个HTML文档中,ID选择器会使用一次,而且仅一次。因此,如果有一个元素的id值为lead-para,那么该文档中所有其他元素的id值都不能是lead-para。(注: 浏览器通常并不检查HTML中ID的唯一性,这意味着如果你在HTML文档中设罝了多个有相同ID属性值的元素,就可能为这些元素应用相同的样式。)
  2. ID选择器不能结合使用,因为ID属性不允许有以空格分隔的词列表。

类选择器和ID选择器可能是区分大小写的,这取决于文档语言。HTML和 XHTML将类和ID值定义为区分大小写,所以类和ID值的大小写必须与文档中的相应值匹配。

属性选择器

  • 简单属性选择器

如果希望选择有某个属性的元素,而不论该属性的值是什么,可以使用一个简单属性选择器。

/*选择有class属性(值不限)的所有h1元素,设置其字体颜色为红色 */
h1[class] {color: red;
}/*将同时有href和title属性的HTML超链接的文本置为粗体*/
a[href][title] {font-weight: bold;
}

  • 根据具体属性值选择
/*设置具有href属性,并且属性值为http://www.w3.org/的a标签的font-size为200%*/
a[href="http://www.w3.org/"] {font-size: 200%;
}/*同时满足*/
a[href="http://www.w3.org/"][title="W3C Home"]{font-size: 200%;
}

这种格式要求必须与属性值完全匹配

  • 根据部分属性值选择

如果属性能接受词列表(词之间用空格分隔),可以根据其中的任意一个词进行选择。

<span class="barren rocky">Mercury</planet>
<span class="cloudy barren">Venus</planet>
<span class="life-bearing cloudy">Earth</planet>
/*为了把class属性中有barren的所有元素变为斜体,可以写作:*/
span[class~="barren"] {font-style: italic;
}

p.warning和p[class~="warning"]应用到HTML文档时是等价的

类型 描述
[foo^="bar"] 选择foo属性值以"bar"开头的所有元素
[foo$="bar"] 选择foo属性值以"bar"结尾的所有元素
[foo~="bar"] 选择foo属性值包含"bar"的所有元素(属性的值根据空格分隔,其中任意一个词能完全匹配bar)
[foo*="bar"] 选择foo属性值包含"bar"的所有元素(只要包含就可以了,任意位置都可以,不必是一个完整的单词)
  • 特定属性选择类型

用于选取带有以指定值开头的属性值的元素,该值必须是整个单词。

<h1 lang="en">Hello!</h1>
<p lang="en-us">Greetings!</p>
<div lang="en-au">G’day!</div>
<p lang="fr">Bonjour!</p>
<h4 lang="cy-en">Jrooana!</h4>/*上述标签前三个会变成红色,后两个还是黑色*/
*[lang|="en"] {color: red;
}

后代选择器

h1 em {color: gray;
}/*blockquote中包含的所有b(粗体)元素的文本颜色为灰色,另外正常段落中的所有粗体文本也为灰色*/
blockquote b, p b {color: gray;
}

后代选择器中,元素之间的层次间隔可以是无限的。

子元素选择器

h1>strong {color: red;
}

子元素选择器限制为只匹配树种直接相连的元素。

可以在同一个选择器中结合使用后代选择器和子选择器。

/*选择作为一个td元素子元素的所有p元素,这个td元素本身从table元素继承,该table元素有一个包含summary的class属性*/
table.suitimary td > p {color: red;
}

相邻兄弟选择器

和子结合符一样,相邻兄弟结合符旁边可以有空白符。

/*去除紧接在一个h1元素后出现的段落的上边距*/
h1+p {margin-top: 0;
}

需要注意的是:

  • 用一个结合符只能选择两个相邻兄弟中的第二个元素。因此,如果写作li+li {font-weight: bold;},只会把各列表中的第二个及以后的列表项变成粗体。
  • 两个元素之间的文本内容不会影响相邻兄弟结合符起作用。
<div>
<ol>
<li>List item 1</li>
<li>List item 1</li>
<li>List item 1</li>
</ol> This is some text that is part of the 'div'.
<ul>
<li>A list item</li>
<li>Another list item</li>
<li>Yet another list item</li>
</ul>
</div>
/*尽管两个列表间多了一行文本,不过还是可以用选择器ol+ul来匹配第二个列表。*/
ol+ul {color: red;
}

伪类和伪元素选择器

利用伪类和伪元素选择器,可以为文档中不一定具有存在的结构指定样式,或者为某些元素(甚至是文档本身)的状态所指示的幻像类指定样式。会根据另外某种条件而非文档结构向文档中的某些部分应用样式,而且无法通过研究文档的标记准确地推断出采用何种方式应用样式。

  • 伪类选择器
伪类名 描述
:link

指示作为超链接(即有一个href属性)并指向一个未访问地址的所有锚。

注意,有些浏览器可能会不正确地将:link解释为指向任何超链接,包括已访问和未访问的超链接

:visited

指示作为已访问地址超链接的所有锚

:focus 指示当前拥有输入焦点的元素,也就是说,可以接受键盘输入或者能以某种方式激活的元素
:hover

指示鼠标指针停留在哪个元素上。

例如,鼠标指针可能停留在一个超链接上,:hover就会指示这个超链接

:active

指示被用户输入激活的元素。

例如,鼠标指针停留在一个超链接上时,如果用户点击鼠标,就会激活这个超链接,将指示这个超链接

a {color: red;
}a:link {color: red;
}
/*两者是不同的,
a:link指示的是一个有href属性的,并且未访问过的所有a节点
a会应用到所有a标签
*/

a:link {color: blue;
}a:visited {color: red;
}a.external:link, a.external:visited {color: maroon;
}

伪类的顺序很重要,通常建议为link-visited-focus-hover-active。(这是由于样式有优先级的哦~~)

:link和:visited是静态的——第一次显示之后,它们一般不会在改变文档的样式。

:focus, :hover, :active是动态伪类。动态伪类可以应用到任何元素。

input:focus {background-color: silver;font-weight: bold;
}

  • 选择第一个子元素——:first-child,这也是一个静态伪类。
/*
作为某元素(可以是任意元素)的第一个子元素的所有P元素设置为粗体。
最常见的错误是认为p:first-child之类的选择器会选择p元素的第一个子元素。*/
p:first-child {font-weight: bold;
}

  •  根据语言选择—— :lang()伪类。

从对应的模式来讲,:lang()伪类就像是|=属性选择器。

*:lang(fr) { font-style: italic;
}

伪选择器和属性选择器之间的主要差别在于语言信息可以从很多来源得到,而且其中一些可能在元素之外。CSS2.1指出:

在HTML中,语言由lang属性和META元素的组合来确定,还可能包括协议提供的信息,如HTTP首部。XML使用一个xml:lang属性,另外可能还有其他文档语言特定的方法来确定语言。

因此,伪类比属性选择器稍微健壮一些。

结合伪类:

/*鼠标指针停留在未访问链接上时,可以让这些链接变成红色,而鼠标指针停留在已访问链接上时,链接变成紫红色。*/
a:link:hover {color: red;
}a:visited:hover {color: maroon;
}

用哪种顺序指定并不重要,写成a:hover:link会得到与a:link:hover一样的效果。

  • 伪元素选择器

就像伪类为锚指定幻象类一样,伪元素能够在文档中插入假想的元素,从而得到某种效果。CSS2.1中定义了4个伪元素:设置首字母样式、设置第一行样式、设置之前和之后的样式。

  • 设置首字母样式

用于设置一个块级元素首字母的样式,而且仅对该首字母设置样式。

/*让每个h2中第一个字母的大小是标题中其余字母大小的2倍*/
h2:first-letter {font-size: 200%;
}

这个规则会导致用户代理(浏览器)对一个假想的元素作出响应,这个假想元素包含每个h2中的第一个字母。可能如下所示:
<h2><h2:first-letter>T</h2:first-letter>his is an h2 element</h2>
:first-letter样式只应用到上例所示假想元素的内容。这个<h2:first:-letter>元素并不出现在文档源代码中。相反,它是由用户代理动态构造的,用于向相应文本块应用:first-letter样式。换句话说,<h2:first-letter>是一个伪元素。

  • 设置第一行样式

:first-line可以用来影响元素中第一个文本行。(第一行是指显示区域的第一行,所以浏览器窗口大小不同,第一行所代表的字符数量也是不同的。)

/*应用于每一段所显示的第一行文本。*/
p:first-line {color: red;
}

:first-letter, :first-line允许设置的CSS属性:

:first-letter :first-line
所有的font属性 所有的font属性
color color
所有background属性 所有background属性
所有margin属性  
所有padding属性  
所有border属性  
text-decoration text-decoration
vertical-align vertical-align
text-transform text-transform
line-height line-height
float  
letter-spacing letter-spacing
word-spacing  
  • 设置之前和之后的样式
h2:before {content: "before";color: red;
}h2:after {content: "after";color: red;
}

所有伪元素都必须放在出现该伪元素的选择器的最后面,如果写成p: first-line em就是不合法的,因为伪元素在选择器主体前面出现。

转载于:https://www.cnblogs.com/philipding/p/5425809.html

[读书笔记] CSS权威指南1: 选择器相关推荐

  1. CSS权威指南之选择器补充

    1.给拥有两种类属性的标签内加css样式 <!DOCTYPE html> <html lang="en"> <head><meta cha ...

  2. css权威指南第四版_16个非常有用的CSS伪选择器,你千万不要错过了!

    英文 | https://blog.bitsrc.io/css-pseudo-selectors-you-never-knew-existed-b5c0ddaa8116译文 | https://jue ...

  3. HTML笔记——④css样式表、选择器、常用属性

    HTML笔记--④css样式表.选择器.常用属性 一 CSS 1.1 CSS语法 1.2 CSS样式表 1.2.1 内部样式表 1.2.2 外部样式表 1.2.3 行内样式表 1.3 CSS常用属性 ...

  4. 《CSS权威指南》--附录

    <CSS权威指南>--附录 虽然一条规则中的声明可以按照任何顺序写出来,但我背后还是有一个优先级顺序: 1. display 及相关声明: 2. position 及相关的声明: 3. m ...

  5. css-day01笔记-CSS初识、基础选择器、文字和文本样式

    typora-copy-images-to: media 第01阶段.web基础:css-day01笔记-CSS初识.基础选择器.文字和文本样式 一.CSS层叠样式表 学习目标 理解 css的目的作用 ...

  6. [原]《Web前端开发修炼之道》-读书笔记CSS部分

    如何组织CSS-分层 应用 css 的能力分两部分:一部分是css的API,重点是如何用css控制页面内元素的样式:另一部分是css框架,重点是如何对 css 进行组织.如何组织 css 可以有多种角 ...

  7. 读书笔记《CSS权威指南》

    阅读本书主要目的: 自从学会CSS以来,虽然熟练掌握了其使用方法和技巧,但对其底层的原理和实现并不清晰,阅读本书想进一步系统化的学习和深入研究其本质,对这门前端基础语言从熟练使用到真正理解. 第1章 ...

  8. 《CSS权威指南第三版》第二章的读书笔记

    第2章 选择器 CSS的主要优点,就是很容易向所有同类型的元素应用一组样式. 1.    基本规则 修改所有h2: h2{color:gray;} a.    规则结构 每个规则有两个基本部分:选择器 ...

  9. 《CSS权威指南》读书笔记1

    第一章 CSS与文档 1.层叠(cascade) 2.块级元素 生成一个元素框 3.行内元素 HTML与XHTML中,块级元素不能嵌套在行内元素中:而CSS中,无限制. 4.结合CSS与HTML li ...

最新文章

  1. 未来安防人工智能需要攻克的几大技术方向
  2. Python 之协程
  3. Win32汇编ListBox最简Demo
  4. 31. Leetcode 82. 删除排序链表中的重复元素 II (链表-双指针)
  5. 安装 PrestaShop 1.6 - 详细的安装指南
  6. 在电脑上显示未知发布者怎么办_笔记本电脑显示器花屏怎么办?电脑屏幕花屏的解决方法...
  7. java ini_java读取ini格式的文件
  8. 三维点云学习(4)7-ransac 地面分割+ DBSCAN聚类比较
  9. Linux从入门到精通——Linux中的补充知识点
  10. 踏雪点圣火,冰雕刻五环!揭秘全球刷屏的冬奥开幕式黑科技
  11. deb包一般放在linux的哪个目录下,deb包安装目录详解
  12. 计算机同步时间解析错误,Windows时间同步时出错该怎么解决?
  13. c语言的switch中case,c语言switch中case语句
  14. el-tree 关键字搜索
  15. Java中的@Test注解
  16. Stata:今天你 “table” 了吗?图片版
  17. 【Lesson 12】中古风五声音阶——和弦使用技巧
  18. java 清除警告的注解_忽略警告注解@SuppressWarnings详解
  19. 基于高斯消元的BATS码的改进译码算法
  20. mapboxgl加载google地图、高德地图的在线切片地图

热门文章

  1. 竞品分析:抖音搜索VS快手搜索
  2. 关于疫情后,每家补助标准.docx
  3. FANUC机器人点动模式JOG相关警告代码含义及处理办法
  4. 教你一键解除锁屏模式
  5. 智能IC卡称重系统流程及技术要求
  6. matlab:Lagrange插值函数构造
  7. 《爸爸去哪儿3》为何要推这款App?
  8. 新概念二册 Lesson 40 food and talk进餐与交谈( 现在进行时vs将来进行时+虚拟语气假设现在)
  9. Opengl ES系列学习--顶点属性、顶点数组和缓冲区对象
  10. sketchfab中文网_meshlab中文版下载