通配选择器

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

/*每一个元素的字体都设置为红色*/
* {
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:;
}

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:;
}

需要注意的是:

  • 用一个结合符只能选择两个相邻兄弟中的第二个元素。因此,如果写作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就是不合法的,因为伪元素在选择器主体前面出现。

[读书笔记] CSS权威指南1: 选择器的更多相关文章

  1. [读书笔记] CSS权威指南2: 结构和层叠

    层叠样式表中最基本的一个方面可能就是层叠——冲突的声明要通过这个层叠过程排序,并由此确定最终的文档表示.这个过程的核心是选择器及其相关声明的特殊性,以及继承机制. 特殊性 对于每个规则,用户代理会计算 ...

  2. [读书笔记]Hadoop权威指南 第3版

    下面归纳概述了用于设置MapReduce作业输出的压缩格式的配置属性.如果MapReduce驱动使用了Tool接口,则可以通过命令行将这些属性传递给程序,这比通过程序代码来修改压缩属性更加简便. Ma ...

  3. css权威指南读书笔记

    今天翻手机,翻到了许久之前看css权威指南时的笔记,遂移到博客中来. 1.属性选择器p.one class名为one的p元素p[class][name] 含有class和name属性的p元素p[cla ...

  4. css权威指南读书笔记-第10章浮动和定位

    这一章看了之后真是豁然开朗,之前虽然写了圣杯布局和双飞翼布局,有些地方也是模糊的,现在打算总结之后再写一遍. 以下都是从<css权威指南>中摘抄的我认为很有用的说明. 浮动元素 一个元素浮 ...

  5. CSS权威指南学习笔记系列(1)CSS和文档

    题外话:HTML是一种结构化语言,而CSS是它的补充:这是一种样式语言.CSS是前端三板斧之一,因此学习CSS很重要.而我还是菜鸟,所以需要加强学习CSS.这个是我学习CSS权威指南的笔记,如有不对, ...

  6. 《CSS权威指南》基础复习+查漏补缺

    前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...

  7. CSS权威指南 - 层叠

    CSS权威指南 第三章结构与层叠 - 层叠 按权重及来源排序 1. Reader important declarations 2. Author important declarations 3. ...

  8. CSS权威指南(第三版)

    CSS权威指南(第三版).pdf 网盘: https://545c.com/file/24657411-425141851   获取码:  276922

  9. css权威指南学习笔记 —— css选择器

    1,选择器:选择器的一些基本常用规则基本都记得,w3c上都有,平时也常用,不常用的一些后代选择器经常就忘记了.一些归纳一下后代选择器,加深一下印象: a:子选择器:   p>a  a是直接是p的 ...

随机推荐

  1. HTML5 input事件检测输入框变化

    之前一直用change事件来监听输入框内容是否发生变化,只有当输入框失去焦点时才会触发,没想到html5还有个input事件,只要输入框内容发生变化就会立即触发,既然有这么好的东西我们干嘛放着不用呢, ...

  2. SQL --分组【Group By】

    Group By:对数据进行分组,分组之后的数据就是“分组信息”,和原来表的信息,就没有联系了, 分组之后,可以取到分组数据,就是根据什么字段分组,就能取到字段的名字了.还能使用聚合函数. Group ...

  3. sqlserver 服务器主体 无法在当前安全上下文下访问数据库

    今天使用sqlserver,发现了一个问题,就是使用 insert into 数据库名.dbo.表名(字段) values(值) 这样语句的时候,会返回错误: sqlserver 服务器主体 无法在当 ...

  4. WinForm(VB.NET)获取当前登录的用户名

    运行Windows Task Manager,查看Users标签,可以看到所有登录电脑的用户,现在Insus.NET想命名用VB.NET的WinForm程序去获取当前的用户名. 获取程序简单,可以参考 ...

  5. 精品干货丨APP常用导航框架

    文章目的:在整体上把握移动端App的导航框架,理解每种导航所具有的优点.局限性和其所适用的范围. 文章用心:典型APP案例(源码:http://www.jinhusns.com/Products/Do ...

  6. 编译gcc

    下载源码 自GNU FTP站下载GCC. 自Infrastructure页面下载四个库的源代码,即GMP.MPFR.MPC以及ISL(ISL非必需). 也可以不手工下载,执行源码中的./contrib ...

  7. 《Head First Java》——认识变量

    对象的引用 Book b = new Book(); Book c = new Book(); Book d = c;                   // 声明新的Book引用变量,但不创建新的 ...

  8. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  9. 微信公众平台关于fakeid和openid的解析

    今天在开发项目的时候遇到了个问题: 搞不清楚微信官方接口的fromusername(openid)和公众平台内每个粉丝所拥有的fakeid,于是在测试号中开始了对以上两项的研究,结果如下:   1.对 ...

  10. Git基本使用教程

    1.创建版本库      版本库又可以称为仓库(repository),可以简单理解为一个目录,在这个目录下的所有文件都可以被git管理起来,每个文件的新增.修改.删除Git都可以跟踪,以便在任何时刻 ...