day03-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 {
/* CSS 属性 */
    color: red;
  }
</style>

<p>体验 CSS</p>

提示:属性名和属性值成对出现 → 键值对。

02-CSS引入方式

  • 内部样式表:学习使用
    • CSS 代码写在 style 标签里面
  • 外部样式表:开发使用
    • CSS 代码写在单独的 CSS 文件中(.css
    • 在 HTML 使用 link 标签引入
1
<link rel="stylesheet" href="./my.css">
  • 行内样式:配合 JavaScript 使用
    • CSS 写在标签的 style 属性值里
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>
  /* 定义 id 选择器 */
  #red {
    color: red;
  }
</style>

<!-- 使用 id 选择器 -->
<div id="red">这是 div 标签</div>

规则:同一个 id 选择器在一个页面只能使用一次。

通配符选择器

作用:查找页面所有标签,设置相同样式。

通配符选择器: *,不需要调用,浏览器自动查找页面所有标签,设置相同的样式

1
2
3
* {
color: red;
}

经验:通配符选择器可以用于清除标签的默认样式,例如:标签默认的外边距、内边距。

1680317584651

04-盒子尺寸和背景色

属性名 作用
width 宽度
height 高度
background-color 背景色

05-文字控制属性

image-20230418214314266

字体大小

  • 属性名:font-size
  • 属性值:文字尺寸,PC 端网页最常用的单位 px
1
2
3
p {
  font-size: 30px;
}

经验:谷歌浏览器默认字号是16px。

注意:字号必须有单位(如:px)

字体粗细:

  • 属性名:font-size
  • 属性值:
    • 数字(开发使用
      • 正常:400
      • 加粗:700
    • 关键字:
      • 正常:normal
      • 加粗:bold

字体样式(是否倾斜)

作用:清除文字默认的倾斜效果

属性名:font-style

属性值

  • 正常(不倾斜):normal
  • 倾斜:italic

行高

作用:设置多行文本的间距

属性名:line-height

属性值

  • 数字 + px
  • 数字(当前标签font-size属性值的倍数)
1
2
3
4
5
line-height: 30px;


/* 当前标签字体大小为16px */
line-height: 2;

1680317770048

行高的测量方法:从一行文字的最顶端(最底端)量到下一行文字的最顶端(最底端)。

单行文字垂直居中

垂直居中技巧:行高属性值等于盒子高度属性值

注意:该技巧适用于单行文字垂直居中效果

1
2
3
4
5
6
7
div {
height: 100px;
background-color: skyblue;

/* 注意:只能是单行文字垂直居中 */
line-height: 100px;
}

字体族

属性名:font-family

属性值:字体名

1
font-family: 楷体;

拓展(了解):font-family属性值可以书写多个字体名,各个字体名用逗号隔开,执行顺序是从左向右依次查找

  • font-family 属性最后设置一个字体族名,网页开发建议使用无衬线字体

1680318278244

1
font-family: Microsoft YaHei, Heiti SC, tahoma, arial, Hiragino Sans GB, "\5B8B\4F53", sans-serif;

font复合属性

使用场景:设置网页文字公共样式

1680318326214

复合属性:属性的简写方式,一个属性对应多个值的写法,各个属性值之间用空格隔开。

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

属性值 效果
left 左对齐(默认)
center 居中对齐
right 右对齐
1
text-align: center;

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

属性值 效果
none
underline 下划线
line-through 删除线
overline 上划线

color 文字颜色

颜色表示方式 属性值 说明 使用场景
颜色关键词 颜色英文单词 red、green、blue。。。 学习测试
rgb表示法 rgba(r, g, b, a) r, g, b表示红绿蓝三原色,取值:0-255 了解测试
rgba表示法 rgba(r, g, b, a) a 表示透明度,取值:0-1 开发使用,实现透明色
十六进制表示法 #RRGGBB #000000,#ffcc00,简写:#000,#fc0 开发使用(从设计稿复制)

提示:只要属性值为颜色,都可以使用上述四种颜色表示方式,例如:背景色。

06-调试工具

作用:检查、调试代码;帮助程序员发现代码问题、解决问题

  1. 打开调试工具
  • 浏览器窗口内任意位置 / 选中标签 → 鼠标右键 → 检查
  • F12
  1. 使用调试工具

1680318624523

07-综合案例一-新闻详情

网页制作思路:

  1. 从上到下,先整体再局部
  2. 先标签,再 CSS 美化

1680318667113

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;
}

/* div {
text-align: center;
} */

.pic {
text-align: center;
}
</style>

08-综合案例二-CSS简介

1680318751246

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>

day04-CSS进阶

目标:掌握复合选择器作用和写法;使用background属性添加背景效果

01-复合选择器

定义:由两个或多个基础选择器,通过不同的方式组合而成。

作用:更准确、更高效的选择目标元素(标签)。

后代选择器

后代选择器:选中某元素的后代元素

选择器写法:父选择器 子选择器 { CSS 属性},父子选择器之间用空格隔开。

1
2
3
4
5
6
7
8
9
10
11
12
<style>
  div span {
    color: red;
  }
</style>
<span>span 标签</span>
<div>
<span>这是div 的儿子</span>
<p>
<span>孙子</span>
</p>
</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>

超链接伪类

选择器 作用
:link 访问前
:visited 访问后
:hover 鼠标悬停
:active 点击时(激活)

提示:如果要给超链接设置以上四个状态,需要按 LVHA 的顺序书写。

经验:工作中,一个 a 标签选择器设置超链接的样式, hover状态特殊设置

1
2
3
4
5
6
7
a {
color: red;
}

a:hover {
color: green;
}

02-CSS特性

CSS特性:化简代码 / 定位问题,并解决问题

  • 继承性
  • 层叠性
  • 优先级

继承性

继承性:子级默认继承父级的文字控制属性

1680319376438

1
2
3
4
5
6
7
8
9
10
11
12
<style>
body {
font-size: 30px;
font-weight: 700;
color: aqua;
}
</style>
<div>div </div>
<p>p</p>
<span>span </span> <br>
<a href="#">a 标签</a>
<h1>h1 标签</h1>

image-20230420104425599

注意:如果标签有默认文字样式会继承失败。 例如: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>

基础选择器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<style>
#box {
color: yellow;
}

.div {
color: blue;
}

div {
color: green;
}

* {
color: red !important;
}
</style>
<div class="div" id="box" style="color: blueviolet;">div </div>

规则:选择器优先级高的样式生效

公式:通配符选择器 < 标签选择器 < 类选择器 < id选择器 < 行内样式 < !important

(选中标签的范围越大,优先级越低)

复合选择器-叠加

叠加计算:如果是复合选择器,则需要权重叠加计算。

公式:(每一级之间不存在进位)

1680319646205

规则:

  • 从左向右依次比较选个数,同一级个数多的优先级高,如果个数相同,则向后比较
  • !important 权重最高
  • 继承权重最低

03-Emmet 写法

Emmet写法:代码的简写方式,输入缩写 VS Code 会自动生成对应的代码。

  • HTML标签
说明 标签结构 Emmet
类选择器 <div class="box"></div> 标签名.类名
id 选择器 <div id="box"></div> 标签名#id名
同级标签 <div></div><p></p> div+p
父子级标签 <div><p></p></div> div>p
多个相同标签 <span>1</span><span>2</span><span>3</span> span*3
有内容的标签 <div>内容</div> div{内容}
  • CSS:大多数简写方式为属性单词的首字母
说明 CSS 属性 Emmet
宽度 width w
宽度500px width: 500px; w500
背景色 background-color bgc
多个属性 width: 200px;height: 100px; background-color: #fff w200+h100+bgc

04-背景属性

1680319971861

描述 属性
背景色 background-color
背景图 background-image
背景图平铺方式 background-repeat
背景图位置 background-position
背景图缩放 background-size
背景图固定 background-attachment
背景复合属性 background

背景图

网页中,使用背景图实现装饰性的图片效果。

  • 属性名: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) q

属性值 效果
no-repeat 不平铺
repeat 平铺(默认效果)
repeat-x 水平方向平铺
repeat-y 垂直方向平铺
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)

属性值:水平方向位置 垂直方向位置

  • 关键字

    | 关键字 | 位置 |
    | ——— | —— |
    | left | 左侧 |
    | right | 右侧 |
    | center | 居中 |
    | top | 顶部 |
    | bottom | 底部 |

  • 坐标
    • 水平:正数向右;负数向左
    • 垂直:正数向下;负数向上
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-显示模式

显示模式:标签(元素)的显示方式。

1680320464551

作用:布局网页的时候,根据标签的显示模式选择合适的标签摆放内容。

块级元素

特点:

  • 独占一行
  • 宽度默认是父级的100%
  • 添加宽高属性生效

1680320578369

行内元素

特点:

  • 一行可以显示多个
  • 设置宽高属性不生效
  • 宽高尺寸由内容撑开

1680320583985

行内块元素

特点:

  • 一行可以显示多个
  • 设置宽高属性生效
  • 宽高尺寸也可以由内容撑开

1680320590005

转换显示模式

属性:display

属性值 效果
block 块级
inline-block 行内块
inline 行内

06-综合案例一-热词

1680320664821

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 效果

1680320758496

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;
/* 转块级无法右对齐,因为块元素独占一行 */
/* display: block; */

text-align: center;
line-height: 40px;
color: #fff;
text-decoration: none;
font-size: 20px;
}
</style>

day05-盒子模型

目标:掌握盒子模型组成部分,使用盒子模型布局网页区域

01-选择器

结构伪类选择器

基本使用

作用:根据元素的结构关系查找元素。

选择器 说明
E:first-child 查找第一个 E 元素
E:last-child 查找最后一个 E 元素
E:nth-child(N) 查找第 N 个 E 元素(第一个元素 N 值位1)
1
2
3
li:first-child {
  background-color: green;
}

:nth-child(公式)

功能 公式
偶数标签 2n
奇数标签 2n+1;2n-1
找到5的倍数的标签 5n
找到第5个以后的标签 n+5
找到第5个以前的标签 -n+5

提示:公式中的n取值从 0 开始。

伪元素选择器

作用:创建虚拟元素(伪元素),用来摆放装饰性的内容

1680321533901

选择器 说明
E::before 在 E 元素里面面添加一个伪元素
E::after 在 E 元素里面面添加一个伪元素
1
2
3
4
5
6
div::before {
  content: "before 伪元素";
}
div::after {
  content: "after 伪元素";
}

注意点:

  • 必须设置 content: ””属性,用来 设置伪元素的内容,如果没有内容,则引号留空即可
  • 伪元素默认是行内显示模式
  • 权重和标签选择器相同

02-PxCook

PxCook(像素大厨) 是一款切图设计工具软件。支持PSD文件的文字、颜色、距离自动智能识别。

  • 开发面板(自动智能识别)
  • 设计面板(手动测量尺寸和颜色)

使用方法:创建项目 → 输入 项目名称、项目类型 Web → 单击按钮【创建项目】 → 单击按钮【添加】,导入设计稿

1680321681695

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;
}

1680330928735

1680330935635

边框线

四个方向

属性名:border(bd)

属性值:边框线粗细 线条样式 颜色(不区分顺序)

属性值 线条样式
solid 实现
dashed 虚线
dotted 点线
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 会撑大盒子。

  • padding 多值写法
取值个数 示例 含义
一个值 padding: 10px; 四个方向内边距均为10px
四个值 padding: 10px 20px 40px 80px; 上:10px;右:20px;下:40px;左:80px
三个值 padding: 10px 40px 80px; 上:10px;左右:40px;下:80px
两个值 padding: 10px 80px; 上下:10px;左右:80px

技巧:从开始顺时针赋值,当前方向没有数值则与对面取值相同

尺寸计算

1680331322935

默认情况:盒子尺寸 = 内容尺寸 + border 尺寸 + 内边距尺寸

结论:给盒子加 border / padding 会撑大盒子

解决:

  • 手动做减法,减掉 border / padding 的尺寸
  • 內减模式:box-sizing: border-box

外边距

作用:拉开两个盒子之间的距离

属性名:margin

提示:与 padding 属性值写法、含义相同

版心居中

1680331503466

左右 margin 值 为 auto(盒子要有宽度)

1
2
3
4
5
6
div {
  margin: 0 auto;
  width: 1000px;
  height: 200px;
  background-color: pink;
}

清除默认样式

1680331558304

清除标签默认的样式,比如:默认的内外边距。

1680331580746

1
2
3
4
5
6
7
8
9
10
/* 清除默认内外边距 */
* {
  margin: 0;
  padding: 0;
box-sizing: border-box;
}
/* 清除列表项目符号 */
li {
  list-style: none;
}

元素溢出

作用:控制溢出元素的内容的显示方式。

属性名:overflow

属性值 效果
hidden 溢出隐藏
scroll 溢出滚动(无论是否溢出,都显示滚动条位置)
auto 溢出滚动(溢出才显示滚动条位置)

外边距问题

合并现象

场景:垂直排列的兄弟元素,上下 margin合并

现象:取两个 margin 中的较大值生效

1680331672628

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;
}

1680333860271

解决方法:

  • 取消子级margin,父级设置padding
  • 父级设置 overflow: hidden
  • 父级设置 border-top

行内元素 – 内外边距问题

场景:行内元素添加 margin 和 padding,无法改变元素垂直位置

解决方法:给行内元素添加 line-height 可以改变垂直位置

1
2
3
4
5
6
7
span {
  /* margin 和 padding 属性,无法改变垂直位置 */
  margin: 50px;
  padding: 20px;
  /* 行高可以改变垂直位置 */
  line-height: 100px;
}

圆角

作用:设置元素的外边框为圆角。

属性名:border-radius

属性值:数字+px / 百分比

提示:属性值是圆角半径

1680334014390

  • 多值写法
取值个数 示例 含义
一个值 border-radius: 10px; 四个方向内边距均为10px
四个值 border-radius: 10px 20px 40px 80px; 上:10px;右:20px;下:40px;左:80px
三个值 border-radius: 10px 40px 80px; 上:10px;左右:40px;下:80px
两个值 border-radius: 10px 80px; 上下:10px;左右:80px

技巧:从左上角开始顺时针赋值,当前角没有数值则与对角取值相同。

  • 正圆形状:给正方形盒子设置圆角属性值为 宽高的一半 / 50%
1
2
3
4
5
6
7
img {
  width: 200px;
  height: 200px;
 
  border-radius: 100px;
  border-radius: 50%;
}

1680334083567

  • 胶囊形状:给长方形盒子设置圆角属性值为 盒子高度的一半
1
2
3
4
5
6
div {
  width: 200px;
  height: 80px;
  background-color: orange;
  border-radius: 40px;
}

1680334136242

盒子阴影(拓展)

作用:给元素设置阴影效果

属性名: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-综合案例-产品卡片

1680334221212

CSS 书写顺序:

  1. 盒子模型属性
  2. 文字样式
  3. 圆角、阴影等修饰属性

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-综合案例二 – 新闻列表

1680334329887

整体布局

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;
/* background-color: pink; */
}
</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 {
/* -1 盒子向上移动 */
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>

day06-Flex布局

目标:熟练使用 Flex 完成结构化布局

01-标准流

标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。

1680334840709

02-浮动

基本使用

作用:让块元素水平排列。

属性名:float

属性值

  • left:左对齐
  • right:右对齐
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: left; */

float: right;
}
</style>

<div class="one">one</div>
<div class="two">two</div>

特点:

  • 浮动后的盒子顶对齐
  • 浮动后的盒子具备行内块特点
  • 浮动后的盒子脱标不占用标准流的位置

产品区域布局

1680335016853

HTML标签

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- 版心:左右,右面:8个产品 → 8个 li -->
<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;
}

/* 第四个li和第八个li 去掉右侧的margin */
.right li:nth-child(4n) {
margin-right: 0;
}

/* 细节:如果父级宽度不够,浮动的盒子会掉下来 */
</style>

清除浮动

场景:浮动元素会脱标,如果父级没有高度子级无法撑开父级高度(可能导致页面布局错乱)

解决方法:清除浮动(清除浮动带来的影响)

场景搭建

1680335081694

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;
/* height: 300px; */
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>

单伪元素法

  1. 准备 after 伪元素
1
2
3
4
5
.clearfix::after {
content: "";
display: block;
clear: both;
}
  1. 父级使用 clearfix 类
1
<div class="father clearfix"></div>

双伪元素法

  1. 准备 after 和 before 伪元素
1
2
3
4
5
6
7
8
9
10
11
12
/* before 解决外边距塌陷问题 */
/* 双伪元素法 */
.clearfix::before,
.clearfix::after {
content: "";
display: table;
}

/* after 清除浮动 */
.clearfix::after {
clear: both;
}
  1. 父级使用 clearfix 类
1
<div class="father clearfix"></div>

overfow法

1
2
3
4
5
6
7
8
.father {
margin: 10px auto;
width: 1200px;
/* height: 300px; */
background-color: pink;

overflow: hidden;
}

03-Flex布局

image-20230425110650225

Flex 布局也叫弹性布局,是浏览器提倡的布局模型,非常适合结构化布局,提供了强大的空间分布和对齐能力。

Flex 模型不会产生浮动布局中脱标现象,布局网页更简单、更灵活。

1680335815005

Flex组成

设置方式:给元素设置 display: flex,子元素可以自动挤压或拉伸

组成部分:

  • 弹性容器
  • 弹性盒子
  • 主轴:默认在水平方向
  • 侧轴 / 交叉轴:默认在垂直方向

1680335870554

主轴对齐方式

属性名:justify-content

属性值 效果
flex-start 默认值,弹性盒子从起点开始依次排列
flex-end 弹性盒子从终点开始依次排列
center 弹性盒子沿主轴居中排列
space-between 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间
space-around 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧
space-evenly 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等

侧轴对齐方式

  • align-items:当前弹性容器内所有弹性盒子的侧轴对齐方式(给弹性容器设置)
  • align-self:单独控制某个弹性盒子的侧轴对齐方式(给弹性盒子设置)
属性值 效果
stretch 弹性盒子沿着侧轴线被拉伸至铺满容器(弹性盒子没有设置侧轴方向尺寸则默认拉伸)
center 弹性盒子沿侧轴居中排列
flex-start 弹性盒子从起点开始依次排列
flex-end 弹性盒子从终点开始依次排列

修改主轴方向

主轴默认在水平方向,侧轴默认在垂直方向

属性名:flex-direction

属性值 效果
row 水平方向,从左向右(默认)
column 垂直方向,从上到下
row-reverse 水平方向,从右向左
column-reverse 垂直方向,从下向上

弹性伸缩比

作用:控制弹性盒子的主轴方向的尺寸。

属性名:flex

属性值:整数数字,表示占用父级剩余尺寸的份数

注意:默认情况下,主轴方向是靠内容撑开:侧轴默认拉伸

弹性盒子换行

弹性盒子可以自动挤压或拉伸,默认情况下,所有弹性盒子都在一行显示。

属性名:flex-wrap

属性值

  • wrap:换行
  • nowrap:不换行(默认)

行内对齐方式

属性名:align-content

属性值 效果
flex-start 默认值,弹性盒子从起点开始依次排列
flex-end 弹性盒子从终点开始依次排列
center 弹性盒子沿主轴居中排列
space-between 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子之间
space-around 弹性盒子沿主轴均匀排列,空白间距均分在弹性盒子两侧
space-evenly 弹性盒子沿主轴均匀排列,弹性盒子与容器之间间距相等

注意:该属性对单行弹性盒子模型无效

04-综合案例 – 抖音解决方案

1680336238340

整体布局

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;
/* background-color: pink; */
}
</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>