了解CSS | 青训营笔记

149 阅读8分钟

了解CSS | 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的的第3天

CSS是什么?

CSS(全称:Cascading Style Sheets)层叠样式表,是一种用来表现HTML标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。

image.png

CSS语法

1. 基本结构

1.png

2. 在页面中使用CSS

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

  • 外部样式表(External style sheet)
  • 内部样式表(Internal style sheet)
  • 内联样式(Inline style)

(1)外部样式表

当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 标签链接到样式表。 标签在(文档的)头部:

<head> 
    <link rel="stylesheet" type="text/css" href="mystyle.css"> 
</head>

浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。

外部样式表可以在任何文本编辑器中进行编辑。文件不能包含任何的 html 标签。样式表应该以 .css 扩展名进行保存。下面是一个样式表文件的例子:

hr {color:sienna;} 
p {margin-left:20px;} 
body {background-image:url("/images/back40.gif");}

(2)内部样式表

当单个文档需要特殊的样式时,就应该使用内部样式表。你可以使用 标签在文档头部定义内部样式表,就像这样:

<head> 
    <style> 
        hr {color:sienna;} 
        p {margin-left:20px;} 
        body {background-image:url("images/back40.gif");} 
    </style> 
</head>

(3) 内联样式

由于要将表现和内容混杂在一起,内联样式会损失掉样式表的许多优势。请慎用这种方法,例如当样式仅需要在一个元素上应用一次时。

要使用内联样式,你需要在相关的标签内使用样式(style)属性。Style 属性可以包含任何 CSS 属性。本例展示如何改变段落的颜色和左外边距:

<p style="color:sienna;margin-left:20px"> 这是一个段落。</p>

3. 选择器

  • 找出页面中的元素,以便给他们设置样式
  • 使用多种方式选择元素
    • 按照标签名、类名或id
    • 按照属性
    • 按照DOM树中的位置

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

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

(2) 标签选择器根据标签名称来选择 HTML 元素。

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

(3)id 选择器使用 HTML 元素的 id 属性来选择特定元素。 元素的 id 在页面中是唯一的,因此 id 选择器用于选择一个唯一的元素! 要选择具有特定 id 的元素,请写一个井号(#),后跟该元素的 id。

#para1 {
 text-align: center;
 color: red;
}

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

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

(5) 属性选择器为带有特定属性的 HTML 元素设置样式可以设置带有特定属性或属性值的 HTML 元素的样式。

  • [attribute] 选择器用于选取带有指定属性的元素。 下例选择所有带有 target 属性的 <a> 元素;
a[target] {
  background-color: yellow;
}
  • [attribute="value"] 选择器用于选取带有指定属性和值的元素。下例选取所有带有 target="_blank" 属性的 <a> 元素:
a[target="_blank"] { 
  background-color: yellow;
}
  • [attribute~="value"] 选择器选取属性值包含指定词的元素。下例选取 title 属性包含 "flower" 单词的所有元素:
[title~="flower"] {
  border: 5px solid yellow;
}

4. 伪类

伪类用于定义元素的特殊状态。 例如,它可以用于:

  • 设置鼠标悬停在元素上时的样式
  • 为已访问和未访问链接设置不同的样式
  • 设置元素获得焦点时的样式

5. 组合选择符

2.png

6. 颜色

CSS的颜色可以通过以下方法指定:

  • 十六进制颜色
  • RGB颜色
  • RGBA颜色
  • HSL色彩
  • HSLA颜色
  • 预定义/跨浏览器的颜色名称

7. 字体

(1) 字体的选择很重要

  • 选择正确的字体会对网站的用户体验产生巨大影响。
  • 正确的字体可以为您的品牌创造强有力的形象。
  • 使用易于阅读的字体很重要。字体为您的文本增加了价值。为字体选择正确的颜色和文本大小也很重要。

(2) 通用字体族

在 CSS 中,有五个通用字体族:

  • 衬线字体(Serif)- 在每个字母的边缘都有一个小的笔触。它们营造出一种形式感和优雅感。
  • 无衬线字体(Sans-serif)- 字体线条简洁(没有小笔画)。它们营造出现代而简约的外观。
  • 等宽字体(Monospace)- 这里所有字母都有相同的固定宽度。它们创造出机械式的外观。
  • 草书字体(Cursive)- 模仿了人类的笔迹。
  • 幻想字体(Fantasy)- 是装饰性/俏皮的字体。

所有不同的字体名称都属于这五个通用字体系列之一。

(3) font 属性

  • font-family 属性

font - family属性指定一个元素的字体。

font-family 可以把多个字体名称作为一个"回退"系统来保存。如果浏览器不支持第一个字体,则会尝试下一个。

有两种类型的字体系列名称:

family-name - 指定的系列名称:具体字体的名称,比如:"times"、"courier"、"arial"。

generic-family - 通常字体系列名称:比如:"serif"、"sans-serif"、"cursive"、"fantasy"、"monospace"。

使用某种特定的字体系列(Geneva)完全取决于用户机器上该字体系列是否可用;这个属性没有指示任何字体下载。因此,强烈推荐使用一个通用字体系列名作为后路。

注意:  每个值用逗号分开。

注意: 如果字体名称包含空格,它必须加上引号。在HTML中使用"style"属性时,必须使用单引号。

  • font-size 属性

font-size 属性设置文本的大小。

能否管理文字的大小,在网页设计中是非常重要的。但是,你不能通过调整字体大小使段落看上去像标题,或者使标题看上去像段落。

请务必使用正确的HTML标签,就<h1> - <h6>表示标题和<p>表示段落:

字体大小的值可以是绝对或相对的大小。

绝对大小:

  • 设置一个指定大小的文本
  • 不允许用户在所有浏览器中改变文本大小
  • 确定了输出的物理尺寸时绝对大小很有用

相对大小:

  • 相对于周围的元素来设置大小
  • 允许用户在浏览器中改变文字大小

Remark 如果你不指定一个字体的大小,默认大小和普通文本段落一样,是16像素(16px=1em)。

8. 文本

(1) line-height 属性

line-height 属性用于指定行之间的间距

normal默认。设置合理的行间距。
number设置数字,此数字会与当前的字体尺寸相乘来设置行间距。
length设置固定的行间距。
%基于当前字体尺寸的百分比行间距。
inherit规定应该从父元素继承 line-height 属性的值。
(2) text-align属性

text-align属性指定元素文本的水平对齐方式

left把文本排列到左边。默认值:由浏览器决定。
right把文本排列到右边。
center把文本排列到中间。
justify实现两端对齐文本效果。
inherit规定应该从父元素继承 text-align 属性的值。
(3) word-spacing属性

word-spacing属性增加或减少字与字之间的空白。

normal默认。定义单词间的标准空间。
length定义单词间的固定空间。
inherit规定应该从父元素继承 word-spacing 属性的值。
(4) letter-spacing 属性

letter-spacing 属性增加或减少字符间的空白(字符间距)

normal默认。规定字符间没有额外的空间。
length定义字符间的固定空间(允许使用负值)。
inherit规定应该从父元素继承 letter-spacing 属性的值。
(5) text-indent 属性

text-indent 属性规定文本块中首行文本的缩进。

length定义固定的缩进。默认值:0。
%定义基于父元素宽度的百分比的缩进。
inherit规定应该从父元素继承 text-indent 属性的值。
(6) text-decoration 属性

text-decoration 属性规定添加到文本的修饰,下划线、上划线、删除线等。

text-decoration 属性是以下三种属性的简写:

none默认。定义标准的文本。
underline定义文本下的一条线。
overline定义文本上的一条线。
line-through定义穿过文本下的一条线。
blink定义闪烁的文本。
inherit规定应该从父元素继承 text-decoration 属性的值。
(7) white-space属性

white-space属性指定元素内的空白怎样处理。

normal默认。空白会被浏览器忽略。
pre空白会被浏览器保留。其行为方式类似 HTML 中的
 标签。
nowrap文本不会换行,文本会在在同一行上继续,直到遇到
标签为止。
pre-wrap保留空白符序列,但是正常地进行换行。
pre-line合并空白符序列,但是保留换行符。
inherit规定应该从父元素继承 white-space 属性的值。

课后总结

第二堂课真的是干货爆棚了!!!足足两个半小时讲解CSS,虽然给10个小时也讲不完(因为CSS知识点

真的太多了orz),但是真的学到了很多也很前沿的东西!本节课最难的部分是属性的介绍,太多单词要记 住了~(梦回高中英语课 3.png)下节课继续加油~~