前端-CSS
CSS
1.1CSS基础
层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现( 美化内容)。
书写位置:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。
<title>CSS 初体验</title> <style> /* 选择器 { } */ p { /* CSS 属性 */ color: red; } </style> <p>体验 CSS</p>
属性名和属性值成对出现 → 键值对
1.2CSS引入方式
- 
- 
CSS 代码写在 style 标签里面 
 
- 
- 
外部样式表:开发使用 
- 
CSS 代码写在单独的 CSS 文件中(.css) 
- 
<link rel="stylesheet" href="./my.css">
<div style="color: red; font-size:20px;">这是 div 标签</div>
1.3选择器
1.3.1标签选择器
标签选择器:使用标签名作为选择器 → 选中同名标签设置相同的样式。
例如:p, h1, div, a, img......
<style> p { color: red; } </style>
1.3.2类选择器
作用:查找标签,差异化设置标签的显示效果。
步骤:
- 
定义类选择器 → .类名 
- 
使用类选择器 → 标签添加 class="类名" 
<style> /* 定义类选择器 */ .red { color: red; } </style> <!-- 使用类选择器 --> <div class="red">这是 div 标签</div> <div class="red size">div 标签</div>
注意:
- 
类名自定义,不要用纯数字或中文,尽量用英文命名 
- 
一个类选择器可以供多个标签使用 
- 
一个标签可以使用多个类名,类名之间用空格隔开 
开发习惯:类名见名知意,多个单词可以用 - 连接,例如:news-hd。
1.3.3id选择器
场景:id 选择器一般配合 JavaScript 使用,很少用来设置 CSS 样式
步骤:
- 
定义 id 选择器 → #id名 
- 
使用 id 选择器 → 标签添加 id= "id名" 
<style> /* 定义 id 选择器 */ #red { color: red; } </style> <!-- 使用 id 选择器 --> <div id="red">这是 div 标签</div>
1.3.4通配符选择器
作用:查找页面所有标签,设置相同样式。
通配符选择器: *,不需要调用,浏览器自动查找页面所有标签,设置相同的样式
* {
  color: red;
}
*{
   margin:0;
   padding:0;
}
1.4盒子尺寸和背景色

1.5文字控制属性

p {
    font-size: 30px;
    font-weight: 400;
    /* font-weight: 700; 400(normal)正常,700(bold)加粗*/
    font-style: normal;
    /* 正常normal,倾斜italic */
    line-height: 30px;
    font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
    text-indent: 2em;
    /* 推荐:1em = 当前标签的字号大小 */
    text-align: center;
    /* left左对齐(默认),center居中,right右对齐 */
    text-decoration: none;
    /* none:无;underline:下划线;(line-through:删除线;overline:上划线;) */
    color:#000;
    /* rgba(r,g,b,a) rgb表示红绿蓝三原色,取值0-255,a表示透明度,取值0-1; */
}
经验:谷歌浏览器默认字号是16px;
行高的测量方法:从一行文字的最顶端(最底端)量到下一行文字的最顶端(最底端);
font-family 属性最后设置一个字体族名,网页开发建议使用
font: 是否倾斜 是否加粗 字号/行高 字体(必须按顺序书写)

1.6调试工具
作用:检查、调试代码;帮助程序员发现代码问题、解决问题
- 
打开调试工具 
- 
浏览器窗口内任意位置 / 选中标签 → 鼠标右键 → 检查 
- 
F12 
- 
使用调试工具 
网页制作思路:
从上到下,先整体再局部
先标签,再 CSS 美化
CSS进阶
2.1复合选择器
定义:由两个或多个基础选择器,通过不同的方式组合而成。
作用:更准确、更高效的选择目标元素(标签)。
2.1.1后代选择器
后代选择器:选中某元素的后代元素。
选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开。
<style> div span { color: red; } </style> <span> span 标签,不变红</span> <div> <span>这是 div 的儿子 span,变红</span > </div>
2.1.2子代选择器
子代选择器:选中某元素的子代元素(最近的子级)。
选择器写法:父选择器 > 子选择器 { CSS 属性},父子选择器之间用 > 隔开。
<style> div > span { color: red; } </style> <div> <span>这是 div 里面的 span,变红</span> <p> <span>这是 div 里面的 p 里面的 span,不变红</span> </p> </div>
2.1.3并集选择器
并集选择器:选中多组标签设置相同的样式。
选择器写法:选择器1, 选择器2, …, 选择器N { CSS 属性},选择器之间用 , 隔开。
<style> div, p, span { color: red; } </style> <div> div 标签</div> <p>p 标签</p> <span>span 标签</span>
2.1.4交集选择器
交集选择器:选中同时满足多个条件的元素。
选择器写法:选择器1选择器2 { CSS 属性},选择器之间连写,没有任何符号。
类选择器就是.box,自带点
<style> p.box { color: red; } </style> <p class="box">p 标签,使用了类选择器 box,变红</p> <p>p 标签</p> <div class="box">div 标签,使用了类选择器 box</div>
2.1.5伪类选择器
伪类选择器:伪类表示元素状态,选中元素的某个状态设置样式。
鼠标悬停状态:选择器:hover { CSS 属性 }
任何标签都可以设置鼠标悬停效果
<style> a:hover { color: red; } .box:hover { color: green; } </style> <a href="#">a 标签,红色</a> <div class="box">div 标签,绿色</div>
2.1.5.1超链接伪类

a {
  color: red;
}
a:hover {
  color: green;
}
2.2CSS特性
CSS特性:化简代码 / 定位问题,并解决问题
- 
继承性 
- 
层叠性 
- 
优先级 
2.2.1继承性
2.2.2层叠性
特点:
- 
相同的属性会覆盖:后面的 CSS 属性覆盖前面的 CSS 属性 
- 
不同的属性会叠加:不同的 CSS 属性都生效 
<style> div { color: red; font-weight: 700; } div { color: green; font-size: 30px; } </style> <div>div 标签</div> <--相同的后边的生效,是绿的,不同的会叠加-->
注意:选择器类型相同则遵循层叠性,否则按选择器优先级判断
2.2.3优先级
规则:选择器优先级高的样式生效。
公式:通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important
(选中标签的范围越大,优先级越低)
!important :提权功能,提高权重/优先级到最高,慎用
2.2.3.2
叠加计算:如果是复合选择器,则需要权重叠加计算。
(行内样式,id选择器个数,类选择器个数,标签选择器个数)
规则:
- 
从左向右依次比较选个数,同一级个数多的优先级高,如果个数相同,则向后比较 
- 
!important 权重最高 
- 
继承权重最低 

2.3Emmet写法


2.4背景属性
2.4.1背景图
网页中,使用背景图实现装饰性的图片效果。
- 
属性名:background-image(bgi) 
- 
div {
  width: 400px;
  height: 400px;
  background-image: url(./images/1.png);
}
2.4.2平铺方式
属性名:background-repeat(bgr)

2.4.3背景图位置
属性名:background-position
属性值:水平方向位置 垂直方向位置
- 
关键字 

- 
- 
水平:正数向右;负数向左 
- 
 
- 
关键字取值方式写法,可以颠倒取值顺序
2.4.4背景图缩放
作用:设置背景图大小
属性名:background-size(bgz)
常用属性值:
- 
关键字 - 
cover:等比例缩放背景图片以完全覆盖背景区,可能背景图片部分看不见 
- 
contain:等比例缩放背景图片以完全装入背景区,可能背景区部分空白 
 
- 
- 
百分比:根据盒子尺寸计算图片大小 
2.4.5背景图固定
作用:背景不会随着元素的内容滚动。
属性名:background-attachment(bga)
属性值:fixed
background-attachment: fixed;
2.4.6背景复合属性
属性名:background(bg)
属性值:背景色 背景图 背景图平铺方式 背景图位置/背景图缩放 背景图固定(空格隔开各个属性值,不区分顺序)
div { width: 400px; height: 400px; background: pink url(./images/1.png) no-repeat right center/cover; }
2.5显示模式
显示模式:标签(元素)的显示方式。
作用:布局网页的时候,根据标签的显示模式选择合适的标签摆放内容。
2.5.1块级元素
特点:
- 
独占一行 
- 
宽度默认是父级的100% 
- 
添加宽高属性生效 

2.5.2行内元素
特点:
- 
一行可以显示多个 
- 
设置宽高属性不生效 
- 
宽高尺寸由内容撑开 

2.5.3行内块元素
特点:
- 
一行可以显示多个 
- 
设置宽高属性生效 
- 
宽高尺寸也可以由内容撑开 

2.5.4转换显示模式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>显示模式转换</title> <style> /* 块级:独占一行;宽度默认是父级的100%;加宽高生效 */ div { width: 100px; height: 100px; /* display: inline-block; */ display: inline; } .div1 { background-color: brown; } .div2 { background-color: orange; } /* 行内:一行共存多个;尺寸由内容撑开;加宽高 不 生效 */ span { width: 200px; height: 200px; /* display: block; */ display: inline-block; } .span1 { background-color: brown; } .span2 { background-color: orange; } /* 行内块:一行共存多个;默认尺寸由内容撑开;加宽高生效 */ img { width: 100px; height: 100px; display: block; } </style> </head> <body> <!-- 块元素 --> <div class="div1">div 标签1</div> <div class="div2">div 标签2</div> <!-- 行内元素 --> <span class="span1">span11111111</span> <span class="span2">span1</span> <!-- 行内块元素 --> <img src="./images/1.png" alt=""> <img src="./images/1.png" alt=""> </body> </html>

盒子模型
3.1选择器
3.1.1结构伪类选择器の基本使用

li:first-child { background-color: green; }
3.1.2

3.1.3伪元素选择器

注意点:
- 
必须设置 content: ””属性,用来 设置伪元素的内容,如果没有内容,则引号留空即可 
- 
伪元素默认是行内显示模式 
- 
权重和标签选择器相同 
3.2PxCook
PxCook(像素大厨) 是一款切图设计工具软件。支持PSD文件的文字、颜色、距离自动智能识别。
- 
开发面板(自动智能识别) 
- 
设计面板(手动测量尺寸和颜色) 
使用方法:创建项目 → 输入 项目名称、项目类型 Web → 单击按钮【创建项目】 → 单击按钮【添加】,导入设计稿
3.3盒子模型
作用:布局网页,摆放盒子和内容。
3.3.1盒子模型-组成
- 
- 
内边距 – padding(出现在内容与盒子边缘之间) 
- 
边框线 – border 
- 
div {
  margin: 50px;
  border: 5px solid brown;
  padding: 20px;
  width: 200px;
  height: 200px;
  background-color: pink;
}

3.3.2边框线
3.3.2.1四个方向
属性名:border(bd)
属性值:边框线粗细 线条样式 颜色(不区分顺序)

3.3.2.2单方向边框线
属性名:border-方位名词(bd+方位名词首字母,例如,bdl)
属性值:边框线粗细 线条样式 颜色(不区分顺序)
div { border-top: 2px solid red; border-right: 3px dashed green; border-bottom: 4px dotted blue; border-left: 5px solid orange; width: 200px; height: 200px; background-color: pink; }
3.3.3内边距
- 
属性名:padding / padding-方位名词 
div { /* 四个方向 内边距相同 */ padding: 30px; /* 单独设置一个方向内边距 */ padding-top: 10px; padding-right: 20px; padding-bottom: 40px; padding-left: 80px; width: 200px; height: 200px; background-color: pink; }
提示:添加 padding 会撑大盒子。

3.3.4尺寸计算

默认情况:盒子尺寸 = 内容尺寸 + border 尺寸 + 内边距尺寸
结论:给盒子加 border / padding 会撑大盒子
解决:
- 
手动做减法,减掉 border / padding 的尺寸 
- 
內减模式:box-sizing: border-box 
3.3.5外边距
作用:拉开两个盒子之间的距离
属性名:margin
提示:与 padding 属性值写法、含义相同
3.3.6版心居中
左右 margin 值 为 auto(盒子要有宽度)//自适应
div { margin: 0 auto; width: 1000px; height: 200px; background-color: pink; }
3.3.7清除默认样式
/* 清除默认内外边距 */ * { margin: 0; padding: 0; box-sizing: border-box; } /* 清除列表项目符号 */ li { list-style: none; }
3.3.8元素溢出
作用:控制溢出元素的内容的显示方式。
属性名:overflow

3.3.9外边距问题
3.3.9.1合并现象
场景:垂直排列的兄弟元素,上下 margin 会合并
现象:取两个 margin 中的较大值生效
3.3.9.2外边距塌陷
场景:父子级的标签,子级的添加 上外边距 会产生塌陷问题
现象:导致父级一起向下移动

解决方法:
- 
取消子级margin,父级设置padding 
- 
父级设置 overflow: hidden 
- 
父级设置 border-top 
3.3.10行内元素--内外边距问题
场景:行内元素添加 margin 和 padding,无法改变元素垂直位置
解决方法:给行内元素添加 line-height 可以改变垂直位置
span { /* margin 和 padding 属性,无法改变垂直位置 */ margin: 50px; padding: 20px; /* 行高可以改变垂直位置 */ line-height: 100px; }
3.3.11圆角
作用:设置元素的外边框为圆角。
属性名:border-radius
属性值:数字+px / 百分比
提示:属性值是圆角半径

技巧:从左上角开始顺时针赋值,当前角没有数值则与对角取值相同。
3.3.12盒子阴影(拓展)
作用:给元素设置阴影效果
属性名:box-shadow
属性值:X 轴偏移量 Y 轴偏移量 模糊半径 扩散半径 颜色 内外阴影
注意:
- 
X 轴偏移量 和 Y 轴偏移量 必须书写 
- 
默认是外阴影,内阴影需要添加 inset 
div { width: 200px; height: 80px; background-color: orange; box-shadow: 2px 5px 10px 0 rgba(0, 0, 0, 0.5) inset; }
Flex布局
4.1标准流
4.2浮动
4.2.1基本使用
作用:让块元素水平排列。
属性名:float
属性值
- 
left:左对齐 
- 
right:右对齐 
特点:
- 
浮动后的盒子顶对齐 
- 
浮动后的盒子具备行内块特点 
- 
浮动后的盒子脱标,不占用标准流的位置 
4.2.2清除浮动
场景:浮动元素会脱标,如果父级没有高度,子级无法撑开父级高度(可能导致页面布局错乱)
解决方法:清除浮动(清除浮动带来的影响)
Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。
Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活。
4.3.1Flex组成
设置方式:给父元素设置 display: flex,子元素可以自动挤压或拉伸
组成部分:
- 
弹性容器 
- 
弹性盒子 
- 
主轴:默认在水平方向 
- 
侧轴 / 交叉轴:默认在垂直方向 
4.3.2主轴对齐方式

4.3.3侧轴对齐方式
- 
- 
align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子 

4.3.4修改主轴方向
主轴默认在水平方向,侧轴默认在垂直方向
属性名:flex-direction

4.3.5弹性伸缩比
作用:控制弹性盒子的主轴方向的尺寸。
属性名:flex
属性值:整数数字,表示占用父级剩余尺寸的份数。
4.3.6弹性盒子换行
弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示。
属性名:flex-wrap
属性值
- 
wrap:换行 
- 
nowrap:不换行(默认) 
4.3.7行内对齐方式

CSS高级
5.1定位
作用:灵活的改变盒子在网页中的位置
实现:
1.定位模式:position
2.边偏移:设置盒子的位置
- 
left 
- 
right 
- 
top 
- 
bottom 
5.1.1相对定位
position: relative
特点:
- 
不脱标,占用自己原来位置 
- 
显示模式特点保持不变 
- 
设置边偏移则相对自己原来位置移动 
div { position: relative; top: 100px; left: 200px; }
5.1.2绝对定位
position: absolute
使用场景:子级绝对定位,父级相对定位(子绝父相)
特点:
- 
脱标,不占位 
- 
显示模式具备行内块特点 
- 
设置边偏移则相对最近的已经定位的祖先元素改变位置 
- 
如果祖先元素都未定位,则相对浏览器可视区改变位置 
.father { position: relative; } .father span { position: absolute; top: 0; right: 0; }
5.1.3定位居中
实现步骤:
- 
绝对定位 
- 
水平、垂直边偏移为 50% 
- 
子级向左、上移动自身尺寸的一半 
- 
左、上的外边距为 –尺寸的一半 
- 
transform: translate(-50%, -50%) 
img { position: absolute; left: 50%; top: 50%; /* margin-left: -265px; margin-top: -127px; */ /* 方便: 50% 就是自己宽高的一半 */ transform: translate(-50%, -50%); }
5.1.4固定定位
position: fixed
场景:元素的位置在网页滚动时不会改变
特点:
- 
脱标,不占位 
- 
- 
设置边偏移相对浏览器窗口改变位置 
div { position: fixed; top: 0; right: 0; width: 500px; }
5.1.5堆叠层级z-index

默认效果:按照标签书写顺序,后来者居上
作用:设置定位元素的层级顺序,改变定位元素的显示顺序
属性名:z-index
属性值:整数数字(默认值为0,取值越大,层级越高)
.box1 { background-color: pink; /* 取值是整数,默认是0,取值越大显示顺序越靠上 */ z-index: 1; } .box2 { background-color: skyblue; left: 100px; top: 100px; z-index: 2; }
5.2高级技巧
5.2.1CSS精灵
实现步骤:
- 
创建盒子,盒子尺寸与小图尺寸相同 
- 
设置盒子背景图为精灵图 
- 
添加 background-position 属性,改变背景图位置 
3.1 使用 PxCook 测量小图片左上角坐标
3.2 取负数坐标为 background-position 属性值(向左上移动图片位置)
5.2.2案例-京东服务

5.2.2.1HTML结构
<div class="service"> <ul> <li> <h5></h5> <p>品类齐全,轻松购物</p> </li> <li> <h5></h5> <p>多仓直发,极速配送</p> </li> <li> <h5></h5> <p>正品行货,精致服务</p> </li> <li> <h5></h5> <p>天天低价,畅选无忧</p> </li> </ul> </div>
5.2.2.2CSS样式
<style> * { margin: 0; padding: 0; box-sizing: border-box; } li { list-style: none; } .service { margin: 100px auto; width: 1190px; height: 42px; /* background-color: pink; */ } .service ul { display: flex; } .service li { display: flex; padding-left: 40px; width: 297px; height: 42px; /* background-color: skyblue; */ } .service li h5 { margin-right: 10px; width: 36px; height: 42px; /* background-color: pink; */ background: url(./images/sprite.png) 0 -192px; } .service li:nth-child(2) h5 { background-position: -41px -192px; } .service li:nth-child(3) h5 { background-position: -82px -192px; } .service li:nth-child(4) h5 { background-position: -123px -192px; } .service li p { font-size: 18px; color: #444; font-weight: 700; line-height: 42px; } </style>
5.2.3字体图标

字体图标:展示的是图标,本质是字体
作用:在网页中添加简单的、颜色单一的小图标
- 
灵活性:灵活地修改样式,例如:尺寸、颜色等 
- 
轻量级:体积小、渲染快、降低服务器请求次数 
- 
兼容性:几乎兼容所有主流浏览器 
- 
使用方便:先下载再使用 
5.2.3.1下载字体
iconfont 图标库:https://www.iconfont.cn/
登录 → 素材库 → 官方图标库 → 进入图标库 → 选图标,加入购物车 → 购物车,添加至项目,确定 → 下载至本地
5.2.3.2使用字体

- 
- 
iconfont:字体图标基本样式(字体名,字体大小等等) 
- 

5.2.3.3上传矢量图
作用:项目特有的图标上传到 iconfont 图标库,生成字体

上传步骤:上传 → 上传图标 → 选择 svg 矢量图,打开 → 提交 → 系统审核
5.3CSS修饰属性
5.3.1垂直对齐方式
属性名:vertical-align

5.3.2过渡
作用:可以为一个元素在不同状态之间切换的时候添加过渡效果
属性名:transition(复合属性)
属性值:过渡的属性 花费时间 (s)
提示:
- 
过渡的属性可以是具体的 CSS 属性 
- 
也可以为 all(两个状态属性值不同的所有属性,都产生过渡效果) 
- 
transition 设置给元素本身 
img { width: 200px; height: 200px; transition: all 1s; } img:hover { width: 500px; height: 500px; }
5.3.3透明度opacity
作用:设置整个元素的透明度(包含背景和内容)
属性名:opacity
属性值:0 – 1
- 
0:完全透明(元素不可见) 
- 
1:不透明 
- 
0-1之间小数:半透明 
5.3.4光标类型
作用:鼠标悬停在元素上时指针显示样式
属性名:cursor

 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号