tongsiying

阅读|运动|自律

0%

CSS

01-CSS层叠样式表导读

目标

1
2
3
4
5
6
能够说出什么是CSS
能够使用CSS基础选择器
能够设置字体样式
能够设置文本样式
能够说出CSS的三种引入方式
能够使用Chrome调试工具调试样式

目录

1
2
3
4
5
6
7
CSS简介
CSS基础选择器
CSS字体属性
CSS文本属性
CSS的引入方式
综合案例
Chrome调试工具

02-CSS简介

CSS的主要使用场景就是美化网页,布局页面的。

1
2
1.HTML的局限性
2.CSS-网页的美容师

HTML的局限性

1
2
3
4
说起HTML,这其实是个非常单纯的家伙,他只关注内容的语义。比如<h1>表明这是一个大标题,<p>表明这是一个段落,<img>表明这儿有一个图片,<a>表示此处有链接。

很早的时候,世界上的网站虽然很多,但是他们都有一个共同的特点:丑。
虽然HTML可以做简单的样式,但是带来的是无尽的臃肿和繁项...

CSS-网页的美容师

1
2
3
4
5
6
7
8
css是层叠样式表(Cascading Style Sheets)的简称.
有时我们也会称之为CSS样式表或级联样式表。

CSS是也是一种标记语言

CSS主要用于设置HTML页面中的文本内容(字体、大小、对齐方式等)、图片的外形(宽高、边框样式边距等)以及版面的布局和外观显示样式。

CSS让我们的网页更加丰富多彩,布局更加灵活自如。简单理解:CSs可以美化HTML,让HTML更漂亮,让页面布局更简单。

总结
1.HTML主要做结构显示元素内容。
2.CSS美化HTML,布局网页。
3.CSS最大价值:由HTML专注去做结构呈现,样式交给css,即结构(HTML)样式(css )相分离。

03-体验CSS语法规范

使用HTML时,需要遵从一定的规范,CSS也是如此。要想熟练地使用CSS对网页进行修饰,首先需要了解CSS样式规则。
CSS规则由两个主要的部分构成:选择器以及一条或多条声明。

  • 选择器是用于指定CSS样式的HTML标签,花括号内是对该对象设置的具体样式
  • 属性和属性值以”键值对”的形式出现
  • 属性是对指定的对象设置的样式属性,例如字体大小、文本颜色等
  • 属性和属性值之间用英文”:”分开
  • 多个”键值对”之间围英文”;”进行区分

在head之间写css选择器style

1
2
3
4
<style>
/* 选择器{样式} */
p {color: red;font-size: 12px;}
</style>

04-CSS代码风格

以下代码书写风格不是强制规范,而是符合实际开发书写方式。

1
2
3
1.样式格式书写
2.样式大小写风格
3.样式空格风格

1.样式格式书写

①紧凑格式

1
h3 {color: deeppink; fonttsize: 20px;}

②展开格式

1
2
3
4
h3 {
color: pink;
font-size: 20px;
}

强烈推荐第二种格式,因为更直观。

2.样式大小写风格

1
2
3
h3 {
color: pink;
}
1
2
3
н3 {
COLOR: PINK;
}

强烈推荐样式选择器,属性名,属性值关键字全部使用小写字母,特殊情况除外。

3.样式空格风格

1
2
3
h3 {
color: pink;
}

① 属性值前面,冒号后面,保留一个空格

② 选择器(标签)和大括号中间保留空格

05-CSS选择器的作用

1
2
3
4
5
6
7
8
9
<div>我是div</div>
<div>我是divk/div>
<p>我是段落</p>
<ul>
<li>我是ul里面小i哦</li>
</ul>
<ol>
<li>我是ol里面小i哦</li>
</ol>

1.我想把div里面的文字改为红色?
2.我想把第一个div里面的文字改为红色?
3.我想把ul里面的li文字改为红色?

选择器(选择符)就是根据不同需求把不同的标签选出来这就是选择器的作用。简单来说,就是选择标签用的。

以上CSS做了两件事:
1.找到所有的h1标签。选择器(选对人)。
2.设置这些标签的样式,比如颜色为红色(做对事)。

06-标签选择器

选择器分类
选择器分为基础选择器复合选择器两个大类,我们这里先讲解一下基础选择器。

  • 基础选择器是由单个选择器组的
  • 基础选择器又包括:标签选择器、类选择器、id选择器和通配符选择器

标签选择器

标签选择器(元素选择器)是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。

语法:

1
2
3
4
5
6
标签名 {
属性1:属性值1;
属性2:属性值2;
属性3:属性值3;
...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	<style>
p {
color:green;
}
div {
color:pink;
}
</style>
</head>
<body>
<p>男生</p>
<p>男生</p>
<p>男生</p>
<div>女生</div>
<div>女生</div>
<div>女生</div>
</body>

作用
标签选择器可以把某一类标签全部选择出来,比如所有的<div>标签和所有的<span>标签。
优点
能快速为页面中同类型的标签统一设置样式。
缺点
不能设计差异化样式,只能选择全部的当前标签。

07-类选择器

如果想要差异化选择不同的标签,单独选一个或者某几个标签,可以使用类选择器。

类选择器在HTML中以class属性表示,在CSS中,类选择器以一个点”.”号显示。

语法:

1
2
3
.类名 {
属性1:属性值1;
}

例如,将所有拥有red类的HTML元素均为红色。

1
2
3
.red {
color: red;
}

结构需要用class属性来调用class类的意思

1
<div class='red'>变红色</div>

注意
① 类选择器使用”.”(英文点号)进行标识,后面紧跟类名(自定义,我们自己命名的)。
② 可以理解为给这个标签起了一个名字,来表示。
③ 长名称或词组可以使用中横线来为选择器命名。(如:.star-sing)

④ 不要使用纯数字、中文等命名,尽量使用英文字母来表示。

⑤ 命名要有意义,尽量使别人一眼就知道这个类名的目的。
⑥ 命名规范:见附件(Web前端开发规范手册.doc)

记忆口诀:样式点定义,结构类调用。一个或多个,开发最常用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	<style>
/*类选择器口读:样式点定义 结构类(cLass)调用一个或多个开发最常用*/
.red {
color:Ored;
}
.star-sing{
color:Ogreen;
}
</style>
</head>
<body>
<ul>
<li class="red">冰雨</1i>
<1i class="red">来生缘</li>
<1i>李香兰</li>
<1i>生僻字</li>
<li class="starising">江南style</1i>
</ul>
<div class="red">我也想变红色</div>
</body>

08-使用类选择器画盒子

案例:课堂案例

通过这个案例练习两个地方:
1.类选择器的使用
2.diy就是一个盒子用来装网页内容的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	<style>
.red {
width: 100px;
height: 100px;
/*背景颜色*/
background-color:red;
}
.green {
width: 100px;
height: 100px;
background-color: Dgreen;
}
</style>
</head>
<body>
<div class="red">红色</div>
<div class="green">绿色</div>
<div class="red">红色</div>
</body>

09-类选择器特殊使用-多类名

我们可以给一个标签指定多个类名,从而达到更多的选择目的。这些类名都可以选出这个标签简单理解就是一个标签有多个名字。

1.多类名使用方式

(1)在标签class属性中写多个类名
(2)多个类名中间必须用空格分开
(3)这个标签就可以分别具有这些类名的样式

1
<div class="red font20">亚瑟</div>
1
2
3
4
5
6
7
8
9
10
11
12
	<style>
.red {
color: red;
}
.font35 {
font-size: 35px;
}
</style>
</head>
<body>
<div class="red font35">刘德华</div>
</body>

2.多类名开发中使用场景
(1)可以把一些标签元素相同的样式(共同的部分)放到一个类里面。
(2)这些标签都可以调用这个公共的类然后再调用自己独有的类。
(3)从而节省CSs代码统一修改也非常方便。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
	<style>
.box {
width: 100px;
height: 100px;
}
.red {
/*背景颜色*/
background-color:red;
}
.green {
background-color: Dgreen;
}
</style>
</head>
<body>
<div class="box red">红色</div>
<div class="box green">绿色</div>
<div class="box red">红色</div>
</body>

类选择器

1
2
3
4
<div class="pink fontweight font20">亚瑟</div>
<div class="font20">刘备</div>
<div class="font14 pink">安其拉</div>
<div class="font14">貂蝉</div>
  • 各个类名中间用空格隔开
  • 简单理解:就是给某个标签添加了多个类,或者这个标签有多个名字这个
  • 标签就可以分别具有这些类名的样式
  • 从而节省CSS代码统一修改也非常方便
  • 多类名选择器在后期布局比较复杂的情况下,还是较多使用的

10-id选择器

id选择器可以为标有特定id的HTML元素指定特定的样式。
HTML元素以id属性来设置id选择器,CSS中id选择器以“#”来定义。

语法:

1
2
3
4
#id名 {
属性1: 属性值1;
...
}

例如,将id为nav元素中的内容设置为红色。

1
2
3
#nav {
color: red;
}

注意:id属性只能在每个HTML文档中出现一次。口诀:样式#定义,结构id调用,只能调用一次,别人切勿使用.

1
2
3
4
5
6
7
8
9
10
11
12
	<style>
/*id选择器的口诀:样式定义,结构d调用,只能调用一次,别人切勿使用*/
#pink {
color: pink;
}
</style>
</head>
<body>
<div id="pink">迈克尔·杰克逊</div>
<div>pink老师</div>
</body>
</html>

id选择器和类选择器的区别

① 类选择器(class)好比人的名字,一个人可以有多个名字,同时一个名字也可以被多个人使用。

② id选择器好比人的身份证号码,全中国是唯一的,不得重复。

③ id选择器和类选择器最大的不同在于使次次数上。

④ 类选择器在修改样式中用的最多,id选择器一般用于页面唯一性的元素上,经常和JavaScript搭配使用。

11-通配符选择器

在CSS中,通配符选择器使用”*”定义,它表示选取页面中所有元素(标签)。

语法

1
2
3
4
* {
属性1: 属性1值;
...
}
  • 通配符选择器不需要调用,自动就给所有的元素使用样式
  • 特殊情况才使用,后面讲解使用场景(以下是清除所有的元素标签的内外边距后期讲)
1
2
3
4
* {
margin: 0;
padding: 0;
}

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
	<style>
* {
color: red;
}
/**这里把html body div span li等等的标签都改为了红色*/
</style>
</head>
<body>
<div>我的</div>
<span>我的</span>
<ul>
<li>还是我的</li>
</ul>
</body>

基础选择器总结

选择器 作用 特点 使用情况 用法
标签选择器 选出所有标签 不能差异化选择 较多 p{color: red;}
类选择器 可选择一个或多个标签 根据需求选择 非常多 .nav{color: red;}
id 选择器 一次只能选一个标签 ID 属性只能在每个 HTML 文档中出现一次 一般和 js 搭配 #nav{color: red;}
通配符选择器 选择所有标签 不需要调用 特殊情况使用 *{color: red;}
  • 每个基础选择器都有使用场景,都需要掌握
  • 如果是修改样式,类选择器是使用最多的

12-font-family设置字体系列

CSS Fonts(字)属性用于定义字体系列、大小、粗细、和文字样式(如斜体)。

CSS使用font-family属性定义文本的字体系列。

1
2
p { font-family: "微软雅黑";}
div { font-family: Arial,"Microsoft Yahei","微软雅黑";}
  • 各种字体之间必须使用英文状态下的逗号隔开
  • 一般情况下,如果有空格隔开的多个单词组成的字体加引号.
  • 尽量使用系统默认自带字体,保证在任何用户的浏览器中都能正确显示
  • 最常见的几个字体:body{font-family:’Microsoft YaHei’, tahoma,arial,’Hiragino Sans GB’;)

#最后一点:先优先用第一种字体,如果没有再用第二种,以此类推

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	<style> 
h2 {
font-family: '微软雅黑';
}
p {
/* font-family: 'Microsoft YaHei', Arial, Helvetica, sans-serif;*/
font-family: 'Times New Roman', Times, serif;
}
</style>
</head>
<body>
<h2>pink的秘密</h2>
<p>那一抹众人中最漂亮的颜色,</p>
<p>优雅,淡然,又那么心中清澈.</p>
<p>前端总是伴随着困难和犯错,</p>
<p>静心,坦然,攻克一个又一个.</p>
<p>拼死也要克服它.</p>
</body>

13-font-size字号大小

CSS使用font-size属性定义字体大小。

1
2
3
4
p {
/* 字体大小 */
font-size: 14px;
}
  • px(像素)大小是我们网页的最常用的单位
  • 谷歌浏览器默认的文字大小为16px
  • 不同浏览器可能默认显示的字号大小不一致,我们尽量给一个明确值大小,不要默认大小
  • 可以给body指定整个页面文字的大小
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
	<style> 
body {
font-size: 16px;
}
/*标题标签比较特殊,需要单独指定文字大小*/
h2 {
font-size: 16px;
}
</style>
</head>
<body>
<h2>pink的秘密</h2>
<p>那一抹众人中最漂亮的颜色,</p>
<p>优雅,淡然,又那么心中清澈.</p>
<p>前端总是伴随着困难和犯错,</p>
<p>静心,坦然,攻克一个又一个.</p>
<p>拼死也要克服它.</p>
</body>

14-font-weigh字体粗细

CSS 使用 font-weigth 属性定义文本的字体粗细

1
2
3
p {
font-weight: bold;
}
属性值 描述
normal 默认值(正常不加粗)400
bold 定义粗体(加粗)700
100-900 字数后不跟单位

学会让加粗标签(比如h和strong等)不加粗,或者其他标签加粗

实际开发时,我们更喜欢用数字表示粗细

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>
body {
/* 字体加粗 */
/* font-weight: bold等价于700; */
/* 实际开发中一般都用数字;*/
font-weight: bold;
font-weight: 700;
}
h4 {
/* 标题减去加粗效果 */
/* font-weight: normal等价于400; */
font-weight: normal;
font-weight: 400;
}
</style>
</head>
<body>
<h2>pink的秘密</h2>
<p>那一抹众人中最漂亮的颜色,</p>
<p>优雅,淡然,又那么心中清澈,</p>
<p>前端总是伴随着困难和犯错,</p>
<p>静心,坦然,攻克一个又一个,</p>
<p class="bold">拼死也要克服它.</p>
</body>

15-font-style字体样式

CSS 使用 font-style 属性定义文本的字体风格

1
2
3
p {
font-style: normal;
}
属性值 作用
normal 默认值,显示标准字体样式
italic 斜体

不常用,一般用于给斜体标签 <em> <i> 改为正常样式

1
2
3
4
5
6
<style>
/* 斜体变为正常 */
em {
font-style: normal;
}
</style>

16-font复合属性写法

CSS Fonts(字体)属性用于定义字体系列、大小、粗细、和文字样式(如斜体)。
字体复合属性
字体属性可以把以上文字样式综合来写,这样可以更节约代码:

1
2
3
4
5
<style>
body{
font: font-style font-weigth font-size/line-height font-family;
}
</style>

原始:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
	<style>
/*想要div文字变倾斜加粗字号设置为16像素并且是微软准黑*/
div{
font-style: italic;
font-weight: 700;
font-size: 16px;
font-family: Microsoft yahei';
}
</style>
</head>
<body>
<div>三生三世十里桃花,一心一意百行代码</div>
</body>
</html>

复合属性写法:

1
2
3
4
5
6
7
8
9
10
11
12
	<style>
div{
/*复合属性:简写的方式节约代码*/
/*font:font-style font-weight font-size/line-height font-family;*/
font:italic 700 16px 'Microsoft yahei';
}
</style>
</head>
<body>
<div>三生三世十里桃花,一心一意百行代码</div>
</body>
</html>
  • 使用 font 属性时,必须按照语法格式中的顺序书写,各个属性以空格隔开
  • 不需要设置的属性可以省略,但必须保留 font-size font-family 属性,否则 font 属性不起作用

17-字体属性总结

属性 表示 注意点
font-family 字体 实际工作中按照团队约定来写字体
font-size 字号 单位是 px我们通常用的单位是px像素,一定要跟上单位
font-weight 字体粗细 记住加粗是700或者bold不加粗是normal或者400记住数字不要跟单位
font-style 字体样式 记住倾斜是italic 不倾斜是normal工作中我们最常用normal
font 复合属性 1.字体连写是有顺序的不能随意换置
2.其中字号和字体必须要同时出现
  • 字体复合属性如何写?里面有什么注意细节?
  • 如果让加粗的文字不加粗显示,如何让倾斜的文字不倾斜显示?

18-文本颜色color

CSS文本属性
CSS Text(文本)属性可定义文本的外观,比如文本的颜色、对齐文本、装饰本、文本缩进、行间距等。

color 属性用来定义颜色

1
2
3
4
5
6
7
8
9
10
<style>
div {
/*预定义巧克力色*/
color: chocolate;
/*rgb 粉色*/
color: rgb(255, 0, 128);
/*十六进制白色*/
color: #ffffff;
}
</style>
表示 属性值
预定义颜色 red、green、blue…
十六进制 #FF0000、#FF6600、#29D794
RGB代码 rgb(255,0,0) 或 rgb(100%,0%,0%)

开发中最常用的是十六进制.

19-文本对齐text-align

text-align 属性用于设置元素内文本内容的水平对齐方式

1
2
3
4
5
6
<style>
div {
/*本质是让h1盒子里面的文字水平居中对齐*/
text-align: center;
}
</style>
属性值 解释
left 左对齐(默认)
right 右对齐
center 居中对齐

20-文本装饰text-decoration

text-decoration 属性规定添加到文本的修饰。可以给文本添加下划线、删除线、上划线等

1
2
3
div {
text-decoration: underline;
}
属性值 描述
none 默认,没有装饰线
underline 下划线
overline 上划线
line-though 删除线

pink老师总结:重点记住如何添加下划线?如何删除下划线?其余了解即可.

取消超链接下划线常用装饰文本none属性值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<style>
div {
/*下划线*/
text-decoration: underline;
}
a {
/* 取消超链接下划线 */
text-decoration: none;
/* 右对齐 */
text-align: right;
/* 定义颜色 */
color: rgb(255, 128, 0);
}
</style>
</head>
<body>
<div>
#quote @安迪斯晨风: “生活在银河系第三旋臂一颗普通恒星光焰辐射范围内的细小生命,正在欢庆它们居住的行星完成了一次公转。”
</div>
<a href="https://m.weibo.cn/detail/4588484629895705" >weibo</a>

21-文本缩进text-indent

text-indent 属性用来指定文本第一行的缩进,通常是段落的首行缩进

1
2
3
div {
text-indent: 10px;
}

通过该设置,所有元素的第一行都可以缩进一个给定长度,甚至该长度可以是负值

1
2
3
p {
text-indent: 2em;
}

em是一个相对单位,就是当前元素(font-size)1个文字的大小,如果当前元素没有设置大小,则会按照父元素的1个文字大小。

1
2
3
4
5
6
7
8
9
<style>
p {
font-size: 24px;
/*文本的第一行首行缩进多少距离*/
/*text-indent:20px;*/
/*如果此时写了2em则是缩进当前元素2个文字大小的距离*/
text-indent: 2em;
}
</style>

22-行间距line-height

line-height 属性用于设置行间的距离(行高),可以控制文字行与行之间的距离。

1
2
3
4
<p>
/* 设置行间距为25像素 */
line-height: 25px;
</p>

23-CSS文本属性总结

属性 表示 注意
color 文本颜色 我们通常用十六进制比如而且是简写形式#fff
text-align 文本对齐 设定文字水平对齐方式
text-indent 文本缩进 通常我们用于段落首行缩进2个字的距离text-indent:2em;
text-docration 文本修饰 记住添下underline取消下划线none
line-height 行高 控制行与行之间的距离

24-内部样式表

按照 CSS 样式书写的位置(或引入方式),CSS 样式表可以分为三大类:

  1. 行内样式表(行内式)
  2. 内部样式表(嵌入式)
  3. 外部样式表(链接式)

内样式表

内部样式表(内嵌样式表)是写到html页面内部是将所有的css代码抽取出来,单独放到一个 <style> 标签中。

  • <style> 标签理论上可以放在 HTML 文档的任何地方,但一般放在 <head> 标签中
  • 通过此种方式,可以方便的控制当前整个页面中的元素样式表
  • 代码结构清晰,单并没有实现结构样式分离
  • 使用内部样式表设定CSS,通常也被称为嵌入式引入,这种方式是我们练习时常用的方式

25-行内样式表

行内样式表(内联样式表)是在元素标签内部的style属性中设定CSS样式。适合于修改简单样式

1
<div style="color: red;font-size: 12px;">青春不常在,抓紧谈恋爱</div>
  • style其实就是标签的属性
  • 在双引号中间,写法要符合CSS规范
  • 可以控制当前的标签设置样式
  • 由于书写繁琐,并且没有体现出结构与样式相分离的思想,所以不推荐大量使用,只有对当前元素添加简单样式的时候,可以考虑使用
  • 使用行内样式表设定CSS,通常也被称为行内式引入

26-外部样式表

实际开发都是外部样式表,适用于样式比较多的情况。核心是把样式单独写到 CSS 文件中,之后把 CSS 文件引入到 HTML 页面中使用

引入外部样式表分为两步:

  1. 新建一个后缀名为 .css 的样式文件,把所有代码都放入此文件中
  2. 在 HTML 页面中,使用 <link> 标签引入这个文件:
1
<link rel="stylesheet" href="style.ss">

style.css

1
2
3
4
/*这css文件里面只有样式没有标签*/
div {
color: pink;
}

.html

1
2
3
4
5
6
7
8

<title>外部样式表</title>
<link rel="stylesheet" href="style.css">
</head>
body
<div>来呀、快活呀,反正有大把时间...</div>
</body>
</html>
属性 作用
rel 定义当前文档与被链接文档之间的关系,在这里指定为 “stylesheet” ,表示被链接的文档是一个样式表文件
href 定义所链接外部样式表文件的 url,可以是相对路径,也可以是绝对路径

27-CSS引入方式总结

样式表 优点 缺点 使用情况 控制范围
行内样式表 书写方便,权重高 结构样式混写 较少 控制一个标签
内部样式表 部分结构和样式相分离 没有彻底分离 较多 控制一个页面
外部样式表 完全实现结构样式相分离 需要引入 最多 控制多个页面

28-综合案例新闻页面

案例:新闻页面

制作页面整体可以分为两步:

1.搭建html结构页面
2.修改CSS样式

1
2


29-chrome调试工具使用

Chrome 浏览器提供的调试工具可以用来调试 HTML 结构和 CSS 样式:

打开调试工具:F12 、鼠标右键 — 检查 、Ctrl + Shift + I

使用调试工具

  1. Ctrl + 鼠标滚轮 可以放大缩小开发者工具代码,Ctrl + 0 复恢复默认大小
  2. 左边是 HTML 元素结构,右边是 CSS 样式
  3. 右边 CSS 样式可以改动数值和查看颜色
  4. 如果点击元素发现右侧没有样式引入,有可能是类名或者样式引入错误
  5. 如果样式前面有黄色感叹号提示,表示样式属性书写错误

30-CSS第二天导读

目标

1
2
3
4
5
6
7
能使用emmet语法
能够使用CSS复合选择器
能够写出伪类选择器的使用规范
能够说出元素有几种显示模式
能够写出元素显示模式的相互转换代码
能够写出背景图片的设置方式
能够计算CSS的权重

目的

1
2
3
4
5
6
Emmet语法
CsS的复合选择器
css的元素显示模式
CSS的背景
css的三大特性
CSS的注释

31-emmet语法生成html标签

Emmet 语法的前身是 Zen cooding,它使用缩写来提高 html 和 css 的编写速度,Vscode内部已集成该语法

1.快速生成HTML结构语法

(1)生成标签直接输入标签名按tab键即可 比如div 然后tab键,就可以生成<div></div>
(2)如果想要生成多个相同标签加上*就可以了比如div*3就可以快速生成3个div
(3)如果有父子级关系的标签,可以用 > 比如 ul> li就可以了
(4)如果有兄弟关系的标签,用+就可以了比如div+p
(5)如果生成带有类名或者id名字的,直接写.demo或者#two tab键就可以了(p.one 不带p就是默认div)
(6)如果生成的div类名是有顺序的,可以用自增符号 $
(7)如果想要在生成的标签内部写内容可以用{}表示(div{我最帅} – <div>我最帅</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
57
58
59
60
<!-- 生成多个相同标签 -->
<!-- div*5 -->
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<!-- 生成有父子关系的标签 -->
<!-- div>span -->
<div><span></span></div>
<!-- ul>li -->
<ul>
<li></li>
</ul>
<!-- 生成有兄弟关系的标签 -->
<!-- h4+p -->
<h4></h4>
<p></p>
<!-- 生成有类名或id名的标签 -->
<!-- . -->
<div class=""></div>
<!-- .color -->
<div class="color"></div>
<!-- #banner -->
<div id="banner"></div>
<!-- p.gray -->
<p class="gray"></p>
<!-- p#red -->
<p id="red"></p>
<!-- ul>li#two -->
<ul>
<li id="two"></li>
</ul>
<!-- tr#my>td -->
<tr id="my">
<td></td>
</tr>
<!-- 生成有顺序的类名 -->
<!-- .demo$*5 -->
<div class="demo1"></div>
<div class="demo2"></div>
<div class="demo3"></div>
<div class="demo4"></div>
<div class="demo5"></div>
<!-- p.$*3 -->
<p class="1"></p>
<p class="2"></p>
<p class="3"></p>
<!-- p#$*3 -->
<p id="1"></p>
<p id="2"></p>
<p id="3"></p>
<!-- div{生成标签默认显示文字} -->
<div>生成标签默认显示文字</div>
<!-- p{$}*5 -->
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
<p>5</p>

shift+alt+上下拖动光标 可以在不同行同一位置批量编辑内容

32-emmet语法快速生成css样式

CSS基本采取简写形式即可
1.比如w200 按tab可以生成width: 200px;
2.比如1h26 按tab可以生成line-height: 26px;

首字母简写

1
2
3
4
5
6
7
8
9
10
11
12
<style>
/* CSS语法 */
p {
/* 首字母简写 */
/* w100 */
width: 100px;
/* h30 */
height: 30px;
/* fsi */
font-style: italic;
}
</style>

33-快速格式化代码

  • Vscode 快捷键:Shift + Alt +F

  • 设置保存页面时自动格式化代码:

    设置 — 搜索 format — 选中 “format on save(在保存时格式化文件)”

也可以设置当我们保存页面的时候自动格式化代码:

1)文件—->【首选项】-【设置】;
2)搜索emmet.include;
3)在settings.json下的【用户】中添加下语句:
“editor.formatOnType”: true,
“editor.formatOnSave”: true

只需要设置一次即可,以后都可以自动保存格式化代码

34-复合选择器简介

在CSS中,可以根据选择器的类型把选择器分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基本选择器进行组合形成的。

  • 复合选择器可以更准确、更高效的选择目标元素(标签)
  • 复合选择器是由两个或多个基础选择器,通过不同的方式组合而成的
  • 常用的复合选择器包括:后代选择器、子选择器、并集选择器、伪类选择器等等

35-后代选择器

后代选择器又称为包含选择器,可以选择父元素里面子元素。其写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔。当标签发生嵌套时,内层标签就成为外层标签的后代。

1
2
元素1 元素2 {样式声明}
/*选择元素1里面的所有元素2*/

上述语法表示选择元素1里面的所有元素2(后代元素)。
例如:

1
ul 1i { 样式声明 } /*选择ul里面所有的1i标签元素*/
  • 元素 1 与元素 2 中间用 空格隔开
  • 元素 1是父级,元素 2 是子级,最终选择元素 2
  • 元素2可以是儿子,也可以是孙子等,只要是元素1的后代即可
  • 元素 1 和元素 2 可以是任意基础选择器
1
2
3
4
5
6
7
8
9
10
11
12
13
<style>
ul li a {
color: coral;
}

div p {
color: firebrick;
}
/* 出现多个ul的时候,可以将需要css的ul设置class为nav*/
.nav li {
color: blue;
}
</style>

1
2
3
4
5
6
7
<style>
/* :focus 伪类选择器 */
input:focus {
color: #fff;
background-color: #000;
}
</style>

36-子元素选择器

子元素选择器(子选择器)只能选择作为某元素的最近一级子元素。简单理解就是选亲儿子元素.

语法:

1
2
元素1>元素2 {样式声明}
/*选择元素1里面的所有直接后代*/

上述语法表示选择元素1里面的所有直接后代(子元素)元素2。
例如:

1
div > p {样式声明} /* 选择div里面所有最近一级p标签元素*/
  • 元素 1 和元素 2 中间用>大于号隔开
  • 元素 1 是父级,元素 2 是子级,最终选择的是元素 2
  • 元素 2 必须是亲儿子(最近一级),其孙子、重孙之类都不归他管.你也可以叫他亲儿子选择器
1
2
3
4
5
<style>
ol>li {
color: green;
}
</style>

37-课堂练习

课堂提问?
1.请将下面的链接文字修改为红色。

1
2
3
4
5
6
<div class="nav">
<ul>
<li><a href="#">百度</a></1i>
<li><a href="#">百度</a></1i>
</ul>
</div>

答案:

1
2
3
.nav ul li a {
color: red;
}

2.请将下面的大肘子文字修改为红色。

1
2
3
4
5
6
7
<div class="hot">
<a href="#">大肘子</a>
<ul>
<li><a href="#">猪头</a></1i>
<li><<a href="#">猪尾巴</a></1i>
</ul>
</div>

答案:

1
2
3
.hot>a {
color: red;
}

38-并集选择器

并集选择器可以选择多组标签,同时为他们定义相同样式,同常用于集体声明.

并集选择器是各选择器通过英文逗号(,)连接而成,任何形式的选择器都可以作为并集选择器的一部分。

语法:

1
2
元素1,元素2 { 样式声明 }
/*选择元素1和元素2*/

例如:

1
ul,div { 样式声明 } /*选择ul和div标签元素*/
  • 元素 1 和 元素 2 中间用,逗号隔开
  • 逗号理解为和的意思
  • 并集选择器通常用于集体声明
  • 任何形式的选择器都可以作为并集选择器的一部分
1
2
3
4
5
6
7
8
9
10
<style>
div,
p,
.pig li {
font-weight: 700;
font-size: 20px;
}
/*约定的语法规范,我们并集选择器喜欢竖着写*/
/*一定要注意,最后一个选择器不需要加逗号*/
</style>

39-链接伪类选择器(上)

伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第1个,第n个元素。
伪类选择器书写最大的特点是用冒号(:)表示,比如:hover、:first-child.
因为伪类选择器很多,比如有链接伪类、结构伪类等,所以这里先给大家讲解常用的链接伪类选择器。

链接伪类选择器

a:link 选择所有未被访问的链接
a:visited 选择所有已被访问的链接
a:hover 选择鼠标指针位于其上的链接
a:active 选择活动链接(鼠标按下未弹起)
注意事项:(链接伪类的爱恨情仇)

效果如下:

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
<style>
/* 未被访问链接 */
a:link {
text-decoration: none;
color: #333;
}

/* 访问过的链接 */
a:visited {
color: lightcoral;
}

/* 鼠标指针悬停 */
a:hover {
color: lightskyblue;
}

/* 鼠标选择未释放 选择的是我们鼠标正在按下还没有弹起鼠标的那个链技 */
a:active {
color: magenta;
}

/*实际开发中的应用*/
a {
color: #333;
text-decoration: none;
}
a:hover {
text-decoration: none;
color: #369;
}
</style>

40-链接伪类选择器(下)

一链接伪类选择器注意事项.
二链接伪类选择器实际开发中的写法.
链接伪类选择器注意事项
1.为了确保生效,请按照LVHA的循顺序声明:link-visited- :hover- :active。
2.记忆法:love hate或者Iv包包hao。(链接伪类的爱恨情仇)

3.因为a链接在浏览器中具有默认样式,所以我们实际工作中都需要给链接单独指定样式。

41-focus伪类选择器

:focus 伪类选择器用于选取获得焦点的表单元素

焦点就是光标,一般情况 <input> 类表单元素才能获取,因此这个选择器主要针对表单元素来说

效果:

1
2
3
4
5
6
7
<style>
/* :focus 伪类选择器 */
input:focus {
color: #fff;
background-color: #000;
}
</style>

42-复合选择器总结

复合选择器总结

选择器 作用 特征 使用状况 符号及用法
后代选择器 选择后代元素 可以是子孙后代 较多 .nav a
子元素选择器 选择最近元素 只选亲儿子 较少 .nav>p
并集选择器 选择某些相同样式元素 可用于集体声明 较多 .nav,.head
链接伪类选择器 选择不同状态的链接 链接相关 较多 实际开发常用a{} 与 a:hover
:focus 伪类选择器 选择获得光标的表单 表单相关 较少 input:focus

43-什么是元素显示模式

了解元素的显示模式可以更好的让我们布局页面.
1.什么是元素的显示模式
2.元素显示模式的分类
3.元素显示模式的转换

什么是元素显示模式?

世界上离不开男人女人,根据不同特点通力合作共建美好家园。

作用:网页的标签非常多,在不同地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页。

元素显示模式就是元素(标签)以什么方式进行显示,比如<div>自己占一行,比如一行可以放多个<span>

元素显示模式指元素显示的方式,HTML 元素一般分为块元素行内元素两种类型

44-块元素

常见的块元素有:<h1> ~ <h6><p><div><ul> <ol><li> 等,其中 <div> 标签是典型的块元素

特点:

  • 独占一行
  • 高度、宽度、外边距及内边距都可以控制
  • 宽度是默认容器(父级宽度)的100%
  • 是一个容器及盒子,里面可以放行内或块级元素

注意:

  • 文字类的元素不能使用块级元素
  • <p> 标签主要用于存放文字,因此 <p> 里面不能放块级元素,特别是 <div>
  • <h1> ~ <h6> 都是文字类块级元素,里面也不能放块级元素

45-行内元素

常见的行内元素有 <a><strong><b><em><i><del><s><ins><u><span> 等,其中 <span> 标签是典型的行内元素,也称内联元素

特点:

  • 相邻行内元素在一行上,一行可以显示多个

  • 高、宽设置无效

  • 默认宽度是本身宽度

  • 行内元素只能容纳文本或其他行内元素

注意:

  • 链接元素内不能再放链接
  • 特殊情况链接 <a> 里面可以放块元素,需转换块级模式,但是<a>转换一下块级模式最安全

46-行内块元素

行内元素中有几个特殊的标签:<img /><input /><td>、同时具有块元素和行内元素的特点,有些资料称它们为行内块元素

特点:

  • 和相邻行内元素在一行上,一行可以显示多个,元素间有空隙(行内元素特点)
  • 默认宽度就是本本身内容宽度(行内元素特点)
  • 高度、行高、外边距及内边距都可以控制(块级元素特点)

47-元素显示模式总结

元素显示模式 元素排列 设置样式 默认宽度 包含
块元素 一行只能个放一个 可以设置宽度高度 容器的100% 容器可以包含任何标签
行内元素 一行可以放多个 不可以直接设置宽高 本身内容宽度 容纳文本或其他行内元素
行内块元素 一行放多个 可以设置宽高 本身内容宽度

48-显示模式的换

特殊情况下,我们需要元素模式的转换,简单理解一个模式的元素需要另外一种模式的特性比如想要增加链接<a>的触发范围。

元素显示模式转换

  • 转换为块元素:display:block
  • 转换为行内元素:display:inline
  • 转换为行内块:display:linline-block

单行文字垂直居中

1
height = linehight

49-一个小工具snipaste的使用

Snipaste是一个简单但强大的截图工具,也可以让你将截图贴回到屏幕上.
常用快捷方式:
1.F1可以截图.同时测量大小,设置箭头书写文字等
2.F3在桌面置顶显示
3.点击图片,alt可以取色(按下shift可以切换取色模式)
4.按下esc取消图片显示

50-简洁版小米侧边栏案例

案例:简洁版小米侧边栏
案例的核心思路分为两步:
1.把链接a转换为块级元素,这样链接就可以单独占一行,并且有宽度和高度
2.鼠标经过a给链接设置背景颜色

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
	<style>
/*1.把a转换为块级元素*/
a {
display: block;
width: 230px;
height: 40px;
background-color: #55585a;
font-size: 14px
color: #fff;
text-decoration: none;
text-indent: 2em;
}
/*2鼠标经过链接变换背景颜色*/
ahover {
background-color: #ff6700
}
</style>
</head>

<body>
<a href="#">手机 电话卡</a>
<a href="#">电视 盒子</a>
<a href="#">笔记本 平板</a>
<a href="#">出行 穿戴</a>
<a href="#">智能 路由器</a>
<a href="#"健康 儿童</a>
<a href="#">耳机 音响</a>
</body>
</html>

51-单行文字垂直居中的原理

一个小技巧单行文字垂直居中的代码
CSS没有给我们提供文字垂直居中的代码这里我们可以使用一个小技巧来实现。
解决方案:让文字的行高等于盒子的高度就可以让文字在当前盒子内垂直居中

单行文字垂直居中的原理

简单理解:行高的上空隙和下空隙把文字挤到中间了,是如果行高小于盒子高度,文字会偏上如果行高大于盒子高度,则文字偏下

52-背景颜色

通过 CSS 背景属性,可以给页面元素添加背景样式

背景属性可以设置 背景颜色、背景图片、背景平铺、背景图片位置、背景图像固定等

背景颜色

background-color 属性定义了元素的背景颜色,一般情况下背景元素颜色默认值是 transparent (透明)

53-背景图片

background-image 属性定义了元素背景图片,实际开发常见于 logo 或者一些装饰星的小图片或者是超大的背景图片,优点事非常便于控制位置

1
background-image: none | url(url)
参数值 作用
none 无背景图片(默认)
url 使用绝对地址或相对地址指定背景图片

54-背景平铺

background-repeat 定义背景图片的平铺效果

1
background-repeat: repeat
参数值 作用
repeat 背景图片在纵向和横向上平铺()默认
no-repeat 背景图片不平铺
repeat-x 背景图片横向平铺
repeat 背景图片纵向平铺

55-背景位置-方位名词

background-position 定义图片在背景中的位置

1
background-position:x y;

参数代表的意思是:x 坐标和 y 坐标,可以使用方位名词,或者精确单位

参数值 说明
length 百分数|由浮点数字和单位标识符组成的长度单位
position top|center|bottom|left|center|right 等方位名词

1.参数是方位名词

  • 如果指定的两个值都是方位名词,则两个值前后顺序无关,left toptop left 效果一致
  • 如果只指定了一个方位词,另一个省略,则第二个值默认居中

2.参数是精确单位

  • 如果参数值是精确坐标,那么第一个肯定是 x 坐标,第二个一定是 y 坐标
  • 如果指定一个数值,那该数值一定是 x 坐标,另一个默认垂直居中

3.参数是混合单位

  • 如果指定的两个值是精确单位和方位名词混合使用,则第一个值是 x 坐标,第二个值是 y 坐标

56-背景位置案例一

57-背景位置案例二-王者荣耀背景图片

58背景位置-精确单位

59-背景位置-混合单位

background-attachment 属性设置背景图像是否固定或者随着页面的其余部分滚动,后期可以制作视差滚动效果

1
background-attachment: scroll | fixed
参数 作用
scroll 背景图像随着对象内容滚动
fixed 背景图像固定

60-背景固定

61-背景属性复合写法

为了简化背景属性代码,可以将这些属性合并简写在同一个属性 background 中,节约代码量

一般习惯约定顺序、实际开发中更提倡写法:

background:背景颜色 背景图片地址 背景平铺 背景图像滚动 背景图片位置

1
background: transparent url(image.jpg) repaet-y fixed top;

62-背景颜色半透明

1
background: rgba(0,0,0,0.3)
  • 最后一个参数是 alpha 透明度,取值范围在 0~1 之间
  • 习惯把 0.3 省写为 .3 background:rgba(0,0,0,.3)
  • 注意:背景半透明是指盒子背景半透明,盒子里的内容不受影响
  • CSS 新增属性,是 IE9 以上版本浏览器支持的
  • 实际开发不太关注兼容性写法,可以放心使用

63-背景总结

属性 作用
background-color 背景颜色 预定义的颜色值/十六进制/RGb代码
background-image 背景图片 url图片路径
background-repeat 是否平铺 repeat/no-repeat/repeat-x/repeat-y
background-position 背景位置 length/position 分别是x和y坐标
background-attachment 背景附着 scroll(背景滚动)/fixed(背景固定)
背景简写 书写更简单 背景颜色、背景图片地址、背景平铺、背景滚动、背景位置
背景色半透明 backound:rgba(0,0,0,.6)括号内 4 4个值

背景图片实际开发常见于 logo 或者一些装饰性的小图片或者超大的背景图片,优点是非常便于控制

64综合案例-五彩导航(上)

练习价值:
1.链接属于行内元素,但是此时需要宽度高度,因此需要模式转换
2.里面文字需要水平居中和垂直居中因此需要单行文字垂直居中的代码.
3.链接里面需要设置背景图片因此需要用到背景的相关属性设置.
4.鼠标经过变化背景图片,因此需要用到链接伪类选择器.

65-综合案例-五彩导航(二)

01-CSS三大特性之层叠性

CSS 有三个非常重要的特性:层叠性、继承性、优先级

层叠性

相同选择器设置相同的样式,此时一个样式就会==覆盖(层叠)==另一个冲突的样式。层叠性主要解决样式冲突的问题

层叠性原则:

  • 样式冲突,遵循就近原则,哪个样式离结构近,就执行哪个样式
  • 样式不冲突不会重叠
1
2
3
4
5
6
7
8
9
<style>
div {
color: blue;
font-style: 14px;
}
div {
color: #000;
}
</style>

02-CSS三大特性之继承性

子标签会继承父标签的某些样式(跟文字相关的样式),如文本颜色和字号

  • 恰当地使用集成可以简化代码,降低 CSS 样式的复杂性
  • 子元素可以继承父元素的样式(text-,font-、line-这些元素的开头可以继承,一级 color 属性)

03-行高的继承

1
2
3
4
5
6
div {
font:12px/1.5 MIcrosoft YaHei;
}
p {
font: 14px;
}
  • 行高可以跟单位也可以不跟

  • 如果子元素没有设置行高,则会继承父元素的行高

    此时子元素的行高为当前子元素的文字大小*1.5

  • 父元素行高1.5倍的写法最大的优势是里面的子元素可以根据自己文字大小自动调整行高

04-CSS三大特性之优先级

当同一个元素指定多个选择器,就会有优先级产生

  • 选择器相同,则执行层叠性
  • 选择器不同,则根据选择器权重执行
选择器 选择器权重
继承 或者 * 0,0,0,0
元素选择器 0,0,0,1
类选择器 0,0,1,0
ID 选择器 0,1,0,0
行内样式 style=”” 1,0,0,0
!important +∞ 无穷大

05-优先级注意的问题

  1. 权重是由4组数据组成,但不会有进位
  2. 类选择器永远大于元素选择器,id 选择器永远大于类选择器
  3. 等级判断从左到右,如果某一为数值相同,则判断下一位数值
  4. 继承的权重是 0,如果该元素没有直接选中,不管父元素权重多高,子元素得到的权重都是 0

06-CSS权重的叠加

复合选择器会有权重叠加,需要权重计算

  • div ul li → 0,0,0,3
  • .nav ul li → 0,0,1,2
  • a:hover → 0,0,1,1
  • .nav a → 0,0,1,1

07-权重两个练习题

08-盒子模型导读

目标

1
2
3
4
5
6
7
能够准确阐述盒子模型的4个组成部分
能够利用边框复合写法给元素添加边框
能够计算盒子的实际大小
能够利用盒子模型布局模块案例
能够给盒子设置圆角边框
能够给盒子添加阴影
能够给文字添加阴影

目录

1
2
3
4
5
6
盒子模型
PS基本操作
综合案例
圆角边框
盒子阴影
文字阴影

09-看透网页布局本质

网页布局过程:
1.先准备好相关的网页元素,网页元素基本都是盒子Box.
2.利用CSS设置好盒子样式,然后摆放到相应位置。
3.往盒子里面装内容。
网页布局的核心本质:就是利用CSS摆盒子。

10-盒子模型组成部分

所谓盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边框、外边距、内边距和实际内容

img

image-20210812075454195

11盒子模型边框border

border 可以设置元素的边框,边框由 宽度样式颜色 三部分组成

1
2
3
4
语法:
border-width
border-style
border-color
属性 作用
border-width 定义边框粗细,单位是 px
border-style 定义边框样式
border-color 定义边框颜色
1
2
3
4
5
6
div {
border-width: 5px;
/*border-style边框的样式 solid实线边框 dashed虚线边框 dotted点线边框/
border-style: solid;
border-color: black;
}

12-边框的复合写法

边框简写:没有顺序要求

1
border: 5px solid black;

边框分开写法:

1
2
border-top: 1px solid red; 
/*只设定上边框,其余同理*/

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
div {
width: 300px;
height: 200px;
/*
border-width: 5px;
border-styLe: solid;
border-color: pink;
*/
/*边框的复合写法简写*/
/*border: 5px solid pink;*/
/*上边框*/
border-top: 5px solid pink;
/*下边框*/
border-bottom: 10px dashed purple;
}

课堂要求:请给一个200x200的盒子,设置上边框为红色,其余边框为蓝色(提示:一定注意边框的层叠性)

1
2
3
4
5
6
7
8
div {
/* 画一个200px × 200px的盒子 */
width: 200px;
height: 200px;
border: 2px solid blue;
/* 利用层叠性,下边框改为为绿色 */
border-bottom: solid green;
}

13-表格细线边框

border-collapse 属性控制浏览器绘制表格边框的方式,它控制相邻单元格的边框

border-collapse:collapse; 相邻的边框合并在一起

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/* 画盒子 */
table {
width: 500px;
height: 249px;
}

table,
th,
td {
/* 画表格 */
border: 1px solid black;
/* 合并相邻边框 */
border-collapse: collapse;
/* 居中 */
text-align: center;
}

14-边框会影响盒子实际大小

  • 盒子模型大小包括盒子+边框
  • 如果测量的时候包含了边框,则需要 width/heigth 减去边框宽度

15-盒子模型内边距padding

padding 属性用于设置盒子的内边距,即边框与内容之间的距离

属性 作用
padding-left 左内边距
padding-right 右内边距
padding-top 上内边距
padding-bottom 下内边距

16-padding复合属性

意义(顺时针表示)
padding: 5px; 1个值,代表上下左右都有5像素内边距
padding: 5px 10px; 2个值,代表上下内边距是5像素,左右内边距是10像素
padding: 5px 10px 20px; 3个值,代表上内边距5像素,左右内边距是10像素,下内边距是20像素
padding: 5px 10px 20px 30px; 4个值,代表上内边距5像素,内边距是10像素,下内边距是20像素,左是30像素

以上4种情况,我们实际开发都会遇到。

17-padding会影响盒子实际大小

当我们给盒子指定padding值之后,发生了2件事情:

  • 盒子模型大小包括盒子+内边距
  • 如果测量的时候包含了边框,则需要 width/heigth 减去内边距宽度

也就是说,如果盒子已经有了宽度和高度,此时再指定内边框,会撑大盒子。

解决方案:如果保证盒子跟效果图大小保持一致,则让width/height减去多出来的内边距大小即可。

18-padding应用-新浪导航栏(上)

案例:新浪导航案例-padding影响盒子好处
padding内边距可以撑开盒子,我们可以做非常巧妙的运用.
因为每个导航栏里面的字数不一样多,我们可以不用给每个盒子宽度了,直接给padding最合适.

相关取值:
1.上边框为3像素,颜色为#8500

2.下边框为1像素颜色为#edeef0

3.盒子高度为41像素,背景颜色为#fcfcfc
4.文字颜色为#4c4c4c

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>新浪导航</title>
<style>
.nav {
height: 41px;
border-top: 3px solid #ff8500;
border-bottom: 1px solid #edeef0;
background-color: #fcfcfc;
line-height: 41px;
}
.nav a {
/* a属于行内元素 此时必须要转换 行内块元素 */
display: inline-block;
height: 41px;
padding: 0 20px;
font-size: 12px;
color: #4c4c4c;
text-decoration: none;
}
.nav a:hover {
background-color: #eee;
color: #ff8500;
}
</style>
</head>
<body>
<div class="nav">
<a href="#">新浪导航</a>
<a href="#">手机新浪网</a>
<a href="#">移动客户端</a>
<a href="#">微博</a>
<a href="#">三个字</a>
</div>
</body>
</html>

20-小米侧边栏修改

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>简单版小米侧边栏</title>
<style>
/* 1. 把a转换为块级元素 */
a {
display: block;
width: 200px;
height: 40px;
background-color: #55585a;
font-size: 14px;
color: #fff;
text-decoration: none;
padding-left: 30px;
line-height: 40px;
}

/* 2 鼠标经过链接变换背景颜色 */
a:hover {
background-color: #ff6700;
}
</style>
</head>

<body>

<a href="#">手机 电话卡</a>
<a href="#">电视 盒子</a>
<a href="#">笔记本 平板</a>
<a href="#">出行 穿戴</a>
<a href="#">智能 路由器</a>
<a href="#">健康 儿童</a>
<a href="#">耳机 音响</a>
</body>

</html>

21-padding不会撑开盒子的情况

盒子未指定 width/heigth 属性,padding 不会影响盒子大小

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>padding不会影响盒子大小的情况</title>
<style>
h1 {
/* width: 100%; */
height: 200px;
background-color: pink;
padding: 30px;
}
div {
width: 300px;
height: 100px;
background-color: purple;
}
div p {
padding: 30px;
background-color: skyblue;
}
</style>
</head>
<body>
<h1></h1>
<div>
<p></p>
</div>
</body>
</html>

22-盒子模型外边距margin

margin 属性用于设置外边距,及控制盒子和盒子之间的距离

属性 作用
margin-left 左外边距
margin-right 右外边距
margin-top 上外边距
margin-bottom 下外边距

margin 的复合写法与 padding 完全一致

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>盒子模型之外边距margin</title>
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
}
/* .one {
margin-bottom: 20px;
} */
.two {
/* margin-top: 20px; */
/* margin: 30px; */
margin: 30px 50px;
}
</style>
</head>
<body>
<div class="one">1</div>
<div class="two">2</div>
</body>
</html>

23-外边距典型应用-块级盒子水平

外边距可以让块级盒子水平居中,但是必须满足两个条件:

  1. 盒子必须指定了宽度(width)
  2. 盒子的左右外边距都设置为auto
1
.header{ width: 960px; margin: 0 auto;}

常见写法:

  1. margin-lift: auto; margin-right:auto;
  2. margin: auto;
  3. margin: 0 auto;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>块级盒子水平居中对齐</title>
<style>
.header {
width: 900px;
height: 200px;
background-color: pink;
margin: 100px auto;
}
</style>
</head>
<body>
<div class="header"></div>
</body>
</html>

注意:以上方法是让块级元素水平居中,行内元素或者行内块元素水平居中给其父元素添加 text-align: center 即可

24-行内元素和行内块元素水平居中-例

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>行内元素/行内块元素水平居中对齐</title>
<style>
.header {
width: 900px;
height: 200px;
background-color: pink;
margin: 100px auto;
text-align: center;
}
/* 行内元素或者行内块元素水平居中给其父元素添加 text-align:center 即可 */
</style>
</head>
<body>
<div class="header">
<span>里面的文字</span>
</div>
<div class="header">
<img src="down.jpg" alt="">
</div>
</body>
</html>

25- 外边距合并

使用 margin 定义块元素的垂直外边距时,可能会出现外边距的合并

嵌套块元素垂直外边距的塌陷

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会他先较大的外边距值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fxjRNVWO-1613636589958)(D:%5CDesktop%5C%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0%5CCSS%5C03-CSS.assets%5Cimage-20210202160346602.png)]

解决方案:

  1. 为父元素定义上边框
  2. 为父元素定义上内边距
  3. 为父元素添加 overflow:hidden
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>外边距合并-相邻块级元素垂直外边距合并</title>
<style>
.damao, .ermao {
width: 200px;
height: 200px;
background-color: pink;
}
.damao {
margin-bottom: 100px;
}
.ermao {
margin-top: 200px;
}
</style>
</head>
<body>
<div class="damao">大毛</div>
<div class="ermao">二毛</div>
</body>
</html>
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>外边距合并-嵌套块级元素垂直外边距塌陷</title>
<style>
.father {
width: 400px;
height: 400px;
background-color: purple;
margin-top: 50px;
/* border: 1px solid red; */
/* border: 1px solid transparent; */
/* padding: 1px; */
overflow: hidden;
}
.son {
width: 200px;
height: 200px;
background-color: pink;
margin-top: 100px;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>

26-外边距合并-嵌套块元素塌陷

对于两个嵌套关系(父子关系)的块元素,父元素有上外边距同时子元素也有上外边距,此时父元素会塌陷较大的外边距值。

解决方案:

  1. 为父元素定义上边框
  2. 为父元素定义上内边距
  3. 为父元素添加 overflow:hidden

还有其他方法,比如浮动、固定,绝对定位的盒子不会有陷问题,后面咱们再总结。

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>外边距合并-嵌套块级元素垂直外边距塌陷</title>
<style>
.father {
width: 400px;
height: 400px;
background-color: purple;
margin-top: 50px;
/* border: 1px solid red; */
/* border: 1px solid transparent; */
/* padding: 1px; */
overflow: hidden;
}
.son {
width: 200px;
height: 200px;
background-color: pink;
margin-top: 100px;
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>

27-清除内外边距

网页元素很多都带有默认的内外边距,而且不同浏览器默认值也不一致,因此我们在布局前,首先要清楚下网页元素的内外边距。

CSS 第一行代码

1
2
3
4
* {
padding : 0; /*清除内边距*/
margin : 0; /*清除外边距*/
}

注意:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。但是转换为块级和行内块元素就可以了

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>清除内外边距</title>
<style>
/* 这句话也是我们css 的第一行代码 */
* {
margin: 0;
padding: 0;
}
span {
background-color: pink;
margin: 20px;
}
</style>
</head>
<body>
123
<ul>
<li>abcd</li>
</ul>
<span>行内元素尽量只设置左右的内外边距</span>
</body>
</html>

28-ps的基本操作

网页美工大部分效果图都是利用 PS 来做的,以后大部分切图工作都是用 PS 来完成

  • 文件 → 打开:打开测量图片
  • Ctrl + R:打开标尺
  • 右击标尺,把单位改成像素
  • Ctrl + 加号放大图片,Ctrl + 减号缩小图片
  • 按住空格鼠标拖动视图
  • 用选区拖动,可以测量大小
  • Ctrl + D:取消选区

29-综合案例产品模块布局分析

30-综合案例-box布局

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>综合案例-产品模块</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: #f5f5f5;
}
.box {
width: 298px;
height: 415px;
background-color:#fff;
/* 让块级的盒子水平居中对齐 */
margin: 100px auto;
}
</style>
</head>
<body>
<div class="box">

</div>
</div>
</body>
</html>

31-综合案例-图片和段落制作

32-综合案例评价和详情制作
33-综合案例-竖线细节制作

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>综合案例-产品模块</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: #f5f5f5;
}
a {
color: #333;
text-decoration: none;
}
.box {
width: 298px;
height: 415px;
background-color:#fff;
/* 让块级的盒子水平居中对齐 */
margin: 100px auto;
}
.box img {
/* 图片的宽度和父亲一样宽 */
width: 100%;
}
.review {
height: 70px;
font-size: 14px;
/* 因为这个段落没有 width属性 所有 padding不会撑开盒子的宽度 */
padding: 0 28px;
margin-top: 30px;
}
.appraise {
font-size: 12px;
color: #b0b0b0;
margin-top: 20px;
padding: 0 28px;
}
.info {
font-size: 14px;
margin-top: 15px;
padding: 0 28px;
}
.info h4 {
display: inline-block;
font-weight: 400;

}
.info span {
color: #ff6700;
}
.info em {
font-style: normal;
color: #ebe4e0;
margin: 0 6px 0 15px;
}
</style>
</head>
<body>
<div class="box">
<img src="images/img.jpg" alt="">
<p class="review">快递牛,整体不错蓝牙可以说秒连。红米给力</p>
<div class="appraise">来自于 117384232 的评价</div>
<div class="info">
<h4> <a href="#">Redmi AirDots真无线蓝...</a></h4>
<em>|</em>
<span> 99.9元</span>
</div>
</div>
</body>
</html>

34-pink老师解惑

Pink老师总结
1.布局为啥用不同盒子,我只想用div?
标签都是有语义的,合理的地方用合理的标签。比如产品标题就用h,大量文字段落就用p

2.为啥用辣么多类名?
类名就是给每个盒子起了一个名字,可以更好的找到这个盒子,选取盒子更容易,后期维护也方便。

3.到底用margin还是padding?
大部分情况两个可以混用,两者各有优缺点,但是根据实际情况,总是有更简单的方法实现。

4.自己做没有思路?
布局有很多种实现方式,同学们可以开始先模仿我的写法,然后再做出自己的风格。
最后同学们一定多运用辅助工具,比如屏幕画笔,ps等等

01-综合案例-快报模块布局分析

02-综合案例-快报模块头部制作
03-综合案例-快报模块列表制作

1
2
3
新知识点:去掉前面的项目符号(小圆点)
语法:
list-style:none;
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>新闻快报模块</title>
<style>
* {
margin: 0;
padding: 0;
}

li {
/* 去掉li前面的小圆点 */
list-style: none;
}

.box {
width: 248px;
height: 163px;
border: 1px solid #ccc;
margin: 100px auto;
}

.box h3 {
height: 32px;
border-bottom: 1px dotted #ccc;
font-size: 14px;
font-weight: 400;
line-height: 32px;
padding-left: 15px;
}

.box ul li a {
font-size: 12px;
color: #666;
text-decoration: none;
}

.box ul li a:hover {
text-decoration: underline;
}

.box ul li {
height: 23px;
line-height: 23px;
padding-left: 20px;
}

.box ul {
margin-top: 7px;
}
</style>
</head>

<body>
<div class="box">
<h3>品优购快报</h3>
<ul>
<li><a href="#">【特惠】爆款耳机5折秒!</a></li>
<li><a href="#">【特惠】母亲节,健康好礼低至5折!</a></li>
<li><a href="#">【特惠】爆款耳机5折秒!</a></li>
<li><a href="#">【特惠】9.9元洗100张照片!</a></li>
<li><a href="#">【特惠】长虹智能空调立省1000</a></li>
</ul>

</div>
</body>

</html>

04-圆角边框原理

border-radius属性用于设置元素的外边框圆角

1
border-radius: length;
  • 参数值可以为数值或百分比的形式
  • 如果是正方形,想要设置为一个圆,把数值修改为高度或者宽度的一半即可,或者直接写为50%
  • 如果是个矩形,设置为高度的一半就可以做 新人福利该属性是一个简写属性,可以跟四个值,分别代表左上角、右上角、右下角、左下角

  • 设置圆形,length 为等边盒子长度的一半或 50%
  • 设置圆角矩形,length 为高度的一半
  • 该属性是一个简写属性,可以跟四个值,分别以顺时针代表左上角、右上角、右下角、左下角
  • 也可以分开写:
    • border-top-left-radius
    • border-top-right-radius
    • border-bottom-right-radius
    • border-bottom-left-radius

radius半径(圆的半径)原理:(椭)圆与边框的交集形成圆角效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>圆角边框</title>
<style>
div {
width: 300px;
height: 150px;
background-color: pink;
border-radius: 10px;
}
</style>
</head>

<body>
<div></div>
</body>
</html>

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>圆角边框常用写法</title>
<style>
.yuanxing {
width: 200px;
height: 200px;
background-color: pink;
/* border-radius: 100px; */
/* 50% 就是宽度和高度的一半 等价于 100px */
border-radius: 50%;
}

.juxing {
width: 300px;
height: 100px;
background-color: pink;
/* 圆角矩形设置为高度的一半 */
border-radius: 50px;
}

.radius {
width: 200px;
height: 200px;
/* border-radius: 10px 20px 30px 40px; */
/* border-radius: 10px 40px; */
border-top-left-radius: 20px;
background-color: pink;
}
</style>
</head>

<body>
1. 圆形的做法:
<div class="yuanxing"></div>
2. 圆角矩形的做法:
<div class="juxing"></div>
3. 可以设置不同的圆角:
<div class="radius"></div>
</body>

</html>

06-盒子阴影

box-shadow 属性用于为盒子添加阴影

1
box-shadow: h-shadow v-shadow blur spread color inset;
描述
h-shadow 必须。水平阴影的位置。允许负值
v-shadow 必须。垂直阴影的位置。允许负值
blur 可选。模糊距离
spread 可选。阴影的尺寸
color 可选。阴影的颜色 rgba()
inset 可选。将外部阴影改为内部阴影
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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>盒子阴影</title>
<style>
div {
width: 200px;
height: 200px;
background-color: pink;
margin: 100px auto;

/* box-shadow: 10px 10px; */
}

div:hover {
box-shadow: 10px 10px 10px -4px rgba(0, 0, 0, .3);
}
/* 原先盒子没有影子,当我们鼠标经过盒子就添加阴影效果 */
</style>
</head>

<body>
<div></div>
</body>

</html>

注意:

  1. 默认的是外阴影(outset),但是不可以写这个单词,否则导致阴影无效;
  2. 盒子阴影不占空间,不会影响其他盒子排列

07-文字阴影

text-shadow 属性将阴影应用于文本

1
text-shadow: h-shadow v-shadow blur color;
描述
h-shadow 必须。水平阴影的位置。允许负值
v-shadow 必须。垂直阴影的位置。允许负值
blur 可选。模糊距离
spread 可选。阴影的尺寸
color 可选。阴影的颜色 rgba()
inset 可选。将外部阴影改为内部阴影

注意:

  1. 默认的是外阴影(outset),但是不可以写这个单词,否则导致阴影无效;
  2. 盒子阴影不占空间,不会影响其他盒子排列
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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>文字阴影</title>
<style>
div {
font-size: 50px;
color: orangered;
font-weight: 700;
text-shadow: 5px 5px 6px rgba(0, 0, 0, .3);

}
</style>
</head>

<body>
<div>
你是阴影,我是火影
</div>
</body>

</html>

08-浮动导读

目标:

1
2
3
4
5
6
7
8
能够说出为什么需要浮动
能够说出浮动的排列特性
能够说出3种最常见的布局方式
能够说出为什么需要清除浮动
能够写出至少2种清除浮动的方法
能够利用Photoshop实现基本的切图
能够利用Photoshop插件实现切图
能够完成学成在线的页面布局

目录:

1
2
3
4
5
浮动
常见网页布局
清除浮动
PS
学成在线案例

09-传统网页布局三种方式

网页布局的本质——用 CSS 来拜访盒子。把盒子摆放到相应位置

CSS 提供了三种传统布局方式

  • 普通流(标准流)
  • 浮动
  • 定位
  • 标准流:标签按照规定好的默认方式排列

1.块级元素会独占一行,从上到下顺序排列

常用元素:div,hr,p,h1~h6,ul,ol,dl,form,table

2.行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行

常用元素:span,a,i,em

以上都是标准流布局,我们前面学习的就是标准流,标准流是最基本的布局方式。

这三种布局方式都是用来摆放盒子的,盒子摆放到合适位置,布局自然就完成了。

注意:实际开发中,一个页面基本都包含了这三种布局方式(后面移动端学习新的布局方式)。

10-为什么需要浮动

提问:我们用标准流能很方便的实现如下效果吗?
1.如何让多个块级盒子(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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>行内块中间有缝隙</title>
<style>
div {
float: left;
width: 150px;
height: 200px;
background-color: pink;
/* display: inline-block; */
}
</style>
</head>

<body>
<div>1</div>
<div>2</div>
<div>3</div>
</body>

</html>

总结:有很多的布局效果,标准流没有办法完成,此时就可以利用浮动完成布局。因为浮动可以改变元素标签默认的排列方式。
浮动最典型的应用:可以让多个块级元素一行内排列显示。
网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动。

11-什么是浮动

flot属性用于创建浮动框,将其移动到以彼岸,直到左边缘或右边缘触及包含块或另一个浮动框的边缘。

语法:

1
选择器 {float: 属性值;}
属性值 描述
none 元素不浮动
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
24
25
26
27
28
29
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>什么是浮动</title>
<style>
.left,
.right {
float: left;
width: 200px;
height: 200px;
background-color: pink;
}

.right {
float: right;
}
</style>
</head>

<body>
<div class="left">左青龙</div>
<div class="right">右白虎</div>
</body>

</html>

12-浮动特性-脱标

设置了浮动(float)的元素的最重要的特性:

1.脱离标准普通流的控制(浮)移动到指定位置(动),(俗称脱标)
2.浮动的盒子不再保留原先的位置

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动特性1</title>
<style>
/* 设置了浮动(float)的元素会:
1. 脱离标准普通流的控制(浮)移动到指定位置(动)。
2.浮动的盒子不在保留原先的位置 */
.box1 {
float: left;
width: 200px;
height: 200px;
background-color: pink;
}

.box2 {
width: 300px;
height: 300px;
background-color: rgb(0, 153, 255);
}
</style>
</head>

<body>
<div class="box1">浮动的盒子</div>
<div class="box2">标准流的盒子</div>
</body>

</html>

13-浮动特性-浮动元素-行显示

2.如果多个盒子都设置了浮动,则它们会按照属性值一行内显示并且顶端对齐排列

  • 浮动的元素是相互贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子,多出的盒子会另起一行对齐。
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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动元素特性-浮动元素一行显示</title>
<style>
div {
float: left;
width: 200px;
height: 200px;
background-color: pink;
}

.two {
background-color: purple;
height: 249px;
}

.four {
background-color: skyblue;
}
</style>
</head>

<body>
<div>1</div>
<div class="two">2</div>
<div>3</div>
<div class="four">4</div>
</body>

</html>

14-浮动特性-浮动元素具有行内块特性

3.浮动元素会具有行内块元素特性

任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后都具有行内块元素相似的特性

  • 如果块级盒子没有设置宽度,默认宽度和父级一样宽,但是添加浮动后,它的大小根据内容来决定
  • 如果行内元素有了浮动,则不需要转换块级\行内块元素就可以直接给高度和宽度
  • 浮动的盒子中间是没有缝隙的,是紧挨着一起的
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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动的元素具有行内块元素特点</title>
<style>
/* 任何元素都可以浮动。不管原先是什么模式的元素,添加浮动之后具有行内块元素相似的特性。 */
span,
div {
float: left;
width: 200px;
height: 100px;
background-color: pink;
}

/* 如果行内元素有了浮动,则不需要转换块级\行内块元素就可以直接给高度和宽度 */
p {
float: right;
height: 200px;
background-color: purple;
}
</style>
</head>

<body>
<span>1</span>
<span>2</span>

<div>div</div>
<p>ppppppp</p>
</body>

</html>

15-浮动元素经常搭配标准流的父元素

为了约束浮动元素位置,我们网页布局一般采取的策略是:先用标准流的父元素排列上下位置,之后内部子元素采取浮动排列左右位置,符合网页布局第一准侧

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动元素搭配标准流父盒子1</title>
<style>
.box {
width: 1200px;
height: 460px;
background-color: pink;
margin: 0 auto;
}

.left {
float: left;
width: 230px;
height: 460px;
background-color: purple;
}

.right {
float: left;
width: 970px;
height: 460px;
background-color: skyblue;
}
</style>
</head>

<body>
<div class="box">
<div class="left">左侧</div>
<div class="right">右侧</div>
</div>
</body>

</html>

16-浮动布局练习1

没记录

17-浮动布局练习2

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动元素搭配标准流父盒子2</title>
<style>
* {
margin: 0;
padding: 0;
}

li {
list-style: none;
}

.box {
width: 1226px;
height: 285px;
background-color: pink;
margin: 0 auto;
}

.box li {
width: 296px;
height: 285px;
background-color: purple;
float: left;
margin-right: 14px;
}

/* 这里必须写 .box .last 要注意权重的问题 20 */
.box .last {
margin-right: 0;
}
</style>
</head>

<body>
<ul class="box">
<li>1</li>
<li>2</li>
<li>3</li>
<li class="last">4</li>
</ul>
</body>

</html>

18-浮动练习-手机模块(上)

浮动元素经常和标准流父级搭配使用

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
57
58
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动布局练习3</title>
<style>
.box {
width: 1226px;
height: 615px;
background-color: pink;
margin: 0 auto;
}

.left {
float: left;
width: 234px;
height: 615px;
background-color: purple;
}

.right {
float: left;
width: 992px;
height: 615px;
background-color: skyblue;
}

.right>div {
float: left;
width: 234px;
height: 300px;
background-color: pink;
margin-left: 14px;
margin-bottom: 14px;
}
</style>
</head>

<body>
<div class="box">
<div class="left">左青龙</div>
<div class="right">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
</div>
</body>

</html>

20-常见的网页布局

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>常见网页布局</title>
<style>
* {
margin: 0;
padding: 0;
}

li {
list-style: none;
}

.top {
height: 50px;
background-color: gray;
}

.banner {
width: 980px;
height: 150px;
background-color: gray;
margin: 10px auto;
}

.box {
width: 980px;
margin: 0 auto;
height: 300px;
background-color: pink;
}

.box li {
float: left;
width: 237px;
height: 300px;
background-color: gray;
margin-right: 10px;
}

.box .last {
margin-right: 0;
}

/* 只要是通栏的盒子(和浏览器一样宽) 不需要指定宽度 */
.footer {
height: 200px;
background-color: gray;
margin-top: 10px;
}
</style>
</head>

<body>
<div class="top">top</div>
<div class="banner">banner</div>
<div class="box">
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="last">4</li>
</ul>
</div>
<div class="footer">footer</div>
</body>

</html>

21-浮动的两个注意点

浮动布局注意点

1、浮动和标准流的父盒子搭配。

先用标准流的父元素排列上下位置, 之后内部子元素采取浮动排列左右位置

2、一个元素浮动了,理论上其余的兄弟元素也要浮动。

一个盒子里面有多个子盒子,如果其中一个盒子浮动了,其他兄弟也应该浮动,以防止引起问题。

浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流.

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
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>浮动注意点</title>
<style>
/* 如果一个子元素浮动了,尽量其他盒子也浮动,这样保证这些子元素一行显示 */
.box {
width: 900px;
height: 300px;
background-color: pink;
margin: 0 auto;
}

.damao {
float: left;
width: 200px;
height: 200px;
background-color: purple;
}

.ermao {
float: left;
width: 200px;
height: 150px;
background-color: red;
}

.sanmao {
float: left;
width: 300px;
height: 240px;
background-color: blue;
}
</style>
</head>

<body>
<div class="box">
<div class="damao">大毛</div>
<div class="ermao">二毛</div>
<div class="sanmao">三毛</div>
</div>
</body>

</html>

22-为什么清除浮动

我们前面浮动元素有一个标准流的父元素,他们有一个共同的特点,都是有高度的.
但是,所有的父盒子都必须有高度吗?

理想中的状态, 让子盒子撑开父亲. 有多少孩子,我父盒子就有多高.

但是不给父盒子高度会有问题吗?..…

  • 由于父级盒子很多情况下,不方便给高度,但是子盒子浮动又不占有位置,最后父级盒子高度为 0 时,就会影响下面的标准流盒子。

  • 由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响
  • 理想中的状态,让子盒子撑开父亲,有多少孩子,我父盒子就有多高

23-清除浮动本质以及额外标签法

  • 清除浮动的本质是清除浮动元素造成的影响
  • 如果父盒子本身有高度,则不需要清除浮动
  • 清除浮动之后,父级就会根据浮动的子盒子自动检测高度,父级有了高度,就不会影响下面的标准流了。

语法:

1
2
3
选择器 {
clear:属性值;
}
属性值 描述
left 不允许左侧有浮动元素(清除左侧浮动的影响)
right 不允许右侧有浮动元素(清除右侧浮动的影响)
both 同时清除左右两侧浮动的影响
  • 我们实际工作中,几乎只用clear:both

  • 清除浮动的策略是:闭合浮动

  • 只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子。

清除浮动的方法🔥

  1. 额外标签法也称为隔墙法,是W3C推荐的做法
  2. 父级添加 overflow 属性
  3. 父级添加 after 伪元素
  4. 父级添加双伪元素

额外标签法

额外标签法也称为隔墙法,是 W3C 推荐的做法。

额外标签法会在浮动元素末尾添加一个空的标签,例如:
<div style="clear:both"></div>,或者其他标签(如</br>等)
注意:要求这个新的空标签必须是块级元素
优点:通俗易懂,书写方便
缺点:添加许多无意义的标签,结构化较差
实际工作可能会遇到,但是不常用

总结:

1
2
3
4
5
6
7
8
9
10
11
1、清除浮动本质是?
清除浮动的本质是清除浮动元素脱离标准流造成的影响

2、清除浮动策略是?
闭合浮动. 只让浮动在父盒子内部影响,不影响父盒子外面的其他盒子.

3、额外标签法?
隔墙法, 就是在最后一个浮动的子元素后面添

4、加一个额外标签, 添加 清除浮动样式.
实际工作可能会遇到,但是不常用

24-清除浮动之父元素overflow

overflow

  • 可以给父级添加overflow属性,将其属性值设置为hidden,autoscroll
  • 优点:代码简洁
  • 缺点:无法显示溢出的部分
1
overflow:hidden | auto | scroll;

25-清除浮动之after伪元素

after伪元素法🔥

:after 方式是额外标签法的升级版。也是给父元素添加

1
2
3
4
5
6
7
8
9
10
.clearfix:after {  
content: "";
display: block;
height: 0;
clear: both;
visibility: hidden;
}
.clearfix { /* IE6、7 专有 */
*zoom: 1;
}

优点:没有增加标签,结构更简单

缺点:照顾低版本浏览器

代表网站: 百度、淘宝网、网易等

26-清除浮动之双伪元素

  • 也是给父元素添加
1
2
3
4
5
6
7
8
9
10
.clearfix:before,.clearfix:after {
content:"";
display:table;
}
.clearfix:after {
clear:both;
}
.clearfix {
*zoom:1;
}
  • 优点:代码更简洁
  • 缺点:需要照顾低版本浏览器
  • 代表网站:小米、腾讯等

27-清除浮动总结

为什么需要清除浮动?

  1. 父级没高度。
  2. 子盒子浮动了。
  3. 影响下面布局了,我们就应该清除浮动了。
清除浮动方式 优点 缺点
额外标签法(隔墙法) 通俗易懂,书写方便 添加许多无意义的标签,结构化较差
父级overflow:hidden; 书写简单 溢出隐藏
父级after伪元素 结构语义化正确 由于IE6-7不支持:after,兼容性问题
父级双伪元素 结构语义化正确 由于IE6-7不支持:after,兼容性问题

01-常见的图片格式

序号 格式 特点和常用的用途
1 jpg JPEG(.JPG)对色彩的信息保留较好,高清,颜色较多,我们产品类的图片 经常用jpg格式的
2 gif GIF格式最多只能储存256色,所以通常用来显示简单图形及字体,但是可以保存透明背景和动画效果, 实际 经常用于一些图片小动画效果
3 png png图像格式,是一种新兴的网络图形格式,结合了GIF和JPEG的优点,具有存储形式丰富的特点,能够保持透明背景. 如果想要切成 背景透明的图片 ,请选择png格式.
4 psd PSD图像格式,Photoshop的专用格式,里面可以存放图层、通道、遮罩等多种设计稿. 对我们前端人员来说,最大的优点,我们可以直接从上面复制文字,获得图片,还可以测量大小和距离.

02-ps切图-图层切图(上)

PS有很多的切图方式:图层切图、切片切图、PS插件切图等。

1
最简单的切图方式:右击图层 → 导出 → 切片。

但是很多情况下,我们需要合并图层再导出:

1
2
3
1.选中需要的图层:图层菜单→合并图层(ctrl+e)
2.右击→快速导出为PNG
最好的方法是:沟通

简单版步骤:

​ ① 使用移动工具,点击需要的图片

1571299959992

​ ② 查看右侧,找到图片对应的图层,右击图层 → 快速导出为 PNG

1571300150618

但是很多情况下,我们需要合并图层再导出:

步骤:

​ ① 选中需要的若干个图层:选择一个图层,再按住shift键,继续选第二个图层:

​ ② 图层菜单 → 合并图层(ctrl+e)

1571300529539

​ ③ 查看右侧生成的新图层,在合并后的图层上,右击 → 快速导出为 PNG

04-ps切图-切片工具

利用切片选中图片

1
利用切片工具手动划出

导出选中的图片

1
文件菜单 → 存储为 web 设备所用格式 → 选择我们要的图片格式 → 存储 。

步骤:

​ ① 利用切片选中图片 :利用切片工具手动划出

1571301270696

​ ② 导出选中的图片:文件菜单 → 导出 → 存储为 web 设备所用格式 → 选择我们要的图片格式 → 存储 。

​ 注意:保存的时候,要选“选中的切片”:

1571301357818

05-ps切图-cutterman安装

介绍

Cutterman是一款运行在photoshop中的插件,能够自动将你需要的图层进行输出, 以替代传统的手工 “导出web所用格式” 以及使用切片工具进行挨个切图的繁琐流程。

它支持各种各样的图片尺寸、格式、形态输出,方便你在pc、ios、Android等端上使用。 它不需要你记住一堆的语法、规则,纯点击操作,方便、快捷,易于上手。

安装

注意: cutterman插件要求你的ps 必须是完整版,不能是绿色版,所以大家需要从新安装完整版本。

查看 “窗口菜单”里面的“扩展功能”:

​ ① 如果是扩展功能的是灰色的,表示就是绿色版的,需要重新安装PS

​ ② 如果是扩展功能右侧是可以使用的,表示就是完整版的,可以安装cutterman插件快速切图

1571302032310

官网: http://www.cutterman.cn/zh/cutterman

当cutterman 安装完成后,重启PS,会发现扩展功能里面多了一个cutterman工具:

1571302286467

06-ps切图-cutterman使用技巧

使用步骤

​ ① 选择需要的图层

​ ② 选择web端,点击web下面的下拉三角

​ ③ 选择需要的图片格式

​ ④ 设置好存储路径

​ ⑤ 点击 “导出选中图层” 按钮

1571303715362

示意图:

07. CSS属性书写顺序(重点)

生活中衡量一个人有气质:

​ 穿着打扮 举止言行 等等

编程中如何衡量一个人的代码能力

​ 规范标准 优雅高质量 等等 一个词形容 专业 从代码中看出是否有经验..

建议遵循以下顺序:

  1. 布局定位属性:display / position / float / clear / visibility / overflow(建议 display 第一个写,毕竟关系到模式)
  2. 自身属性:width / height / margin / padding / border / background
  3. 文本属性:color / font / text-decoration / text-align / vertical-align / white- space / break-word
  4. 其他属性(CSS3):content / cursor / border-radius / box-shadow / text-shadow / background:linear-gradient …

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
.jdc {
display: block;
position: relative;
float: left;
width: 100px;
height: 100px;
margin: 0 10px;
padding: 20px 0;
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
color: #333;
background: rgba(0,0,0,.5);
border-radius: 10px;
}

3. 学成在线页面制作

页面展示:

1571304358699

学成在线,是典型的企业级网站。

学习学成网的目的,是为了整体感知企业级网站布局流程,带着大家复习以前的知识。

3.1. 前期准备素材

  • 学成在线PSD源文件
  • 开发工具 = PS(切图) + sublime(代码) + chrome(测试)

3.2. 前期准备工作

先把我们的前期准备工作做好, 我们本次采取结构与样式相分离思想。

  1. 创建 study 目录文件夹 (用于存放我们这个页面的相关内容)。

  2. 用vscode打开study目录文件夹.

  3. study 目录内新建 images 文件夹,用于保存图片。

  4. 新建首页文件 index.html(以后我们的网站首页统一命名规定为 index.html )。

  5. 新建 style.css 样式文件。我们本次采用外链样式表。

  6. 将样式引入到我们的 HTML 页面文件中。

  7. 样式表写入清除内外边距的样式,来检测样式表是否引入成功。

1571305757590

3.3. 页面布局整体思路

为了提高网页制作的效率,布局时通常有以下的整体思路,具体如下:

​ 1.必须确定页面的版心(可视区),我们测量可得知。

​ 2.分析页面中的行模块,以及每个行模块中的列模块。其实页面布局第一准则.

​ 3.一行中的列模块经常浮动布局, 先确定每个列的大小,之后确定列的位置. 页面布局第二准则

​ 4.制作 HTML 结构。我们还是遵循,先有结构,后有样式的原则。结构永远最重要.

​ 5.所以, 先理清楚布局结构,再写代码尤为重要. 这需要我们多写多积累.

3.4. 页面制作

确定版心

​ 这个页面的版心是 1200像素 ,每个版心都要水平居中对齐,所以,我们可以定义版心为公共类:

1
2
3
4
.w {
width: 1200px;
margin: auto;
}

3.4.1. header头部制作

结构图如下:

  • 1号是版心盒子 header 1200 * 42 的盒子水平居中对齐, 上下给一个margin值就好了。
  • 版心盒子 里面包含 2号盒子 logo 图标
  • 版心盒子 里面包含 3号盒子 nav 导航栏
  • 版心盒子 里面包含 4号盒子 search 搜索框
  • 版心盒子 里面包含 5号盒子 user 个人信息
  • 注意,要求里面的 4个子盒子 必须都浮动

导航栏注意点:

实际开发中,重要的导航栏,我们不会直接用链接a ,而是用 li 包含链接(li+a)的做法

​ 1.li+a 语义更清晰,一看这就是有条理的列表型内容。

​ 2.如果直接用a,搜索引擎容易辨别为有堆砌关键字嫌疑(故意堆砌关键字容易被搜索引擎有降权的风险),从而影响网站排名

注意:

​ 1.让导航栏一行显示, 给 li 加浮动, 因为 li 是块级元素, 需要一行显示.

​ 2.这个nav导航栏可以不给宽度,将来可以继续添加其余文字

​ 3.因为导航栏里面文字不一样多,所以最好给链接 a 左右padding 撑开盒子,而不是指定宽度

4号盒子search的细节:

​ search 搜索框的意思: 一个 search 大盒子里面包含 2个 表单

​ 技巧:input和button都,属于行内块元素,会有缝隙,使用浮动,可以去缝隙。

1571307430101

3.4.2. banner制作

结构图如下:

1571314623135

  • 1号盒子是通栏的大盒子banner, 不给宽度,给高度,给一个蓝色背景。
  • 2号盒子是版心 w, 要水平居中对齐。
  • 3号盒子版心内,左对齐 subnav 侧导航栏。
  • 4号盒子版心内,右对齐 course 课程。
3.4.2.1 subnav 侧导航栏 (左侧的)

1571314874385

  • subnav 盒子 背景色 黑色半透明
  • 重要的导航栏,li 包 a ,行高45px
  • a里面包含文字和span,span右浮动
  • 当鼠标经过a ,a里面的内容(文字和span)变蓝色
3.4.2.2 course课程表模块 (右侧的)

结构图如下:

  • 1号盒子 是 228 * 300 的盒子 右浮动 注意 浮动的元素 不会有外边距塌陷的问题
  • 1号盒子内 分为 上下 两个 子盒子
  • 2号子盒子是 上部分 我们命名为 course-hd (hd 是 head 的简写 头部的意思,我们经常用)
  • 3号子盒子是 下部分 我们命名为 course-bd (bd 是 body 的简写 主体的意思,我们经常用)

3.4.3. 精品推荐小模块

结构图如下:

  • 复习点: 因为里面三个盒子都要垂直居中,我们利用 继承性,给 最大的盒子 一个垂直居中的代码就好了,还记得 那些 样式可以继承吗??? font- line- text- color
  • 大盒子水平居中 goods 精品 ,注意此处有个盒子阴影

  • 1号盒子是标题 H3 左侧浮动

  • 2号盒子 里面放链接 左侧浮动 goods-item 距离可以控制链接的 左右外边距(注意行内元素只给左右内外边距)

  • 3号盒子 右浮动 mod 修改

3.4.4. 精品推荐大模块

结构图如下:

  • 1号盒子为最大的盒子 box 版心水平居中对齐
  • 2号盒子为上面部分 box-hd – 里面 左侧标题H3 左浮动 右侧 链接 a 右浮动
  • 3号盒子为底下部分 box-bd — 里面是无序列表 有 10个 小li 组成
  • 小li 外边距的问题, 这里有个小技巧。 给box-hd 宽度为 1215 就可以一行装开5个 li了
  • 复习点:我们用到清除浮动,因为 box-hd 里面的盒子个数不一定是多少,所以我们就不给高度了,但是里面的盒子浮动会影响下面的布局,因此需要清除浮动。

3.4.5. 底部模块制作

结构图如下:

  • 1号盒子通栏大盒子 底部 footer 给高度 底色是白色

  • 2号盒子版心水平居中

  • 3号盒子版权 copyright 左对齐

  • 4号盒子 链接组 links 右对齐

赞赏一下吧~