CSS学习

114 阅读5分钟

CSS 选择器

CSS 元素选择器

元素选择器根据元素名称来选择 HTML 元素。

实例

在这里,页面上的所有 <p> 元素都将居中对齐,并带有红色文本颜色:

p {
  text-align: center;
  color: red;
}

CSS id 选择器

id 选择器使用 HTML 元素的 id 属性来选择特定元素。

元素的 id 在页面中是唯一的,因此 id 选择器用于选择一个唯一的元素!

要选择具有特定 id 的元素,请写一个井号(#),后跟该元素的 id。

实例

这条 CSS 规则将应用于 id="para1" 的 HTML 元素:

#para1 {
  text-align: center;
  color: red;
}
<p id="para1">Hello World!</p>

注意:id 名称不能以数字开头。

CSS 类选择器

类选择器选择有特定 class 属性的 HTML 元素。

如需选择拥有特定 class 的元素,请写一个句点(.)字符,后面跟类名。

实例

在此例中,所有带有 class="center" 的 HTML 元素将为红色且居中对齐:

.center {
  text-align: center;
  color: red;
}
<p class="center">居中的红色段落。</p> 

还可以指定只有特定的 HTML 元素会受类的影响。

实例

在这个例子中,只有具有 class="center" 的 <p> 元素会居中对齐: 只对 p 标签起作用

p.center {
  text-align: center;
  color: red;
}
<h1 class="center">这个标题不受影响</h1>
<p class="center">这个段落将是红色并居中对齐的。</p> 

HTML 元素也可以引用多个类。

p.center {
  text-align: center;
  color: red;
}
p.large {
  font-size: 300%;
}
<p class="center large">本段将是红色、居中对齐,并使用大字体。</p> 

CSS 通用选择器

通用选择器(*)选择页面上的所有的 HTML 元素。

* {
  text-align: center;
  color: blue;
}

CSS 分组选择器

分组选择器选取所有具有相同样式定义的 HTML 元素。

h1 {
  text-align: center;
  color: red;
}

h2 {
  text-align: center;
  color: red;
}

可以写成

h1, h2 {
  text-align: center;
  color: red;
}

类选择器还是 ID 选择器?

类选择器,可以为任意多个元素指定类。类名 可以应用到更多元素。

区别 1:只能在文档中使用一次

与类不同,在一个 HTML 文档中,ID 选择器会使用一次,而且仅一次。

区别 2:不能使用 ID 词列表

不同于类选择器,ID 选择器不能结合使用,因为 ID 属性不允许有以空格分隔的词列表。

其他的选择器

CSS 后代选择器

后代选择器(descendant selector)又称为包含选择器。

后代选择器可以选择作为某元素后代的元素。


根据上下文选择元素

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

举例来说,如果您希望只对 h1 元素中的 em 元素应用样式,可以这样写:

h1 em {color:red;}

当然,也可以在 h1 中找到的每个 em 元素上放一个 class 属性,但是显然,后代选择器的效率更高。

CSS 子元素选择器

与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素。


选择子元素

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

例如,如果您希望选择只作为 h1 元素子元素的 strong 元素,可以这样写:

h1 > strong {color:red;}

这个规则会把第一个 h1 下面的两个 strong 元素变为红色,但是第二个 h1 中的 strong 不受影响:

<h1>This is <strong>very</strong> <strong>very</strong> important.</h1>
<h1>This is <em>really <strong>very</strong></em> important.</h1>

CSS 相邻兄弟选择器

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


相邻兄弟选择器使用了加号(+),即相邻兄弟结合符(Adjacent sibling combinator)。

li + li {font-weight:bold;}
<div>
  <ul>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
  </ul>
  <ol>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
  </ol>
</div>

最终效果:

image.png

请记住,用一个结合符只能选择两个相邻兄弟中的第二个元素。

上面这个选择器只会把列表中的第二个和第三个列表项变为粗体。第一个列表项不受影响。

如何添加 CSS

三种使用 CSS 的方法

有三种插入样式表的方法:

  • 外部 CSS
  • 内部 CSS
  • 行内 CSS

外部 CSS

通过使用外部样式表,您只需修改一个文件即可改变整个网站的外观!

每张 HTML 页面必须在 head 部分的 <link> 元素内包含对外部样式表文件的引用。

实例

外部样式在 HTML 页面 <head> 部分内的 <link> 元素中进行定义:

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>
<body>

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

</body>
</html>

内部 CSS

如果一张 HTML 页面拥有唯一的样式,那么可以使用内部样式表。

内部样式是在 head 部分的 <style> 元素中进行定义。

实例

内部样式在 HTML 页面的 <head> 部分内的 <style> 元素中进行定义

<!DOCTYPE html>
<html>
<head>
<style>
body {
  background-color: linen;
}

h1 {
  color: maroon;
  margin-left: 40px;
} 
</style>
</head>
<body>

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

</body>
</html>

行内 CSS

行内样式(也称内联样式)可用于为单个元素应用唯一的样式。

如需使用行内样式,请将 style 属性添加到相关元素。style 属性可包含任何 CSS 属性。

实例

行内样式在相关元素的 "style" 属性中定义:

<!DOCTYPE html>
<html>
<body>

<h1 style="color:blue;text-align:center;">This is a heading</h1>
<p style="color:red;">This is a paragraph.</p>

</body>
</html>

提示:行内样式失去了样式表的许多优点(通过将内容与呈现混合在一起)。请谨慎使用此方法。

多个样式表

如果在不同样式表中为同一选择器(元素)定义了一些属性,则将使用最后读取的样式表中的值。

假设某个外部样式表为 <h1> 元素设定的如下样式:

h1 {
  color: navy;
}

然后,假设某个内部样式表也为 <h1> 元素设置了如下样式:

h1 {
  color: orange;    
}

如果内部样式是在链接到外部样式表之后定义的,则 <h1> 元素将是橙色:

层叠顺序

当为某个 HTML 元素指定了多个样式时,会使用哪种样式呢?

页面中的所有样式将按照以下规则“层叠”为新的“虚拟”样式表,其中第一优先级最高:

  1. 行内样式(在 HTML 元素中)
  2. 外部和内部样式表(在 head 部分)
  3. 浏览器默认样式

因此,行内样式具有最高优先级,并且将覆盖外部和内部样式以及浏览器默认样式。