# 一、初识CSS
## 学习目标
- 能够说出什么是CSS
- 熟悉CSS的语法规范
- 掌握CSS的三种引入方式,能够使用3种引入方式写一个红色的小方块
## 1、什么是CSS?
### 全称
Cascading Style Sheets
通常称为CSS样式表或层叠样式表(级联样式表)
### 作用
- 为HTML标记语言提供了一种样式描述
- 即【设置HTML页面中的元素的位置、排版、样式外观等】
如文本内容(字体、大小、对齐方式等)、图片的外形(宽、高、边框等)


## CSS语法规范

CSS 规则由两个主要的部分构成:选择器、一条或多条声明。
选择器:通常是需要改变样式的 HTML 标签。
声明组:以大括号{}括起来。
每条声明由一个属性和一个值组成,属性与属性值之间以【冒号】分隔,用【分号】将每个声明分开。
## 3、CSS引入方法
当读到一个样式表时,浏览器会根据它来格式化 HTML 文档,插入样式表的方法有三种:行间样式表,内部样式表,外部样式
### 1、行间样式
概述:
- 通过HTML元素的style属性设置样式称为行间样式
- 放在开始标签的内部
- 代码示例
```html
<div style="width:100px;height:100px;background-color:red;">div</div>
```
- 适用场景:
单个html标签需要设置样式
优缺点:比较直观;相同样式需要重复定义,造成代码冗余;作用范围小,不利于后期代码维护;代码不能复用,结构与样式变现不分离
- 注:任何HTML元素都可以设置行间样式
### 2、内部样式
- 概述:
在head标签的内部,由style标签包含的样式称为内部样式
- 语法:用style标签对包住样式
- 适用场景:
1.单个HTML文档需要设置样式
优缺点:
相对于行间样式,代码能够复用,作用范围大于行间样式的范围;
结构与表现半分离
- 代码示例
```html
<head>
<style> </style>
</head>
```
### 3、外部样式
- 概述
- 外部样式表是指将CSS编写在扩展名为.css 的单独文件中,使用link标签引用
- 位置:在外部新建的css文件中书写样式(后缀名为.css的文件);
在head标签的内部使用link标签引入在外部新建的css文件
- 头部标签内部使用link标签引用
```html
<head>
<link rel="stylesheet" href="./style.css">
</head>
```
- #### 说明
- href="" 资源链接的地址
- rel表示引入文 件与当前文 档的关系
- stylesheet为样式表
- rel="stylesheet"是将本HTML页面和css文件关联起来
* 适用场景:
多个HTML文档具有相同样式时
优缺点
1.适用范围广,可以使用代码的复用;
2.便于修改和维护代码;
3.结构与表现彻底分离
#### 总结:
- 行间样式适用于某个元素拥有特殊样式时使用,结构 表现【不分离】
- 内部样式适用于单个页面拥有特殊样式时使用,结构表现【半分离】
- 外部样式适用于多个页面拥有相同样式时使用,结构表现【相分离】
## 4、css注释
#### 什么是注释 :
注释即对代码的解释和说明,不会被浏览器解析执行
#### 注释的语法:
```html
CSS中的注释以"注释以/*开头,以*/结尾,开始和结束中间为注释内容
/* css 注释 */
```
#### 生成快捷方式:
ctrl + /
# 二、CSS选择器
## 1、什么是选择器
- CSS选择器是CSS规则的第一部分,每个CSS规则都以一个选择器或一组选择器为开始
- CSS 选择器即用于“查找”(或选取)要设置样式的 HTML 元素的模式
- 选择器可以分为基础选择器、复合选择器
## 2、基本选择器
### 1、通配(通用)选择器
- 语法 *{ 样式声明 }
- 作用:匹配任意类型的HTML元素
```html
<style>
/* 页面上所有元素都被选择 */
*{
background-color:green;
}
</style>
<body>
<p>p</p>
<div>div1</div>
<div>div2
<div>div3</div>
</div>
</body>
/* 一般用于清除浏览器的默认样式 */
margin: 0;
padding: 0;
权重是0
```
### 2、元素名称(标签)选择器
- 语法: 元素名称{ 样式声明 }
- 作用:选择所有同一元素名称的所有元素
```
/* 选择body */
body{
background-color:green;
}
/* 选择页面上所有的div */
div{
width:100px;
height:100px;
background-color:red;
}
/* 选择页面上所有的p */
p{
background-color: pink;
}
```
### 3、类选择器
- 语法
- HTML中通过class属性定义
```htm;l
<div class="box"></div>
```
- css中以点进行标识:.
```css
.类名 {
样式声明;
}
.box{
background-color:red;
}
```
- 作用:选择所有带有指定类名的元素
- 多类名的使用(词列表)
- 语法:空格隔开
- ```css
<p class="box box1 box2">p</p>
```
### 4、id选择器
- 语法
- HTML中通过id属性定义
如:
```html
<div class="box"></div>
```
- css中以点进行标识:#
```css
#id名称 {
样式声明;
}
#box{
background-color:red;
}
```
- 作用:选择所有带有指定id名的元素
**注意**:具有唯一性,一般用于页面唯一性的元素如头部、底部等,经常和 JavaScript 搭配使用。
### 类与id的命名规则
- 见词知义,尽量用英文;
- 始终建议以字母开头,可以包含数字、字母、下划线等
- 不要以数字开头
- 多个单词可以以驼峰式(newsCont)、中划线连接(news-cont)、下划线连接(news_cont)等
### 总结
- 总结使用频率
- 基础选择器中最常用是类选择器
- id用于页面中唯一模块
- 标签选择器定义的全局样式,单独使用要慎重
- *号通常用于重置样式【最不常用】
# 四、CSS字体 ,文本属性
### 1、font-family:
- 作用:设置文本的字体系列
- 语法:font-family:字体名称
- 常用值:
- 一个字体名称或系列名称(介绍常用字体名称、字体系列)
- 微软雅黑 Microsoft YaHei
- 宋体 simsun
- 黑体 HeiTi
- 楷体 KaiTi
- 多个字体名称
- 逗号分开
如果浏览器不支持第一个字体,则会尝试下一个(回退机制)
```css
1.使用多个字体名称形成一个回退系统(也就是备用字体),当浏览器不支持第一个字体的时候则会尝试下一个字体,多个字体之间用逗号隔开
font-family: 'Times New Roman', '楷体', '宋体'
.box{
/*font-family:"微软雅黑","宋体";*/
/*font-family:"宋体","微软雅黑"; *//*与上一个相比产生的效果不同,谁在前使用哪一个*/
font-family:"微软雅黑abc","宋体";
/*第一个任意改写一个系统不存在的字体,会按照第二个字体显示*/
}
```
### 2、font-size
- 作用:设置字体的大小
- 语法:font-size:值
- 常用值:
- 长度值(通常是像素px)
- 百分比(相对于父元素字号计算)
- em
- 相对单位
- 如果用于字号,相当于父元素字号计算
- 一般浏览器默认的大小为16px,支持最小的字体为12px。
### 3、font-style
- 作用:设置字体的样式
- 语法:font-style:值
- 常用值:
- normal默认值
- italic斜体显示
### 4、font-weight
- 作用:设置字体粗细
- 语法:font-weight:值
- 常用值:
- normal默认值
- bold加粗
- 100-900九级字重, 400相当于normal,700相当于bold
- 注:不是所有字体都内置了九级字重
### 5、line-height
- 作用:设置行高(效果是产生文本行间距)
- 语法:line-height:值
- 特性:实现单行文本的垂直居中
- 测量:文字高+行间距
- 打开px软件--在视图菜单---标尺(Ctrl+r)
参考线:在标尺上按住鼠标左键不松手,拖拽鼠标
按住alt键,放大图纸,为了测量更加准确,滚动滚轮,向外滚表示放大,向内滚表示缩小
方法:测量两行文字中间的间距,然后除以2,得到平均间距,拉出参考线,进行标注,方便测量
- 常用值
- normal默认。设置合理的行间距。
- px 设置固定的行间距。

- 百分比:相对于font-size计算
```html
.box{
/*line-height:2;*/
line-height:200%; /*产生的效果一致都是字号的两倍*/
}
line-height: 26px;
如果行高属性值没有单位,那么表示字号的倍数
20px/2 表示:字体大小是20px,行高是字体的两倍40px
```
### 6、font简写
- 作用:设置所有字体属性
- 语法:font: 字体风格 字体加粗 字号/行高 字体;
- 依次【空格】隔开
- 总结:只有当字体存在简写才是有效的,简写属性可以精简简代码
```html
font:font-style font-weight font-size/line-height font-family;
顺序:文字的样式 文字的加粗 文字的字号/行高 文字的字体
注意:如果font属性有效,则必须要有font-size属性和font-family属性
font: italic bold 14px/2 '微软雅黑';
```