一、什么是CSS?
1.CSS 指层叠样式表 (Cascading Style Sheets)。
2.样式定义如何显示 HTML 元素。
3.样式通常存储在样式表中。
4.把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题。
5.外部样式表可以极大提高工作效率。
6.外部样式表通常存储在 CSS 文件中。
7.多个样式定义可层叠为一个。
二、CSS基础语法
1.代码结构
CSS代码由“选择器”和“声明”两部分组成。
#choose{
属性:值;
}
/*#choose就是选择器的名字,#代表的含义在后续选择器中会介绍。
{}里面的就是声明,由各个属性和值组成。*/
CSS代码的注释方法与HTML中的不同,是“/* */”,在两个星号中间写注释内容。
2.CSS的引用方法
CSS一般有三种的引用方法,分别是:
(1)内联式
在起始标签内添加style样式属性,如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div style="width: 100px; height: 100px; background-color: #f00;">
123
</div>
</body>
</html>
(2)嵌入式
写在style标签里,并且要定义type值为"text/css",最好放置在head标签里,比如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#square1{
width: 100px;
height: 100px;
background-color: #f00;
}
</style>
</head>
<body>
<div id="square1">
123
</div>
</body>
</html>
(3)链接式
把CSS样式写在外部文件中,形如:扩展名.css,需要用到link标签:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="square.css"/>
<!--link也要放在head标签里-->
<title></title>
</head>
<body>
<div id="square1">
123
</div>
</body>
</html>
/*square.css*/
#square1{
width: 100px;
height: 100px;
background-color: #f00;
}
(4)导入式
使用@import引入外部CSS,并且@import需写在style标签里,或者是CSS文件里(相当于是向某一个CSS文件导入另一个CSS文件)。如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
@import "square.css";
/*也可以写作:@import url("square.css");*/
</style>
<title></title>
</head>
<body>
<div id="square1">
123
</div>
</body>
</html>
/*square.css*/
#square1{
width: 100px;
height: 100px;
background-color: #f00;
}
以上四种方法写出来的结果都是一样的:

四种方法的优劣对比:
| 类型 | 执行效率 | 可复用性 | 可维护性 | 兼容性 |
|---|---|---|---|---|
| 内联式 | 高 | 无法复用 | 低 | 高 |
| 嵌入式 | 高 | 无法复用 | 高 | 高 |
| 链接式 | 中高 | 高 | 高 | 高 |
| 导入式 | 低 | 高 | 高 | 低 |
三、CSS选择器
1.标签选择器
定义:以html标签作为选择器。如:
h1{
color: red;
}
p{
color: black;
font-size: 50px;
}
这样子的话,html文件里的h1标签和p标签都会相应地改变样式。
2.类选择器
类选择器使用时首先要在html标签里定义class属性,具体使用如下:
/*类选择器的写法*/
.选择器名{
属性: 值;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.demo1{
font-size: 30px;/*设置字体大小*/
color: #f40;
}
</style>
</head>
<body>
<div class="demo1">
这是类选择器的演示
</div>
</body>
</html>
效果如图:

一个标签也可以拥有多个类选择器:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.size{
font-size: 30px;
}
.color{
color: #f40;
}
</style>
</head>
<body>
<div class="size color">
这是类选择器的演示
</div>
</body>
</html>
效果和上面是一样的:

如果要为拥有相同类名的不同标签设置不同的样式,只需在类选择器前加标签即可:
一个标签也可以拥有多个类选择器:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div.size{
font-size: 30px;
}
div.color{
color: #f40;
}
p.size{
font-size: 20px;
}
p.color{
color: #000;
}
</style>
</head>
<body>
<div class="size color">
这是类选择器的演示
</div>
<p class="size color">
这是类选择器的演示
</p>
</body>
</html>
虽然class的值相同,但是样式却不是一样的:

3.ID选择器
ID选择器的用法和类选择器类似,使用前需要给标签加上id属性,但与类选择器不同的是,ID选择器的id是唯一的,不能像class那样子设置多个的选择器,并且id不能与其他的id同名,具体使用如下:
/*ID选择器的写法*/
#选择器名{
属性: 值;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#pa{
color: #f00;
font-size: 30px;
}
</style>
</head>
<body>
<div id="pa">
这是ID选择器的演示
</div>
</body>
</html>
效果如图:

4.群组选择器
如果多个选择器拥有相同的样式属性,则可以通过群组选择器来减少代码量,具体使用如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#pa,.demo,div{ /*各个选择器之间用“,“隔开*/
color: #f00;
font-size: 30px;
}
</style>
</head>
<body>
<p id="pa">
这是ID选择器的演示
</p>
<div>
这是标签选择器的演示
</div>
<p class="demo">
这是类选择器的演示
</p>
</body>
</html>
效果如图:

5.通配符(全局)选择器
在开发时,一般都是先设置全局的一个样式,这时候就需要用到通配符选择器,具体使用如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
*{ /*通配符选择器就是一个"*"后面跟上声明*/
color: #f00;
font-size: 30px;
}
</style>
</head>
<body>
<div>
这是通配符选择器的演示
</div>
<p>
这是通配符选择器的演示
</p>
</body>
</html>
通配符选择器会为全局的标签设置统一的样式,效果如图:

6.后代选择器
一般在开发时,标签之间会相互嵌套,但是有些时候要改变嵌套内的标签而不改变其他的标签时,比如:
<div><p>456</p><div>
<p>123</p>
要修改div里面的p标签而不修改外面单独的p标签时,就需要用到后代选择器,具体使用如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div p{ /*两个选择器名之间用空格隔开,表示p嵌套在div里面*/
color: #f00;
font-size: 30px;
}
</style>
</head>
<body>
<div>
<p>这是后代选择器的演示</p>
</div>
<p>
这是后代选择器的演示
</p>
</body>
</html>
这时候,只有嵌套的p标签发生了样式上的改变:

后代选择器表示的是只要有嵌套在前一个标签中,都可以生效,不一定和前一个标签是父子关系,比如:
<style type="text/css">
div p{
color: #f00;
font-size: 30px;
}
</style>
<div class="demo1">
<div>
<div class="demo2">
<p></p>
</div>
</div>
</div>
这样子代选择器也会生效。
7.子选择器
与子代选择器不同的是,子选择器与前一个选择器必须是父子的关系,并且表示方法也有所不同,具体写法如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div>p{ /*子选择器中间要用">"相连,表示div是p的父级*/
color: #f00;
font-size: 30px;
}
</style>
</head>
<body>
<div class="demo1">
<div>
<span>
<p>这是子选择器的演示</p>
</span>
</div>
</div>
</body>
</html>
这里的p和div并不是父子关系,所以结果样式没有发生改变:

将span改为div后,样式就会发生改变。
8.伪类选择器
伪类选择器适用于向某些选择器添加特殊的效果。
(1)链接伪类
链接的四种状态:
| 伪类名称 | 说明 |
|---|---|
| :link | 未访问状态 |
| :visited | 已访问状态 |
| :hover | 鼠标悬停状态(鼠标经过时) |
| :active | 激活时状态(选中还未放开) |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
a:link{ /*未访问的状态*/
background-color: green;
}
a:visited{ /*已访问的状态*/
background-color: yellow;
}
a:hover{ /*悬停状态*/
background-color: grey;
}
a:active{ /*点击未松开的状态*/
background-color: pink;
}
</style>
</head>
<body>
<a href="http://www.baidu.com" target="_blank">百度首页</a>
</body>
</html>
演示结果就是,还未点击的时候是绿色的,当光标移上去的时候会变成灰色,点击后未放开的时候是粉色,点击后再返回来看的时候就变成了黄色。
说明:
1.:hover必须放在:link和:visited之后才能生效。
2.:active必须放在:hover之后才能生效。
3.伪类不区分大小写。
(2)伪类选择器的其他用法
伪类选择器还可以用于获取首个子对象。
语法:
选择器:first-child{
声明
}
具体例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div span:first-child{
background-color: green;
}
</style>
</head>
<body>
<div>
<span>
123
</span>
<span>
456
</span>
</div>
</body>
</html>
结果只有第一个span标签里的字背景颜色发生改变:

9.属性选择器
所有拥有该属性的标签都会改变样式。
语法:
[属性名]{
声明
}
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
[id]{
background-color: red;
}
</style>
</head>
<body>
<div id="">
123
</div>
<span id="">
456
</span>
</body>
</html>
所有拥有id属性的标签都会改变样式:

也可以对属性进行限制,比如令id等于某个特定的值,同理,这里就不作演示了。
10.!important用法
语法:
属性:值 !important;
例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#demo{
background-color: red;
}
.demo{
background-color: green !important;
}
</style>
</head>
<body>
<div id="demo" class="demo">
123
</div>
</body>
</html>
虽然ID选择器的优先级比类选择器更高,但是由于设置了!important,导致最后结果是绿色:

四、CSS继承
继承就是子标签可以继承父标签的部分CSS属性。例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div{
background-color: red;
}
</style>
</head>
<body>
<div>
<p>123</p>
</div>
</body>
</html>
这里只设置了div的样式,没有设置p的样式,但是结果样式依旧发生了改变,p标签继承了div标签的样式:

但是像border之类的属性就无法继承,如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
div{
color: red;
border: 1px solid;
}
</style>
</head>
<body>
<div>
<p>123</p>
<p>123</p>
</div>
</body>
</html>
这里border生效的标签只有div:

一般可以继承的属性就是字体样式等等,不可继承的就是盒子模型属性、定位布局属性等等。
继承的好处:通过继承关系,可以减少CSS的代码量。
五、CSS优先级和权重
因为CSS是层叠样式表,当同一个元素上叠加了多个样式,就会发生一些声明上的冲突,这时候就需要通过优先级来判断哪个样式优先显示。
优先级顺序:
!important > 内联式样式(即在标签后直接跟style)> ID选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 > 通配符选择器 > 继承样式 > 默认样式
选择器权重表:
| 选择器 | 权重值 |
|---|---|
| !important | Infinity(正无穷) |
| 内联式样式 | 1000 |
| ID选择器 | 0100 |
| 类、属性、伪类 | 0010 |
| 标签 | 0001 |
| 通配符选择器 | 0000 |
这里的1、10、100、1000都是二百五十六进制的,不是十进制的。
权重也是用来判断优先级的。
权重计算:
body #demo{
声明
}
/*这里的权重值就是0001+0100=0101*/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
#demo{ /*权重为0100*/
color: red;
}
.first .second .third #demo{
/*权重为0010+0010+0010+0100=0130*/
color: green;
}
</style>
</head>
<body>
<div class="first">
<div class="second">
<p class="third">
<span id="demo">
123
</span>
</p>
</div>
</div>
</body>
</html>
这里的CSS都是设置的demo的样式,但是由于下面这个权重更高,所以优先显示绿色:

六、CSS字体样式
常用字体样式属性
| 属性名称 | 说明 |
|---|---|
| color | 文字颜色 |
| font-size | 字体大小 |
| font-family | 字体 |
| font-weight | 字体粗细 |
| font-style | 字体风格 |
1.color
用途:设置元素的文字颜色。
语法:
color: 颜色名称;
color: #十六进制;(一共是六位,但如果两两一样,可以简写,比如#00ff11可以简写为#0f1)
color: rgb(0-255,0-255,0-255);(三个数字分别代表红绿蓝)
演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.color1{
color: green;
}
.color2{
color: #f40;
}
.color3{
color: rgb(50,50,250);
}
</style>
</head>
<body>
<div class="color1">
这是color1的演示
</div>
<div class="color2">
这是color2的演示
</div>
<div class="color3">
这是color3的演示
</div>
</body>
</html>
结果:

2.font-size
用途:设置元素的字体大小。
语法:font-size: 字体大小;
单位:px 像素,em/%指的是与当前父标签字体的倍数关系。
浏览器默认字体大小一般就是16px。
演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.size1{
font-size: 16px;
}
.size2{
font-size: 1.5em;
}
.size3{
font-size: 150%;
}
</style>
</head>
<body>
<div class="size1">
这是font-size单位px的演示
</div>
<!-- 这里相当于是默认16px*1.5 -->
<div class="size2">
这是font-size单位em的演示
</div>
<!-- 这里相当于是默认16px*1.5 -->
<div class="size3">
这是font-size单位%的演示
</div>
</body>
</html>
结果:

3.font-family
用途:设置元素的字体。
语法:font-family:[字体1][字体2][,…]
演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.family1{
font-family: "微软雅黑";
}
.family2{
font-family: "宋体";
}
.family3{
font-family: "Arial";
}
</style>
</head>
<body>
<div class="family1">
这是font-family的演示
</div>
<div class="family2">
这是font-family宋体的演示
</div>
<div class="family3">
这是font-family Arial的演示
</div>
</body>
</html>
结果:

如果在font-family中设置多个字体的话,如:
font-family: "Arial","宋体","微软雅黑";
则浏览器会先识别Arial,若无,则接着往下,如果全没有,则会显示浏览器默认字体。
4.font-weight
用途:设置元素字体的粗细。
语法:font-weight: normal、bold、bolder、lighter、100-900;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.weight1{
font-weight: normal;
}
.weight2{
font-weight: bold;
}
.weight3{
font-weight: bolder;
}
.weight4{
font-weight: lighter;
}
.weight5{
font-weight: 100;
}
.weight6{
font-weight: 200;
}
.weight7{
font-weight: 300;
}
.weight8{
font-weight: 400;
}
.weight9{
font-weight: 500;
}
.weight10{
font-weight: 600;
}
.weight11{
font-weight: 700;
}
.weight12{
font-weight: 800;
}
.weight13{
font-weight: 900;
}
</style>
</head>
<body>
<div class="weight1">
这是font-weight的演示
</div>
<div class="weight2">
这是font-weight的演示
</div>
<div class="weight3">
这是font-weight的演示
</div>
<div class="weight4">
这是font-weight的演示
</div>
<div class="weight5">
这是font-weight100的演示
</div>
<div class="weight6">
这是font-weight200的演示
</div>
<div class="weight7">
这是font-weight300的演示
</div>
<div class="weight8">
这是font-weight400的演示
</div>
<div class="weight9">
这是font-weight500的演示
</div>
<div class="weight10">
这是font-weight600的演示
</div>
<div class="weight11">
这是font-weight700的演示
</div>
<div class="weight12">
这是font-weight800的演示
</div>
<div class="weight13">
这是font-weight900的演示
</div>
</body>
</html>
结果:

5.font-style
用途:设置元素的字体样式。
语法:font-style:normal、italic、oblique;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.style1{
font-style: normal;
}
.style2{
font-style: italic; /*斜体*/
}
.style3{
font-style: oblique; /*文字倾斜*/
}
</style>
</head>
<body>
<div class="style1">
这是font-style的演示
</div>
<div class="style2">
这是font-style的演示
</div>
<div class="style3">
这是font-style的演示
</div>
</body>
</html>
结果:

6.font属性简写方式
语法:font: font-style font-weight font-size/line-height font-family;
注意:
书写的顺序要对;
必须同时设置font-size和font-family;
各项值之间用空格隔开。
演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.font1{
font: italic bolder 20px "宋体";
}
</style>
</head>
<body>
<div class="font1">
这是font的演示
</div>
</body>
</html>
结果:

七、CSS文本样式
常用文本样式属性
| 属性名称 | 说明 |
|---|---|
| text-align | 文本对齐 |
| text-decoration | 文字加修饰 |
| text-indent | 文本缩进 |
| line-height | 文字行高 |
1.text-align
用途:设置文本水平对齐方式。
语法:text-align:left、right、center、justify;
示例:
注意:只对块级元素有效。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.align1{
text-align: left; /*左对齐*/
}
.align2{
text-align: right;/*右对齐*/
}
.align3{
text-align: center; /*居中*/
}
.align4{
text-align: justify;/*伸展对齐*/
}
</style>
</head>
<body>
<div class="align1">
这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示.
这是text-align的演示这是text-align的演示这是text-align的演示.
</div>
<div class="align2">
这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示.
这是text-align的演示这是text-align的演示这是text-align的演示.
</div>
<div class="align3">
这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示.
这是text-align的演示这是text-align的演示这是text-align的演示.
</div>
<div class="align4">
这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示这是text-align的演示.
这是text-align的演示这是text-align的演示这是text-align的演示.
</div>
</body>
</html>
结果:

2.text-decoration
用途:用来给文本加修饰
语法:text-decoration: underline、overline、line-through、none;
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.decoration1{
text-decoration: underline;/*下划线*/
}
.decoration2{
text-decoration: overline;/*上划线*/
}
.decoration3{
text-decoration: line-through;/*删除线*/
}
.decoration4{
text-decoration: none;/*无*/
}
</style>
</head>
<body>
<div class="decoration1">
这是text-decoration的演示
</div>
<div class="decoration2">
这是text-decoration的演示
</div>
<div class="decoration3">
这是text-decoration的演示
</div>
<div class="decoration4">
这是text-decoration的演示
</div>
</body>
</html>
结果:

也可以设置多个text-decoration,语法:text-decoration:underline overline;但如果加了none,则之前设置的都不会生效。
3.text-indent
用途:设置文本的缩进。
语法:text-indent: 缩进距离(单位为px或em);
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.indent1{
text-indent: 10px;
}
.indent2{
text-indent: 2em;/*2个文字的缩进*/
}
.indent3{
text-indent: 0;
}
</style>
</head>
<body>
<div class="indent1">
这是text-indent的演示
</div>
<div class="indent2">
这是text-indent的演示
</div>
<div class="indent3">
这是text-indent的演示
</div>
</body>
</html>
结果:

4.line-height
用途:设置文本的行高。
语法:line-height: 具体数值或百分比;
示例:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.height1{
line-height: 50px;
}
.height2{
line-height: 100px;
}
.height3{
line-height: 50%;
}
</style>
</head>
<body>
<div class="height1">
这是line-height的演示
</div>
<div class="height2">
这是line-height的演示
</div>
<div class="height3">
这是line-height的演示
</div>
</body>
</html>
结果:

在平时开发时,一般line-height都是以em为单位,比如1.5em表示1.5倍的字体大小,因为如果设置的行高比字体大小要小的话,文字会发生重叠,所以一般以em为单位。
这一部分到这里就结束啦,有不足的地方还望大家指正啦,蟹蟹!

本文介绍了CSS的基础知识,包括CSS的定义、基础语法、选择器类型(如标签选择器、类选择器、ID选择器等)、CSS的继承和优先级、字体样式(如color、font-size、font-family等)以及文本样式。通过实例展示了各种选择器的用法和优先级计算,帮助初学者理解CSS的工作原理。
——选择器、优先级和字体样式&spm=1001.2101.3001.5002&articleId=114755809&d=1&t=3&u=26106e14a7d84038a64351f87dad29ff)
1765

被折叠的 条评论
为什么被折叠?



