编程语言笔记前端web前端2
Linstars
来自黑马程序员培训机构的web前端学习笔记~,黑马程序员官网-IT培训机构
1-CSS基础
目标:掌握 CSS 属性基本写法,能够使用文字相关属性美化文章页。
01-CSS初体验
层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 文档的呈现(美化内容)。
书写位置:title 标签下方添加 style 双标签,style 标签里面书写 CSS 代码。
1 2 3 4 5 6 7 8 9 10
| <title>CSS 初体验</title> <style> p { color: red; } </style>
<p>体验 CSS</p>
|
提示:属性名和属性值成对出现 → 键值对。
02-CSS引入方式
- 内部样式表:学习使用
- 外部样式表:开发使用
- CSS 代码写在单独的 CSS 文件中(**.css**)
- 在 HTML 使用 link 标签引入
1
| <link rel="stylesheet" href="./my.css">
|
1
| <div style="color: red; font-size:20px;">这是 div 标签</div>
|
03-选择器
作用:查找标签,设置样式。
标签选择器
标签选择器:使用标签名作为选择器 → 选中同名标签设置相同的样式。
例如:p, h1, div, a, img……
1 2 3 4 5 6
| <style> p { color: red; } </style>
|
注意:标签选择器无法差异化同名标签的显示效果。
类选择器
作用:查找标签,差异化设置标签的显示效果。
步骤:
- 定义类选择器 → .类名
- 使用类选择器 → 标签添加 class=”类名”
1 2 3 4 5 6 7 8 9 10
| <style> .red { color: red; } </style>
<div class="red">这是 div 标签</div> <div class="red size">div 标签</div>
|
注意:
- 类名自定义,不要用纯数字或中文,尽量用英文命名
- 一个类选择器可以供多个标签使用
- 一个标签可以使用多个类名,类名之间用空格隔开
开发习惯:类名见名知意,多个单词可以用 - 连接,例如:news-hd。
id选择器
作用:查找标签,差异化设置标签的显示效果。
场景:id 选择器一般配合 JavaScript 使用,很少用来设置 CSS 样式
步骤:
- 定义 id 选择器 → #id名
- 使用 id 选择器 → 标签添加 id= “id名”
1 2 3 4 5 6 7 8 9
| <style> #red { color: red; } </style>
<div id="red">这是 div 标签</div>
|
规则:同一个 id 选择器在一个页面只能使用一次。
通配符选择器
作用:查找页面所有标签,设置相同样式。
通配符选择器: *,不需要调用,浏览器自动查找页面所有标签,设置相同的样式
经验:通配符选择器可以用于清除标签的默认样式,例如:标签默认的外边距、内边距。
04-盒子尺寸和背景色
05-文字控制属性
字体大小
- 属性名:font-size
- 属性值:文字尺寸,PC 端网页最常用的单位 px
经验:谷歌浏览器默认字号是16px。
字体样式(是否倾斜)
作用:清除文字默认的倾斜效果
属性名:font-style
属性值
行高
作用:设置多行文本的间距
属性名:line-height
属性值
- 数字 + px
- 数字(当前标签font-size属性值的倍数)
1 2 3 4 5
| line-height: 30px;
line-height: 2;
|
行高的测量方法:从一行文字的最顶端(最底端)量到下一行文字的最顶端(最底端)。
单行文字垂直居中
垂直居中技巧:行高属性值等于盒子高度属性值
注意:该技巧适用于单行文字垂直居中效果
1 2 3 4 5 6 7
| div { height: 100px; background-color: skyblue;
line-height: 100px; }
|
字体族
属性名:font-family
属性值:字体名
拓展(了解):font-family属性值可以书写多个字体名,各个字体名用逗号隔开,执行顺序是从左向右依次查找
- font-family 属性最后设置一个字体族名,网页开发建议使用无衬线字体
1
| font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;
|
font复合属性
使用场景:设置网页文字公共样式
复合属性:属性的简写方式,一个属性对应多个值的写法,各个属性值之间用空格隔开。
font: 是否倾斜 是否加粗 字号/行高 字体(必须按顺序书写)
1 2 3
| div { font: italic 700 30px/2 楷体; }
|
注意:字号和字体值必须书写,否则 font 属性不生效 。
文本缩进
属性名:text-indent
属性值:
- 数字 + px
- 数字 + em(推荐:1em = 当前标签的字号大小)
1 2 3
| p { text-indent: 2em; }
|
文本对齐方式
作用:控制内容水平对齐方式
属性名:text-align
text-align本质是控制内容的对齐方式,属性要设置给内容的父级。
1 2 3 4 5 6 7 8 9
| <style> div { text-align: center; } </style>
<div> <img src="./images/1.jpg" alt=""> </div>
|
文本修饰线
属性名: text-decoration
color 文字颜色
提示:只要属性值为颜色,都可以使用上述四种颜色表示方式,例如:背景色。
06-调试工具
作用:检查、调试代码;帮助程序员发现代码问题、解决问题
- 打开调试工具
- 浏览器窗口内任意位置 / 选中标签 → 鼠标右键 → 检查
- F12
- 使用调试工具
07-综合案例一-新闻详情
网页制作思路:
- 从上到下,先整体再局部
- 先标签,再 CSS 美化
HTML标签
1 2 3 4 5 6 7 8 9
| <h1>在希望的田野上 | 湖北秋收开镰 各地多举措保增产增收</h1> <div>来源:央视网 | 2222年12月12日 12:12:12</div> <p><strong>央视网消息:</strong>眼下,湖北省秋收开镰已有一周多的时间。水稻收割已经超过四成,玉米收割七成。湖北省通过大力推广新品种水稻,建设高标准农田等一系列措施,为秋粮稳产提供有力支撑。</p> <p>中稻占据了湖北全年粮食产量的一半以上。在湖北的主产区荆门市,370万亩中稻已经收割四成以上。</p> <div class="pic"> <img src="./1.jpg" alt=""> </div> <p>王化林说的新品种,是湖北省研发的杂交水稻“华夏香丝”,不仅产量高,还具有抗病、抗倒、抗高温的特性。在荆门漳河镇的一工程示范田内,像“华夏香丝”这样抗旱节水的品种还有20多个,这些水稻新品将在荆门全面推广,确保来年增产增收。</p> <p>此外,湖北还大力推进高标准农田建设。截至今年6月,已建成3980万亩高标准农田。目前,湖北全省仍有1800多万亩中稻正在有序收割中,预计10月中旬收割完毕。</p>
|
CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <style> h1 { text-align: center; font-weight: 400; font-size: 30px; color: #333; }
div { font-size: 14px; color: #999; }
p { text-indent: 2em; font-size: 18px; color: #333; }
.pic { text-align: center; } </style>
|
08-综合案例二-CSS简介
HTML标签
1 2 3 4 5 6 7 8
| <h1>CSS(层叠样式表)</h1> <p>层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 <a href="#">样式表</a> 语言,用来描述 HTML 或 XML(包括如 SVG、MathML、XHTML 之类的 XML 分支语言)文档的呈现。CSS 描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题。</p> <p><strong>CSS 是开放网络的核心语言之一</strong>,由 W3C 规范 实现跨浏览器的标准化。CSS 节省了大量的工作。 样式可以通过定义保存在外部.css 文件中,同时控制多个网页的布局,这意味着开发者不必经历在所有网页上编辑布局的麻烦。CSS 被分为不同等级:CSS1 现已废弃, CSS2.1 是推荐标准, CSS3 分成多个小模块且正在标准化中。</p> <ul> <li>CSS 介绍 如果你是 Web 开发的新手,请务必阅读我们的 CSS 基础 文章以学习 CSS 的含义和用法。</li> <li>CSS 教程 我们的 CSS 学习区 包含了丰富的教程,它们覆盖了全部基础知识,能使你在 CSS 之路上从初出茅庐到游刃有余。</li> <li>CSS 参考 针对资深 Web 开发者的 <a href="#">详细参考手册</a> ,描述了 CSS 的各个属性与概念。</li> </ul>
|
CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <style> h1 { color: #333; }
p { text-indent: 2em; font-size: 14px; color: #444; line-height: 30px; }
a { color: #0069c2; }
li { font-size: 14px; color: #444; line-height: 30px; } </style>
|
2-CSS进阶
目标:掌握复合选择器作用和写法;使用background属性添加背景效果
01-复合选择器
定义:由两个或多个基础选择器,通过不同的方式组合而成。
作用:更准确、更高效的选择目标元素(标签)。
后代选择器
后代选择器:选中某元素的后代元素。
选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开。
1 2 3 4 5 6 7 8 9
| <style> div span { color: red; } </style> <span> span 标签</span> <div> <span>这是 div 的儿子 span</span > </div>
|
子代选择器
子代选择器:选中某元素的子代元素(最近的子级)。
选择器写法:父选择器 > 子选择器 { CSS 属性},父子选择器之间用 > 隔开。
1 2 3 4 5 6 7 8 9 10 11 12 13
| <style> div > span { color: red; } </style>
<div> <span>这是 div 里面的 span</span> <p> <span>这是 div 里面的 p 里面的 span</span> </p> </div>
|
并集选择器
并集选择器:选中多组标签设置相同的样式。
选择器写法:选择器1, 选择器2, …, 选择器N { CSS 属性},选择器之间用 , 隔开。
1 2 3 4 5 6 7 8 9 10 11
| <style> div, p, span { color: red; } </style>
<div> div 标签</div> <p>p 标签</p> <span>span 标签</span>
|
交集选择器
交集选择器:选中同时满足多个条件的元素。
选择器写法:选择器1选择器2 { CSS 属性},选择器之间连写,没有任何符号。
1 2 3 4 5 6 7 8 9
| <style> p.box { color: red; } </style>
<p class="box">p 标签,使用了类选择器 box</p> <p>p 标签</p> <div class="box">div 标签,使用了类选择器 box</div>
|
注意:如果交集选择器中有标签选择器,标签选择器必须书写在最前面。
伪类选择器
伪类选择器:伪类表示元素状态,选中元素的某个状态设置样式。
鼠标悬停状态:选择器:hover { CSS 属性 }
1 2 3 4 5 6 7 8 9 10 11
| <style> a:hover { color: red; } .box:hover { color: green; } </style>
<a href="#">a 标签</a> <div class="box">div 标签</div>
|
超链接伪类
提示:如果要给超链接设置以上四个状态,需要按 LVHA 的顺序书写。
经验:工作中,一个 a 标签选择器设置超链接的样式, hover状态特殊设置
1 2 3 4 5 6 7
| a { color: red; }
a:hover { color: green; }
|
02-CSS特性
CSS特性:化简代码 / 定位问题,并解决问题
继承性
继承性:子级默认继承父级的文字控制属性。
注意:如果标签有默认文字样式会继承失败。 例如:a 标签的颜色、标题的字体大小。
层叠性
特点:
- 相同的属性会覆盖:后面的 CSS 属性覆盖前面的 CSS 属性
- 不同的属性会叠加:不同的 CSS 属性都生效
1 2 3 4 5 6 7 8 9 10 11 12
| <style> div { color: red; font-weight: 700; } div { color: green; font-size: 30px; } </style>
<div>div 标签</div>
|
注意:选择器类型相同则遵循层叠性,否则按选择器优先级判断。
优先级
优先级:也叫权重,当一个标签使用了多种选择器时,基于不同种类的选择器的匹配规则。
1 2 3 4 5 6 7 8 9 10
| <style> div { color: red; } .box { color: green; } </style>
<div class="box">div 标签</div>
|
基础选择器
规则:选择器优先级高的样式生效。
公式:通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important
(选中标签的范围越大,优先级越低)
复合选择器-叠加
叠加计算:如果是复合选择器,则需要权重叠加计算。
公式:(每一级之间不存在进位)
规则:
- 从左向右依次比较选个数,同一级个数多的优先级高,如果个数相同,则向后比较
- !important 权重最高
- 继承权重最低
03-Emmet 写法
Emmet写法:代码的简写方式,输入缩写 VS Code 会自动生成对应的代码。
04-背景属性
背景图
网页中,使用背景图实现装饰性的图片效果。
- 属性名:background-image(bgi)
- 属性值:url(背景图 URL)
1 2 3 4 5 6
| div { width: 400px; height: 400px;
background-image: url(./images/1.png); }
|
提示:背景图默认有平铺(复制)效果。
平铺方式
属性名:background-repeat(bgr)
1 2 3 4 5 6 7 8
| div { width: 400px; height: 400px; background-color: pink; background-image: url(./images/1.png);
background-repeat: no-repeat; }
|
背景图位置
属性名:background-position(bgp)
属性值:水平方向位置 垂直方向位置
- 坐标
- 水平:正数向右;负数向左
- 垂直:正数向下;负数向上
1 2 3 4 5 6 7 8 9 10 11
| div { width: 400px; height: 400px; background-color: pink; background-image: url(./images/1.png); background-repeat: no-repeat;
background-position: center bottom; background-position: 50px -100px; background-position: 50px center; }
|
提示:
- 关键字取值方式写法,可以颠倒取值顺序
- 可以只写一个关键字,另一个方向默认为居中;数字只写一个值表示水平方向,垂直方向为居中
背景图缩放
作用:设置背景图大小
属性名:background-size(bgz)
常用属性值:
关键字
- cover:等比例缩放背景图片以完全覆盖背景区,可能背景图片部分看不见
- contain:等比例缩放背景图片以完全装入背景区,可能背景区部分空白
百分比:根据盒子尺寸计算图片大小
数字 + 单位(例如:px)
1 2 3 4 5 6 7 8 9 10
| div { width: 500px; height: 400px; background-color: pink; background-image: url(./images/1.png); background-repeat: no-repeat; background-size: cover; background-size: contain; }
|
提示:工作中,图片比例与盒子比例相同,使用 cover 或 contain 缩放背景图效果相同。
背景图固定
作用:背景不会随着元素的内容滚动。
属性名:background-attachment(bga)
属性值:fixed
1 2 3 4 5
| body { background-image: url(./images/bg.jpg); background-repeat: no-repeat; background-attachment: fixed; }
|
背景复合属性
属性名:background(bg)
属性值:背景色 背景图 背景图平铺方式 背景图位置/背景图缩放 背景图固定(空格隔开各个属性值,不区分顺序)
1 2 3 4 5 6
| div { width: 400px; height: 400px;
background: pink url(./images/1.png) no-repeat right center/cover; }
|
05-显示模式
显示模式:标签(元素)的显示方式。
作用:布局网页的时候,根据标签的显示模式选择合适的标签摆放内容。
块级元素
特点:
- 独占一行
- 宽度默认是父级的100%
- 添加宽高属性生效
行内元素
特点:
- 一行可以显示多个
- 设置宽高属性不生效
- 宽高尺寸由内容撑开
行内块元素
特点:
- 一行可以显示多个
- 设置宽高属性生效
- 宽高尺寸也可以由内容撑开
转换显示模式
属性:display
06-综合案例一-热词
HTML标签
1 2 3 4 5
| <a href="#">HTML</a> <a href="#">CSS</a> <a href="#">JavaScript</a> <a href="#">Vue</a> <a href="#">React</a>
|
CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <style>
a { display: block; width: 200px; height: 80px; background-color: #3064bb; color: #fff; text-decoration: none; text-align: center; line-height: 80px; font-size: 18px; }
a:hover { background-color: #608dd9; } </style>
|
07-综合案例二 – banner 效果
HTML标签
1 2 3 4 5
| <div class="banner"> <h2>让创造产生价值</h2> <p>我们希望小游戏平台可以提供无限的可能性,让每一个创作者都可以将他们的才华和创意传递给用户。</p> <a href="#">我要报名</a> </div>
|
CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| <style> .banner { height: 500px; background-color: #f3f3f4; background-image: url(./images/bk.png); background-repeat: no-repeat; background-position: left bottom;
text-align: right; color: #333; }
.banner h2 { font-size: 36px; font-weight: 400; line-height: 100px; }
.banner p { font-size: 20px; }
.banner a { width: 125px; height: 40px; background-color: #f06b1f;
display: inline-block;
text-align: center; line-height: 40px; color: #fff; text-decoration: none; font-size: 20px; } </style>
|
3-盒子模型
目标:掌握盒子模型组成部分,使用盒子模型布局网页区域
01-选择器
结构伪类选择器
基本使用
作用:根据元素的结构关系查找元素。
1 2 3
| li:first-child { background-color: green; }
|
:nth-child(公式)
提示:公式中的n取值从 0 开始。
伪元素选择器
作用:创建虚拟元素(伪元素),用来摆放装饰性的内容。
1 2 3 4 5 6
| div::before { content: "before 伪元素"; } div::after { content: "after 伪元素"; }
|
注意点:
- 必须设置 content: ””属性,用来 设置伪元素的内容,如果没有内容,则引号留空即可
- 伪元素默认是行内显示模式
- 权重和标签选择器相同
02-PxCook
PxCook(像素大厨) 是一款切图设计工具软件。支持PSD文件的文字、颜色、距离自动智能识别。
- 开发面板(自动智能识别)
- 设计面板(手动测量尺寸和颜色)
使用方法:创建项目 → 输入 项目名称、项目类型 Web → 单击按钮【创建项目】 → 单击按钮【添加】,导入设计稿
03-盒子模型
作用:布局网页,摆放盒子和内容。
盒子模型-组成
- 内容区域 – width & height
- 内边距 – padding(出现在内容与盒子边缘之间)
- 边框线 – border
- 外边距 – margin(出现在盒子外面)
1 2 3 4 5 6 7 8
| div { margin: 50px; border: 5px solid brown; padding: 20px; width: 200px; height: 200px; background-color: pink; }
|
边框线
四个方向
属性名:border(bd)
属性值:边框线粗细 线条样式 颜色(不区分顺序)
1 2 3 4 5 6
| div { border: 5px solid brown; width: 200px; height: 200px; background-color: pink; }
|
单方向边框线
属性名:border-方位名词(bd+方位名词首字母,例如,bdl)
属性值:边框线粗细 线条样式 颜色(不区分顺序)
1 2 3 4 5 6 7 8 9
| 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; }
|
内边距
作用:设置 内容 与 盒子边缘 之间的距离。
- 属性名:padding / padding-方位名词
1 2 3 4 5 6 7 8 9 10 11 12
| div { padding: 30px; padding-top: 10px; padding-right: 20px; padding-bottom: 40px; padding-left: 80px; width: 200px; height: 200px; background-color: pink; }
|
提示:添加 padding 会撑大盒子。
技巧:从上开始顺时针赋值,当前方向没有数值则与对面取值相同。
尺寸计算
默认情况:盒子尺寸 = 内容尺寸 + border 尺寸 + 内边距尺寸
结论:给盒子加 border / padding 会撑大盒子
解决:
- 手动做减法,减掉 border / padding 的尺寸
- 內减模式:box-sizing: border-box
外边距
作用:拉开两个盒子之间的距离
属性名:margin
提示:与 padding 属性值写法、含义相同
版心居中
左右 margin 值 为 auto(盒子要有宽度)
1 2 3 4 5 6
| div { margin: 0 auto; width: 1000px; height: 200px; background-color: pink; }
|
清除默认样式
清除标签默认的样式,比如:默认的内外边距。
1 2 3 4 5 6 7 8 9 10
| * { margin: 0; padding: 0; box-sizing: border-box; }
li { list-style: none; }
|
元素溢出
作用:控制溢出元素的内容的显示方式。
属性名:overflow
外边距问题
合并现象
场景:垂直排列的兄弟元素,上下 margin 会合并
现象:取两个 margin 中的较大值生效
1 2 3 4 5 6
| .one { margin-bottom: 50px; } .two { margin-top: 20px; }
|
外边距塌陷
场景:父子级的标签,子级的添加 上外边距 会产生塌陷问题
现象:导致父级一起向下移动
1 2 3 4 5 6
| .son { margin-top: 50px; width: 100px; height: 100px; background-color: orange; }
|
解决方法:
- 取消子级margin,父级设置padding
- 父级设置 overflow: hidden
- 父级设置 border-top
行内元素 – 内外边距问题
场景:行内元素添加 margin 和 padding,无法改变元素垂直位置
解决方法:给行内元素添加 line-height 可以改变垂直位置
1 2 3 4 5 6 7
| span { margin: 50px; padding: 20px; line-height: 100px; }
|
圆角
作用:设置元素的外边框为圆角。
属性名:border-radius
属性值:数字+px / 百分比
提示:属性值是圆角半径
技巧:从左上角开始顺时针赋值,当前角没有数值则与对角取值相同。
- 正圆形状:给正方形盒子设置圆角属性值为 宽高的一半 / 50%
1 2 3 4 5 6 7
| img { width: 200px; height: 200px; border-radius: 100px; border-radius: 50%; }
|
- 胶囊形状:给长方形盒子设置圆角属性值为 盒子高度的一半
1 2 3 4 5 6
| div { width: 200px; height: 80px; background-color: orange; border-radius: 40px; }
|
盒子阴影(拓展)
作用:给元素设置阴影效果
属性名:box-shadow
属性值:X 轴偏移量 Y 轴偏移量 模糊半径 扩散半径 颜色 内外阴影
注意:
- X 轴偏移量 和 Y 轴偏移量 必须书写
- 默认是外阴影,内阴影需要添加 inset
1 2 3 4 5 6
| div { width: 200px; height: 80px; background-color: orange; box-shadow: 2px 5px 10px 0 rgba(0, 0, 0, 0.5) inset; }
|
04-综合案例-产品卡片
CSS 书写顺序:
- 盒子模型属性
- 文字样式
- 圆角、阴影等修饰属性
HTML标签
1 2 3 4 5
| <div class="product"> <img src="./images/liveSDK.svg" alt=""> <h4>抖音直播SDK</h4> <p>包含抖音直播看播功能</p> </div>
|
CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <style> * { margin: 0; padding: 0; box-sizing: border-box; }
body { background-color: #f1f1f1; }
.product { margin: 50px auto; padding-top: 40px;
width: 270px; height: 253px; background-color: #fff; text-align: center;
border-radius: 10px; }
.product h4 { margin-top: 20px; margin-bottom: 12px; font-size: 18px; color: #333; font-weight: 400; }
.product p { font-size: 12px; color: #555; } </style>
|
05-综合案例二 – 新闻列表
整体布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <style> * { margin: 0; padding: 0; box-sizing: border-box; }
li { list-style: none; }
a { text-decoration: none; }
.news { margin: 100px auto; width: 360px; height: 200px; } </style>
<div class="news"></div>
|
标题区域
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <style> .news .hd { height: 34px; background-color: #eee; border: 1px solid #dbdee1; border-left: 0; }
.news .hd a { margin-top: -1px; display: block; border-top: 3px solid #ff8400; border-right: 1px solid #dbdee1; width: 48px; height: 34px; background-color: #fff;
text-align: center; line-height: 32px; font-size: 14px; color: #333; } </style>
<div class="hd"><a href="#">新闻</a></div>
|
内容区域
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <style> .news .bd { padding: 5px; }
.news .bd li { padding-left: 15px; background-image: url(./images/square.png); background-repeat: no-repeat; background-position: 0 center; }
.news .bd li a { padding-left: 20px; background: url(./images/img.gif) no-repeat 0 center;
font-size: 12px; color: #666; line-height: 24px; }
.news .bd li a:hover { color: #ff8400; } </style>
<div class="bd"> <ul> <li><a href="#">点赞“新农人” 温暖的伸手</a></li> <li><a href="#">在希望的田野上...</a></li> <li><a href="#">“中国天眼”又有新发现 已在《自然》杂志发表</a></li> <li><a href="#">急!这个领域,缺人!月薪4万元还不好招!啥情况?</a></li> <li><a href="#">G9“带货”背后:亏损面持续扩大,竞争环境激烈</a></li> <li><a href="#">多地力推二手房“带押过户”,有什么好处?</a></li> </ul> </div>
|
4-Flex布局
目标:熟练使用 Flex 完成结构化布局
01-标准流
标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。
02-浮动
基本使用
作用:让块元素水平排列。
属性名:float
属性值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <style> .one { width: 100px; height: 100px; background-color: brown;
float: left; }
.two { width: 200px; height: 200px; background-color: orange;
float: right; } </style>
<div class="one">one</div> <div class="two">two</div>
|
特点:
- 浮动后的盒子顶对齐
- 浮动后的盒子具备行内块特点
- 浮动后的盒子脱标,不占用标准流的位置
产品区域布局
HTML标签
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <div class="product"> <div class="left"></div> <div class="right"> <ul> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> <li></li> </ul> </div> </div>
|
CSS样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <style> * { margin: 0; padding: 0; }
li { list-style: none; }
.product { margin: 50px auto; width: 1226px; height: 628px; background-color: pink; }
.left { float: left; width: 234px; height: 628px; background-color: skyblue; }
.right { float: right; width: 978px; height: 628px; background-color: brown; }
.right li { float: left; margin-right: 14px; margin-bottom: 14px; width: 234px; height: 300px; background-color: orange; }
.right li:nth-child(4n) { margin-right: 0; }
</style>
|
清除浮动
场景:浮动元素会脱标,如果父级没有高度,子级无法撑开父级高度(可能导致页面布局错乱)
解决方法:清除浮动(清除浮动带来的影响)
场景搭建
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| <style> .top { margin: 10px auto; width: 1200px; background-color: pink; }
.left { float: left; width: 200px; height: 300px; background-color: skyblue; }
.right { float: right; width: 950px; height: 300px; background-color: orange; }
.bottom { height: 100px; background-color: brown; }
</style>
<div class="top"> <div class="left"></div> <div class="right"></div> </div> <div class="bottom"></div>
|
额外标签法
在父元素内容的最后添加一个块级元素,设置 CSS 属性 clear: both
1 2 3 4 5 6 7 8 9 10 11
| <style> .clearfix { clear: both; } </style>
<div class="father"> <div class="left"></div> <div class="right"></div> <div class="clearfix"></div> </div>
|
单伪元素法
- 准备 after 伪元素
1 2 3 4 5
| .clearfix::after { content: ""; display: block; clear: both; }
|
- 父级使用 clearfix 类
1
| <div class="father clearfix"></div>
|
双伪元素法
- 准备 after 和 before 伪元素
1 2 3 4 5 6 7 8 9 10 11 12
|
.clearfix::before, .clearfix::after { content: ""; display: table; }
.clearfix::after { clear: both; }
|
- 父级使用 clearfix 类
1
| <div class="father clearfix"></div>
|
overfow法
1 2 3 4 5 6 7 8
| .father { margin: 10px auto; width: 1200px; background-color: pink;
overflow: hidden; }
|
03-Flex布局
Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。
Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活。
Flex组成
设置方式:给父元素设置 display: flex,子元素可以自动挤压或拉伸
组成部分:
- 弹性容器
- 弹性盒子
- 主轴:默认在水平方向
- 侧轴 / 交叉轴:默认在垂直方向
主轴对齐方式
属性名:justify-content
侧轴对齐方式
- align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)
- align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)
修改主轴方向
主轴默认在水平方向,侧轴默认在垂直方向
属性名:flex-direction
弹性伸缩比
作用:控制弹性盒子的主轴方向的尺寸。
属性名:flex
属性值:整数数字,表示占用父级剩余尺寸的份数。
弹性盒子换行
弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示。
属性名:flex-wrap
属性值
行内对齐方式
属性名:align-content
注意:该属性对单行弹性盒子模型无效。
04-综合案例 – 抖音解决方案
整体布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <style> * { margin: 0; padding: 0; box-sizing: border-box; }
li { list-style: none; }
.box { margin: 50px auto; width: 1200px; height: 418px; border: 1px solid #ddd; border-radius: 10px; } </style>
<div class="box"></div>
|
列表布局
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <style> .box ul { display: flex; flex-wrap: wrap; justify-content: space-between;
align-content: space-between;
padding: 90px 40px 90px 60px; height: 418px; }
.box li { display: flex; width: 500px; height: 88px; } </style>
<div class="box"> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> </ul> </div>
|
内容样式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| <style> .box .pic { margin-right: 15px; }
.box .text h4 { line-height: 40px; font-size: 20px; font-weight: 400; color: #333; }
.box .text p { font-size: 14px; color: #666; } </style>
<ul> <li> <div class="pic"> <img src="./images/1.svg" alt=""> </div> <div class="text"> <h4>一键发布多端</h4> <p>发布视频到抖音短视频、西瓜视频及今日头条</p> </div> </li> <li> <div class="pic"> <img src="./images/2.svg" alt=""> </div> <div class="text"> <h4>管理视频内容</h4> <p>支持修改已发布稿件状态和实时查询视频审核状态</p> </div> </li> <li> <div class="pic"> <img src="./images/3.svg" alt=""> </div> <div class="text"> <h4>发布携带组件</h4> <p>支持分享内容携带小程序、地理位置信息等组件,扩展内容及突出地域性</p> </div> </li> <li> <div class="pic"> <img src="./images/4.svg" alt=""> </div> <div class="text"> <h4>数据评估分析</h4> <p>获取视频在对应产品内的数据表现、获取抖音热点,及时进行表现评估</p> </div> </li> </ul>
|