一、什么是CSS
CSS是层叠样式表(Cascading Style Sheet )的简称是一种标记语言,用于设置页面的外观样式实现结构与样式分离,便于开发维
简单的说:
1、CSS 是一种描述 HTML 文档样式的语言。
2、CSS 描述应该如何显示 HTML 元素。
二、CSS 基础语法
1、CSS组成
CSS 规则集(rule-set)由选择器和声明块组成:
选择器指向您需要设置样式的 HTML 元素。
声明块包含一条或多条用分号分隔的声明。
每条声明都包含一个 CSS 属性名称和一个值,以冒号分隔。
多条 CSS 声明用分号分隔,声明块用花括号括起来。
实例
在此例中,所有 <p> 元素都将居中对齐,并带有红色文本颜色:
p {
color: red;
text-align: center;
}
例子解释
p
是 CSS 中的选择器(它指向要设置样式的 HTML 元素:<p>)。color
是属性,red
是属性值text-align
是属性,center
是属性值
2、CSS 选择器
CSS 选择器用于“查找”(或选取)要设置样式的 HTML 元素。
我们可以将 CSS 选择器分为五类:
(1)CSS 元素选择器
元素选择器根据元素名称来选择 HTML 元素。
实例
在这里,页面上的所有 <p> 元素都将居中对齐,并带有红色文本颜色:
p {
text-align: center;
color: red;
}
(2)CSS id 选择器
id 选择器使用 HTML 元素的 id 属性来选择特定元素。
元素的 id 在页面中是唯一的,因此 id 选择器用于选择一个唯一的元素!
要选择具有特定 id 的元素,请写一个井号(#),后跟该元素的 id。
实例
这条 CSS 规则将应用于 id="para1" 的 HTML 元素:
#para1 {
text-align: center;
color: red;
}
注意:id 名称不能以数字开头。
(3)CSS 类选择器
类选择器选择有特定 class 属性的 HTML 元素。
如需选择拥有特定 class 的元素,请写一个句点(.)字符,后面跟类名。
实例
在此例中,所有带有 class="center" 的 HTML 元素将为红色且居中对齐:
.center {
text-align: center;
color: red;
}
实例
在这个例子中,只有具有 class="center" 的 <p> 元素会居中对齐:
p.center {
text-align: center;
color: red;
}
HTML 元素也可以引用多个类。
实例
在这个例子中,<p> 元素将根据 class="center" 和 class="large" 进行样式设置:
<p class="center large">这个段落引用两个类。</p>
注意:类名不能以数字开头!
(4)CSS 通用选择器
通用选择器(*)选择页面上的所有的 HTML 元素。
实例
下面的 CSS 规则会影响页面上的每个 HTML 元素:
<p class="center large">这个段落引用两个类。</p>
(5)CSS 分组选择器
分组选择器选取所有具有相同样式定义的 HTML 元素。
请看下面的 CSS 代码(h1、h2 和 p 元素具有相同的样式定义):
h1 {
text-align: center;
color: red;
}
h2 {
text-align: center;
color: red;
}
p {
text-align: center;
color: red;
}
最好对选择器进行分组,以最大程度地缩减代码。
如需对选择器进行分组,请用逗号来分隔每个选择器。
实例
在这个例子中,我们对上述代码中的选择器进行分组:
h1, h2, p {
text-align: center;
color: red;
}
选择器总结
3、如何添加 CSS
当浏览器读到样式表时,它将根据样式表中的信息来格式化 HTML 文档。
三种使用 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 扩展名保存。
外部 .css 文件不应包含任何 HTML 标签。
"mystyle.css" 是这样的:
<!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>
注意:请勿在属性值和单位之间添加空格(例如 margin-left: 20 px;
)。正确的写法是:margin-left: 20px;
内部 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> 元素将是橙色:
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
<style>
h1 {
color: orange;
}
</style>
</head>
层叠顺序
当为某个 HTML 元素指定了多个样式时,会使用哪种样式呢?
页面中的所有样式将按照以下规则“层叠”为新的“虚拟”样式表,其中第一优先级最高:
- 行内样式(在 HTML 元素中)
- 外部和内部样式表(在 head 部分)
- 浏览器默认样式
4、CSS 注释
CSS注释
注释用于解释代码,以后在您编辑源代码时可能会有所帮助。
浏览器会忽略注释。
位于 <style>
元素内的 CSS 注释,以 /*
开始,以 */
结束:
实例
/* 这是一条单行注释 */
p {
color: red;
}
注释能横跨多行:
实例
/* 这是
一条多行的
注释 */
p {
color: red;
}
HTML 和 CSS 注释区别
从 HTML 教程中,您学习到可以使用 <!--...-->
语法在 HTML 源代码中添加注释。
5、CSS背景属性
在本节中,您将学习如下 CSS 背景属性:
- background-color
- background-image
- background-repeat
- background-attachment
- background-position
background-color
属性指定元素的背景色。
实例
页面的背景色设置如下:
body {
background-color: lightblue;
}
通过 CSS,颜色通常由以下方式指定:
- 有效的颜色名称 - 比如 "red"
- 十六进制值 - 比如 "#ff0000"
- RGB 值 - 比如 "rgb(255,0,0)"
不透明度 / 透明度
opacity 属性指定元素的不透明度/透明度。取值范围为 0.0 - 1.0。值越低,越透明:
实例
div {
background-color: green;
opacity: 0.3;
}
- 注意:使用
opacity
属性为元素的背景添加透明度时,其所有子元素都继承相同的透明度。这可能会使完全透明的元素内的文本难以阅读。
如果您不希望对子元素应用不透明度,例如上面的例子,请使用 RGBA 颜色值。
CSS 背景图像
background-image
属性指定用作元素背景的图像。
默认情况下,图像会重复,以覆盖整个元素。
实例
页面的背景图像可以像这样设置:
body { background-image: url("paper.gif"); }
CSS background-repeat
默认情况下,background-image
属性在水平和垂直方向上都重复图像。
某些图像应只适合水平或垂直方向上重复,否则它们看起来会很奇怪,如下所示:
实例
body { background-image: url("gradient_bg.png"); }
CSS background-repeat
默认情况下,background-image
属性在水平和垂直方向上都重复图像。
某些图像应只适合水平或垂直方向上重复,否则它们看起来会很奇怪,如下所示:
实例
body { background-image: url("gradient_bg.png"); }
CSS background - 简写属性
如需缩短代码,也可以在一个属性中指定所有背景属性。它被称为简写属性。
而不是这样写:
body { background-color: #ffffff; background-image: url("tree.png"); background-repeat: no-repeat; background-position: right top; }
您能够使用简写属性 background
:
实例
使用简写属性在一条声明中设置背景属性:
body { background: #ffffff url("tree.png") no-repeat right top; }
6、CSS 边框属性
CSS border
属性允许您指定元素边框的样式、宽度和颜色。
CSS 边框样式
border-style
属性指定要显示的边框类型。
允许以下值:
dotted
- 定义点线边框dashed
- 定义虚线边框solid
- 定义实线边框double
- 定义双边框groove
- 定义 3D 坡口边框。效果取决于 border-color 值ridge
- 定义 3D 脊线边框。效果取决于 border-color 值inset
- 定义 3D inset 边框。效果取决于 border-color 值outset
- 定义 3D outset 边框。效果取决于 border-color 值none
- 定义无边框hidden
- 定义隐藏边框
border-style
属性可以设置一到四个值(用于上边框、右边框、下边框和左边框)。
实例
演示不同的边框样式:
p.dotted {border-style: dotted;} p.dashed {border-style: dashed;} p.solid {border-style: solid;} p.double {border-style: double;} p.groove {border-style: groove;} p.ridge {border-style: ridge;} p.inset {border-style: inset;} p.outset {border-style: outset;} p.none {border-style: none;} p.hidden {border-style: hidden;} p.mix {border-style: dotted dashed solid double;}
CSS 边框宽度
border-width
属性指定四个边框的宽度。
可以将宽度设置为特定大小(以 px、pt、cm、em 计),也可以使用以下三个预定义值之一:thin、medium 或 thick:
CSS 边框颜色
border-color
属性用于设置四个边框的颜色。
可以通过以下方式设置颜色:
- name - 指定颜色名,比如 "red"
- HEX - 指定十六进制值,比如 "#ff0000"
- RGB - 指定 RGB 值,比如 "rgb(255,0,0)"
- HSL - 指定 HSL 值,比如 "hsl(0, 100%, 50%)"
- transparent
注释:如果未设置 border-color
,则它将继承元素的颜色。
CSS 边框 - 单独的边
从上一章的例子中,您已经看到可以为每一侧指定不同的边框。
在 CSS 中,还有一些属性可用于指定每个边框(顶部、右侧、底部和左侧):
CSS Border - 简写属性
就像您在上一章中所见,处理边框时要考虑许多属性。
为了缩减代码,也可以在一个属性中指定所有单独的边框属性。
border
属性是以下各个边框属性的简写属性:
border-width
border-style
(必需)border-color
CSS 圆角边框
border-radius
属性用于向元素添加圆角边框:
CSS 外边距
CSS margin
属性用于在任何定义的边框之外,为元素周围创建空间。
通过 CSS,您可以完全控制外边距。有一些属性可用于设置元素每侧(上、右、下和左)的外边距。
Margin - 单独的边
CSS 拥有用于为元素的每一侧指定外边距的属性:
margin-top
margin-right
margin-bottom
margin-left
所有外边距属性都可以设置以下值:
- auto - 浏览器来计算外边距
- length - 以 px、pt、cm 等单位指定外边距
- % - 指定以包含元素宽度的百分比计的外边距
- inherit - 指定应从父元素继承外边距
提示:允许负值。
外边距合并
外边距合并(叠加)是一个相当简单的概念。但是,在实践中对网页进行布局时,它会造成许多混淆。
简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。
CSS 内边距
CSS padding
属性用于在任何定义的边界内的元素内容周围生成空间。
通过 CSS,您可以完全控制内边距(填充)。有一些属性可以为元素的每一侧(上、右、下和左侧)设置内边距。
7、CSS 设置高度和宽度
height
和 width
属性用于设置元素的高度和宽度。
height 和 width 属性不包括内边距、边框或外边距。它设置的是元素内边距、边框以及外边距内的区域的高度或宽度。
CSS 高度和宽度值
height
和 width
属性可设置如下值:
auto
- 默认。浏览器计算高度和宽度。length
- 以 px、cm 等定义高度/宽度。%
- 以包含块的百分比定义高度/宽度。initial
- 将高度/宽度设置为默认值。inherit
- 从其父值继承高度/宽度。-
设置 max-width
max-width
属性用于设置元素的最大宽度。可以用长度值(例如 px、cm 等)或包含块的百分比(%)来指定 max-width(最大宽度),也可以将其设置为 none(默认值。意味着没有最大宽度)。
当浏览器窗口小于元素的宽度(500px)时,会发生之前那个
<div>
的问题。然后,浏览器会将水平滚动条添加到页面。在这种情况下,使用
max-width
能够改善浏览器对小窗口的处理。提示:将浏览器窗口拖动到小于500px的宽度,以查看两个 div 之间的区别!
-
8、文本颜色
color
属性用于设置文本的颜色。颜色由以下值指定:
- 颜色名 - 比如 "red"
- 十六进制值 - 比如 "#ff0000"
- RGB 值 - 比如 "rgb(255,0,0)"
查看 CSS 颜色值,以获取可能颜色值的完整列表。
页面的默认文本颜色是在 body 选择器中定义的。
文本对齐
text-align
属性用于设置文本的水平对齐方式。
文本可以左对齐或右对齐,或居中对齐。
下例展示了居中对齐以及左右对齐的文本(如果文本方向是从左到右,则默认为左对齐;如果文本方向是从右到左,则默认是右对齐):
文本方向
direction
和 unicode-bidi
属性可用于更改元素的文本方向:
垂直对齐
vertical-align
属性设置元素的垂直对齐方式。
本例演示如何设置文本中图像的垂直对齐方式:
文字装饰
text-decoration
属性用于设置或删除文本装饰。
text-decoration: none;
通常用于从链接上删除下划线:
文本转换
text-transform
属性用于指定文本中的大写和小写字母。
它可用于将所有内容转换为大写或小写字母,或将每个单词的首字母大写:
文字缩进
text-indent
属性用于指定文本第一行的缩进:
CSS font-family 属性
在 CSS 中,我们使用 font-family 属性规定文本的字体。
font-family 属性应包含多个字体名称作为“后备”系统,以确保浏览器/操作系统之间的最大兼容性。请以您需要的字体开始,并以通用系列结束(如果没有其他可用字体,则让浏览器选择通用系列中的相似字体)。字体名称应以逗号分隔。
注释:如果字体名称不止一个单词,则必须用引号引起来,例如:"Times New Roman"。
9、字体样式、 图标、链接
font-style
属性主要用于指定斜体文本。
此属性可设置三个值:
- normal - 文字正常显示
- italic - 文本以斜体显示
- oblique - 文本为“倾斜”(倾斜与斜体非常相似,但支持较少)
如何添加图标
向 HTML 页面添加图标的最简单方法是使用图标库,比如 Font Awesome。
将指定的图标类的名称添加到任何行内 HTML 元素(如 <i> 或 <span>)。
下面的图标库中的所有图标都是可缩放矢量,可以使用 CSS进行自定义(大小、颜色、阴影等)。
设置链接样式
链接可以使用任何 CSS 属性(例如 color
、font-family
、background
等)来设置样式。
实例
a { color: hotpink; }
此外,可以根据链接处于什么状态来设置链接的不同样式。
四种链接状态分别是:
a:link
- 正常的,未访问的链接a:visited
- 用户访问过的链接a:hover
- 用户将鼠标悬停在链接上时a:active
- 链接被点击时
HTML 列表和 CSS 列表属性
在 HTML 中,列表主要有两种类型:
- 无序列表(<ul>)- 列表项用的是项目符号标记
- 有序列表(<ol>)- 列表项用的是数字或字母标记
CSS 列表
CSS 列表属性使您可以:
- 为有序列表设置不同的列表项标记
- 为无序列表设置不同的列表项标记
- 将图像设置为列表项标记
- 为列表和列表项添加背景色
10、CSS 表格
表格边框
如需在 CSS 中设置表格边框,请使用 border
属性。
全宽表格
在某些情况下,上表似乎很小。如果您需要一个可以覆盖整个屏幕(全宽)的表格,请为 <table> 元素添加 width: 100%:
双边框
请注意上面的表格有双边框。这是因为表格和 th、td 元素都有单独的边框。
11、CSS 布局 - position 属性
12、CSS 布局 - 浮动和清除
CSS 布局 - 浮动和清除
CSS float
属性规定元素如何浮动。
CSS clear
属性规定哪些元素可以在清除的元素旁边以及在哪一侧浮动。
float 属性
float
属性用于定位和格式化内容,例如让图像向左浮动到容器中的文本那里。
float
属性可以设置以下值之一:
- left - 元素浮动到其容器的左侧
- right - 元素浮动在其容器的右侧
- none - 元素不会浮动(将显示在文本中刚出现的位置)。默认值。
- inherit - 元素继承其父级的 float 值
最简单的用法是,float
属性可实现(报纸上)文字包围图片的效果。
13、CSS 伪类
什么是伪类?
伪类用于定义元素的特殊状态。
伪类和 CSS 类
伪类可以与 CSS 类结合使用:
当您将鼠标悬停在例子中的链接上时,它会改变颜色:
实例
a.highlight:hover {
color: #ff0000;
}
什么是伪元素?
CSS 伪元素用于设置元素指定部分的样式。
例如,它可用于:
- 设置元素的首字母、首行的样式
- 在元素的内容之前或之后插入内容
语法
伪元素的语法:
selector::pseudo-element {
property: value;
}
::first-line 伪元素
::first-line
伪元素用于向文本的首行添加特殊样式。
下面的例子为所有 <p> 元素中的首行添加样式:
实例
p::first-line { color: #ff0000; font-variant: small-caps; }