本篇文章为 CSS 基础系列笔记第四篇,参考 黑马程序员pink老师前端入门教程

其他CSS基础相关文章:

CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表

CSS基础「二」复合选择器 / 元素显示模式 / 背景 / 三大特性

CSS基础「三」盒子模型/产品模块案例/圆角边框/盒子阴影/文字阴影

CSS基础「五」定位

CSS基础「六」元素的显示与隐藏

CSS基础「七」精灵图 \ 字体图标 \ 三角 \ 用户界面样式 \ 页面初始化

1. 浮动介绍


1.1 传统网页布局三种方式

网页布局的本质——用 CSS 来摆放盒子,把盒子摆放到相应位置。CSS 提供了三种传统布局方式(盒子的排列顺序)

  • 普通流(标准流)
  • 浮动
  • 定位

标准流(普通流 / 文档流)

标准流是最基本的布局方式,就是标签按照规定好默认方式排列。我们前面学习的就是标准流,如下

  • 块级元素会独占一行,从上向下顺序排列,如 <div>、<hr>、<p>
  • 行内元素会按照顺序,从左到右顺序排列,碰到父元素边缘则自动换行,如 <span>、<a>

1.2 浮动用法初体验

引入:如何让多个块级盒子(div)水平排列成一行?

  • 按照之前知识,我们想到的是转为行内块元素 display: inline-block;。但是,虽然转换为行内块元素可以实现一行显示,但是他们之间会有大的空白缝隙,很难控制。如下图所示

如同上述示例一样,有很多的布局效果,标准流没有办法完成。此时就可以利用浮动完成布局,因为浮动可以改变元素标签默认的排列方式

  • 浮动最典型的应用:让多个块级元素一行内排列显示
  • 网页布局第一准则:多个块级元素纵向排列找标准流,多个块级元素横向排列找浮动

上例中添加浮动即可实现多个块元素并列显示

1.3 浮动语法格式

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

语法格式

选择器 { float: 属性值; }
属性值 说明
none 不浮动,默认值
left 元素浮动到其容器的左侧
right 元素浮动在其容器的右侧
inherit 元素继承其父级的 float 值

1.4 浮动特性

加了浮动之后的元素,会具有很多特性,需要掌握如下三个

  • 浮动元素会脱离标准流(脱标)
  • 浮动的元素会一行内显示并且元素顶部对齐
  • 浮动的元素会具有行内块元素的特性

1、设置浮动的元素最重要的特性:

  • 脱离标准普通流的控制(浮)移动到指定位置(动)
  • 浮动的盒子不再保留原先的位置,此位置被其他标准流盒子所占有。示例如下

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

浮动的元素是互相贴靠在一起的(不会有缝隙),如果父级宽度装不下这些浮动的盒子, 多出的盒子会另起一行对齐。示例如下

  • 当前页面可以放下时

  • 当前页面缩小放不下时

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

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

  • 行内元素添加浮动后,具有行内块元素特性,可以设置宽度和高度

1.5 浮动元素的使用

为了约束浮动元素位置, 我们网页布局一般采取的策略是:

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


下面是关于浮动元素搭配标准流元素的实例

  • 如下图小米官网中手机产品布局:首先是一个大的标准流父盒居中显示,之后父盒中有左右两个浮动子盒,右侧浮动子盒又含有八个小的盒子

    实现效果

    实例代码
<head>...<style>.box {width: 1226px;height: 615px;background-color: tomato;margin: 0 auto;}.left {float: left;width: 234px;height: 615px;background-color: skyblue;}.right {float: left;width: 992px;height: 615px;background-color: green;}/* >子代选择器,防止混淆 */.right>div {float: left;width: 234px;height: 300px;background-color: tomato;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>

2. 常见网页布局


2.1 布局格式

常用模板样式如下



以第三张图为例,给出实现代码

<head>...<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;height: 300px;margin: 0 auto;background-color: tomato;}.box li {float: left;width: 237px;height: 300px;background-color: gray;margin-right: 10px;}.box .last {margin-right: 0px;}/* 只要是通栏的盒子(和浏览器一样宽)不需要指定宽度 */.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>

  • top 和 footer 为通栏,无须给出宽度,默认和页面一样宽

2.2 浮动布局注意点

1、浮动和标准流的父盒搭配使用

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

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

  • 一个盒子里面有多个子盒子,如果其中一个盒子浮动了,那么其他兄弟也应该浮动,以防止引起问题
  • 浮动的盒子只会影响浮动盒子后面的标准流,不会影响前面的标准流

3. 清除浮动


3.1 为什么需要清除浮动

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


如上图所示,如果将父盒中两个子盒设为浮动,则父盒高度为 0(只留下红色边框)。此时,如果再来一个标准流盒子,则会贴着高度为 0 的盒子(红色边框)向下排列

  • 由于浮动元素不再占用原文档流的位置,所以它会对后面的元素排版产生影响

3.2 清除浮动

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

语法格式

选择器{clear:属性值;}
属性值 说明
left 不允许左侧有浮动元素(清除左侧浮动的影响)
right 不允许右侧有浮动元素(清楚右侧浮动的影响)
both 同时清除左右两侧浮动的影响
  • 实际工作中,几乎只用 clear:both;
  • 清除浮动的策略是:闭合浮动

3.3 清除浮动的方法

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

1、第一种方法:额外标签法

额外标签法会在浮动元素末尾添加一个空的标签,例如<div><br>

  • 实例一
  • 实例二

以上两种均可以产生如下效果

  • 优点:通俗易懂,书写方便
  • 缺点:添加许多无意义的标签,结构化较差
  • 要求:所添加的空标签必须是块级元素

2、第二种方法:父级添加overflow

可以给父级添加 overflow 属性,将其属性值设置为 hiddenautoscroll

  • 实例

  • 注意是给父元素添加代码
  • 优点:代码简洁
  • 缺点:无法显示溢出部分

3、第三种方法::after 伪元素法

:after 方式是额外标签法的升级版。需要添加下述代码:

.clearfix:after { content: ""; display: block; height: 0; clear: both; visibility: hidden;
}
.clearfix { /* IE6、7 专有,用于照顾低版本浏览器 */ *zoom: 1;
}
  • 实例

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

  • 缺点:照顾低版本浏览器

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

4、第四种方法:双伪元素清除浮动

需要添加下述代码:

.clearfix:before,.clearfix:after {content:"";display:table;
}
.clearfix:after {clear:both;
}
.clearfix {*zoom:1;
}
  • 实例


欢迎阅读下篇文章 CSS基础「五」定位

CSS基础「四」浮动 \ 常见网页布局相关推荐

  1. CSS基础「七」精灵图 \ 字体图标 \ 三角 \ 用户界面样式 \ 页面初始化

    本篇文章为 CSS 基础系列笔记第七篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...

  2. CSS基础「六」元素的显示与隐藏

    本篇文章为 CSS 基础系列笔记第六篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...

  3. CSS基础「五」定位

    本篇文章为 CSS 基础系列笔记第五篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...

  4. CSS基础「三」盒子模型/产品模块案例/圆角边框/盒子阴影/文字阴影

    本篇文章为 CSS 基础系列笔记第三篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...

  5. CSS基础「二」复合选择器 / 元素显示模式 / 背景 / 三大特性

    本篇文章为 CSS 基础系列笔记第二篇,参考 黑马程序员pink老师前端入门教程 如有侵权联系删除,如有问题欢迎指出. 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 ...

  6. CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表

    前言:本篇文章为 CSS 基础系列笔记第一篇,参考 黑马程序员pink老师前端入门教程 如有侵权联系删除,如有问题欢迎指出. 其他CSS基础相关文章: CSS基础「二」复合选择器 / 元素显示模式 / ...

  7. CSS浮动/常见网页布局/清除浮动/学成在线案例

    CSS 04 1. 浮动(float) 1.1 传统网页布局的三种方式 网页布局的本质--用 CSS 来摆放盒子. 把盒子摆放到相应位置. CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列 ...

  8. CSS学习(第四天)(浮动,常见网页布局,清除浮动,PS切图)

    CSS浮动 1 浮动 1.1传统网页布局的三种方式 1.2 标准流(普通流/文档流) 1.3 为什么需要浮动? 1.3为什么需要浮动? 1.4什么是浮动? 1.5浮动特性(重难点) 1.6 浮动元素经 ...

  9. 「译」一个3D网页是如何制作的

    「译」一个3D网页是如何制作的 原文: 本文作者制作了一个3D网页作为自己的个人主页,是一个遥控汽车的游戏页面.页面十分有趣,感兴趣的朋友可以先打开体验一下. 以下为原文的译文,是我个人理解的版本.大 ...

最新文章

  1. axios get的parameter /eg /url+?input=6^input=8
  2. java中如何检查字符串都是数字_如何在Java中检查字符串是否为数字?
  3. loadrunner error 27796 Failed to connect to server
  4. hosts文件的修改方法
  5. 13到21年蓝桥杯真题及解析
  6. rainmeter 皮肤_Rainmeter入门指南:在桌面上显示系统统计信息
  7. VBA写一个下拉复选框,以及循环判断,附代码
  8. Matlab加矩形窗程序,基于MATLAB结合矩形窗设计FIR滤波器
  9. 个人企业征信体系介绍
  10. centos 设置mtu_Linux上合理设置网卡的MTU值
  11. U8二开之界面增加按钮处理事件
  12. (LaTex)CTex的初次使用心得及入门教程
  13. 魔术表演的核心秘密(一)——开篇简介
  14. c3p0连接池的详细配置
  15. 我的世界bc端mysql_[BC端简介] BungeeCord跨服群组简介
  16. 最新的期刊论文怎么下载?
  17. 在.NET中实现彩色光标/动画光标和自定义光标[转]
  18. 1421 净现值查询
  19. DM——数据处理基础之数据、数据统计特性
  20. 海峰五笔 8.0 下载

热门文章

  1. axios post object object_深入学习Axios源码(构建配置)
  2. H3C认证云计算高级工程师
  3. oracle百分比变成小数,oracle中计算百分比,并同时解决小数点前0不显示的问题...
  4. vue 导入excel解析_VUE中导入excel文件
  5. python 大众点评模拟登陆_python项目实战:模拟登陆163邮箱,简单到爆
  6. 移动端页面rem+media写法过程
  7. 零基础入门Python3-列表list详解
  8. SQL Sever 刪除重複數據只剩一條
  9. Leetcode883.Projection Area of 3D Shapes三维形体投影面积
  10. JS 浏览器扩展storage