CSS学习笔记(Day2)

一、元素选择器

最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。
如果设置 HTML 的样式,选择器通常将是某个 HTML 元素,比如 p、h1、em、a,甚至可以是 html 本身

html {color:black;}
h1 {color:blue;}
h2 {color:silver;}

二、选择器分组

1.通过分组,创作者可以将某些类型的样式“压缩”在一起,这样就可以得到更简洁的样式表。

body, h2, p, table, th, td, pre, strong, em {color:gray;}

2.通配符选择器

CSS2 引入了一种新的简单选择器 - 通配选择器(universal selector),显示为一个星号(*)。该选择器可以与任何元素匹配,就像是一个通配符。例如,下面的规则可以使文档中的每个元素都为红色。

* {color:red;}

三、类选择器

类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也可以与其他元素结合使用。

1.在使用类选择器之前,需要修改具体的文档标记,以便类选择器正常工作,例如

<h1 class="important">
This heading is very important.
</h1>

<p class="important">
This paragraph is very important.
</p>

2.使用以下语法向这些归类的元素应用样式,即类名前有一个点号(.),然后结合通配选择器

*.important {color:red;}

3.结合元素选择器

类选择器可以结合元素选择器来使用。

p.important {color:red;}
选择器现在会匹配 class 属性包含 important 的所有 p 元素

4.多类选择器

在 HTML 中,一个 class 值中可能包含一个词列表,各个词之间用空格分隔。词的顺序无关紧要!

<p class="important warning">
This paragraph is a very important warning.
</p>

我们假设 class 为 important 的所有元素都是粗体,而 class 为 warning 的所有元素为斜体,class 中同时包含 important 和 warning 的所有元素还有一个银色的背景 。就可以写作如下

.important {font-weight:bold;}
.warning {font-style:italic;}
.important.warning {background:silver;}

通过把两个类选择器链接在一起,仅可以选择同时包含这些类名的元素(类名的顺序不限)。如果一个多类选择器包含类名列表中没有的一个类名,匹配就会失败。


四、ID选择器

1.ID选择器与类选择器的区别

首先ID选择器前有一个#号

其次ID选择器顾名思义引用的是id属性中的值,而不是class属性中的值

下面是一个实际例子

<html>
<head>
<style type="text/css">
#intro {font-weight:bold;}
</style>
</head>

<body>
<p id="intro">This is a paragraph of introduction.</p>

<p>This is a paragraph.</p>

<p>This is a paragraph.</p>

<p>This is a paragraph.</p>

<p>...</p>
</body>
</html>

2.更多ID选择器与类选择器的区别

a.只能在文档中使用一次:
与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次
b.不能使用 ID 词列表:
不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表
c.ID能包含更多含义:

类似于类,可以独立于元素来选择 ID。有些情况下,你知道文档中会出现某个特定 ID 值,但是并不知道它会出现在哪个元素上,所以你想声明独立的 ID 选择器。例如,你可能知道在一个给定的文档中会有一个 ID 值为 mostImportant 的元素。你不知道这个最重要的东西是一个段落、一个短语、一个列表项还是一个小节标题。你只知道每个文档都会有这么一个最重要的内容,它可能在任何元素中,而且只能出现一个。例如

<html>
<head>
<style type="text/css">
#mostImportant {color:red; background:yellow;}
</style>
</head>

<body>
<h1 >This is important!</h1>

<p>This is a paragraph.</p>

<p id="mostImportant">This is a paragraph.</p>

<p>This is a paragraph.</p>

<p>...</p>
</body>
</html>

3.类选择器和ID选择器可能是区分大小写的,其取决于文档的语言

五、属性选择器

属性选择器可以根据元素的属性及属性值来选择元素

1.简单的属性选择器

可以对具有某个属性的元素进行选择,写作

元素[属性] {声明;}

a[href] {color:red;}
也可以结合通配符选择器把具有某个属性的所有元素进行选择,例如

*[title] {color:red;}
还可以根据多个属性进行选择,只需将属性选择器链接在一起即可,例如,为了将同时有 href 和 title 属性的 HTML 超链接的文本设置为红色,可以这样写:

a[href][title] {color:red;}

2.根据具体属性值进行选择

除了选择拥有某些属性的元素,还可以进一步缩小选择范围,只选择有特定属性值的元素,也可以把多个属性-值选择器链接在一起来选择一个文档

a[href="http://www.w3school.com.cn/about_us.asp"] {color: red;}
a[href="http://www.w3school.com.cn/"][title="W3School"] {color: red;}

注意:属性与属性值必须完全匹配,如果属性值包含用空格分隔的值列表,匹配就可能出问题,例如

<p class="important warning">This paragraph is a very important warning.</p>

要选择该元素,则应该这样写

p[class="important warning"] {color: red;}

3.根据部分属性值选择

如果需要根据属性值中的词列表的某个词进行选择,则需要使用波浪号(~),例如想选择class属性中包含important的元素,可以用下面这个选择器做到这一点

p[class~="important"] {color: red;}

4.子串匹配属性选择器

  1. [abc^="def"]:选择 abc 属性值以 "def" 开头的所有元素
  2. [abc$="def"]:选择 abc 属性值以 "def" 结尾的所有元素
  3. [abc*="def"]:选择 abc 属性值中包含子串 "def" 的所有元素

任何属性都可以使用这些选择器

5.特定属性选择器

*[lang|="en"] {color: red;}

上面这个规则会选择 lang 属性等于 en 或以 en- 开头的所有元素。因此,以下示例标记中的前三个元素将被选中,而不会选择后两个元素

<p lang="en">Hello!</p>
<p lang="en-us">Greetings!</p>
<p lang="en-au">G'day!</p>
<p lang="fr">Bonjour!</p>
<p lang="cy-en">Jrooana!</p>

一般来说,[att|="val"] 可以用于任何属性及其值,假设一个 HTML 文档中有一系列图片,其中每个图片的文件名都形如 figure-1.jpgfigure-2.jpg。就可以使用以下选择器匹配所有这些图像

img[src|="figure"] {border: 1px solid gray;}

当然,这种属性选择器最常见的用途还是匹配语言值

六、后代选择器

后代选择器(descendant selector)又称为包含选择器
后代选择器可以选择作为某元素后代的元素

可以定义后代选择器来创建一些规则,使这些规则在某些文档结构中起作用,而在另外一些结构中不起作用,例如

h1 em {color:red;}

会把作为 h1 元素后代的 em 元素的文本变为 红色,其他 em 文本(如段落或块引用中的 em)则不会被这个规则选中

注意:有关后代选择器有一个易被忽视的方面,即两个元素之间的层次间隔可以是无限的;例如,如果写作 ul em,这个语法就会选择从 ul 元素继承的所有 em 元素,而不论 em 的嵌套层次多深

七、子元素选择器

1.如果不希望选择任意的后代元素,而是希望缩小范围,只选择某个元素的子元素,请使用子元素选择器(Child selector)

h1 > strong {color:red;}

将选择只作为 h1 元素子元素的 strong 元素

2.结合子元素选择器与后代选择器

table.company td > p

上面的选择器会选择作为 td 元素子元素的所有 p 元素,这个 td 元素本身从 table 元素继承,该 table 元素有一个包含 company 的 class 属性

八、相邻兄弟选择器

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

1.选择相邻兄弟

如果要增加紧接在 h1 元素后出现的段落的上边距,可以这样写

<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
h1 + p {margin-top:50px;}
</style>
</head>

<body>
<h1>This is a heading.</h1>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
<p>This is paragraph.</p>
</body>
</html>

2.结合其他选择器

html > body table + ul {margin-top:20px;}

这个选择器解释为:选择紧接在 table 元素后出现的所有兄弟 ul 元素,该 table 元素包含在一个 body 元素中,body 元素本身是 html 元素的子元素


Ref:www.w3school.com.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值