CSS选择器

本篇大部分知识点源自Eric A.Mayer编著的《CSS权威指南》一书以及W3School教程网。
  • 元素选择器
  • 类选择器
  • ID选择器
  • 属性选择器
  • 使用文档结构
  1. 后代选择器
  2. 选择子元素
  3. 选择相邻兄弟元素
  • 伪类选择器
  • 伪类元素选择器
元素选择器是最基本最常见的选择器,选择器通常是某个HTML元素甚至HTML本身。
html {color:black;}
h1 {color:blue;}
h2 {color:silver;}

类选择器和ID选择器允许以一种独立于文档元素的方式来指定样式,可单独使用,也可与其他元素选择器结合使用。【需要适当的标记文档才可使用】

类选择器:
<h1 class="important">
This heading is very important.
</h1>
语法:
.important {color:red;}

ID选择器
<p id="intro">This is a paragraph of introduction.</p>
语法:
#intro {font-weight:bold;}

区别 1:ID只能在文档中使用一次
与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。
区别 2:不能使用 ID 词列表
不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。
区别 3:ID 能包含更多含义
类似于类,可以独立于元素来选择 ID。有些情况下,您知道文档中会出现某个特定 ID 值,但是并不知道它会出现在哪个元素上,所以您想声明独立的 ID 选择器。例如,您可能知道在一个给定的文档中会有一个 ID 值为 mostImportant 的元素。您不知道这个最重要的东西是一个段落、一个短语、一个列表项还是一个小节标题。您只知道每个文档都会有这么一个最重要的内容,它可能在任何元素中,而且只能出现一个。

理论上 HTML 的 id 属性不用来表达语义,仅仅是一个标识符,取值不会影响文档的语义;而 class 会被搜索引擎或是其它 UA 认为是用来表达语义的描述,取值需要更加谨慎。
对于 CSS 很简单,你如果希望样式仅用到一个元素下面,那你可以用 #id,如果想应用到一批类似元素下,就用 .class。

由于之前提到的元素选择器、类选择器和ID选择器中使用的语法是HTML、SVG、MathML文档特定的。SO CSS2引入属性选择器。(在XML文档中很有用)
语法:
img[alt] {border: 5px solid red;} /*对所有带有属性alt的图像应用样式*/
OR 根据具体属性值选择:
a[href="http://www.w3school.com.cn/"][title="W3School"] {color: red;} 
OR 根据部分属性值选择:
p[class~="important"] {color: red;} /*p的class中包含important即可*/
引入子串匹配属性选择器
[abc^="def"]  选择 abc 属性值以 "def" 开头的所有元素
[abc$="def"]  选择 abc 属性值以 "def" 结尾的所有元素
[abc*="def"]  选择 abc 属性值中包含子串 "def" 的所有元素
特定属性选择类型:
语法:
*[lang|="en"] {color: red;} /*选择 lang 属性等于 en 或以 en- 开头的所有元素*/
这种属性选择器最常见的用途还是匹配语言值。

使用文档结构:
后代选择器:
语法:
h1 em {color:red;} /*把作为h1元素后代的em元素的文本变为红色*/

选择子元素:
语法:
h1 > strong {color:red;} /*把第一个h1下面出现的strong元素变成红色*/
子选择器限制为只匹配树中直接相连的元素。

选择相邻兄弟元素:
语法:
h1 + p {margin-top:0px;} /*去除紧接在一个h1元素后出现的段落的上边距*/
选择紧接在一个h1元素后出现的所有段落,h1要与p元素有共同的父元素

伪类选择器
CSS 伪类用于向某些选择器添加特殊的效果。
1.链接伪类(锚伪类):
a:link {color: #FF0000}		/* 未访问的链接 */
a:visited {color: #00FF00}	/* 已访问的链接 */
a:hover {color: #FF00FF}	/* 鼠标移动到链接上 */
a:active {color: #0000FF}	/* 选定的链接 */

2. :first-child伪类:
例子1:
p:first-child {font-weight: bold;}
li:first-child {text-transform:uppercase;}
这里第一个规则将作为某元素第一个子元素的所有 p 元素设置为粗体。第二个规则将作为某个元素(在 HTML 中,这肯定是 ol 或 ul 元素)第一个子元素的所有 li 元素变成大写。
<div>
<p>These are the necessary steps:</p>
<ul>
<li>Intert Key</li>
<li>Turn key <strong>clockwise</strong></li>
<li>Push accelerator</li>
</ul>
<p>Do <em>not</em> push the brake at the same time as the accelerator.</p>
</div>

例子2:
<html>
<head>
<style type="text/css">
p > i:first-child {
  font-weight:bold;
  } 
</style>
</head>

<body>
<p>some <i>text</i>. some <i>text</i>.</p>
<p>some <i>text</i>. some <i>text</i>.</p>
</body>
</html>
这里选择器匹配所有p元素中的第一个i元素。

3.:lang伪类:
根据元素的语言来选择。
*:lang(fr) {font-style: italic;} /*将所有的法语元素变成斜体*/
伪类可结合:
a:link:hover {color:red;}

伪元素选择器:
就像伪类为锚指定幻象类一样,伪元素能够在文档内插入假想的元素,从而达到某种效果。
1.:first-letter伪元素:
p:first-letter
  {
  color:#ff0000;
  font-size:xx-large;
  }
2.first-line伪元素:
p:first-line
  {
  color:#ff0000;
  font-variant:small-caps;
  }
first-letter和first-line伪元素都只能应用于标记或段落之类的块级元素,不能应用于超链接等的行内元素。
另外,所有伪元素都必须放在出现该伪元素的选择器的最后面。
3.:before伪元素:
h1:before
  {
  content:url(logo.gif); /*在每个h1元素的内容之前加一幅图片*/
  }

4.:after伪元素:
h1:after
  {
  content:url(logo.gif); /*在每个h1元素的内容之后加一幅图片*/
  }





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值