CSS基础「四」浮动 \ 常见网页布局
本篇文章为 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 属性,将其属性值设置为 hidden
、 auto
或 scroll
- 实例
- 注意是给父元素添加代码
- 优点:代码简洁
- 缺点:无法显示溢出部分
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基础「四」浮动 \ 常见网页布局相关推荐
- CSS基础「七」精灵图 \ 字体图标 \ 三角 \ 用户界面样式 \ 页面初始化
本篇文章为 CSS 基础系列笔记第七篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...
- CSS基础「六」元素的显示与隐藏
本篇文章为 CSS 基础系列笔记第六篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...
- CSS基础「五」定位
本篇文章为 CSS 基础系列笔记第五篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...
- CSS基础「三」盒子模型/产品模块案例/圆角边框/盒子阴影/文字阴影
本篇文章为 CSS 基础系列笔记第三篇,参考 黑马程序员pink老师前端入门教程 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表 CSS基础「二」复合 ...
- CSS基础「二」复合选择器 / 元素显示模式 / 背景 / 三大特性
本篇文章为 CSS 基础系列笔记第二篇,参考 黑马程序员pink老师前端入门教程 如有侵权联系删除,如有问题欢迎指出. 其他CSS基础相关文章: CSS基础「一」基础选择器 / 字体属性 / 文本属性 ...
- CSS基础「一」基础选择器 / 字体属性 / 文本属性 / 三种样式表
前言:本篇文章为 CSS 基础系列笔记第一篇,参考 黑马程序员pink老师前端入门教程 如有侵权联系删除,如有问题欢迎指出. 其他CSS基础相关文章: CSS基础「二」复合选择器 / 元素显示模式 / ...
- CSS浮动/常见网页布局/清除浮动/学成在线案例
CSS 04 1. 浮动(float) 1.1 传统网页布局的三种方式 网页布局的本质--用 CSS 来摆放盒子. 把盒子摆放到相应位置. CSS 提供了三种传统布局方式(简单说,就是盒子如何进行排列 ...
- CSS学习(第四天)(浮动,常见网页布局,清除浮动,PS切图)
CSS浮动 1 浮动 1.1传统网页布局的三种方式 1.2 标准流(普通流/文档流) 1.3 为什么需要浮动? 1.3为什么需要浮动? 1.4什么是浮动? 1.5浮动特性(重难点) 1.6 浮动元素经 ...
- 「译」一个3D网页是如何制作的
「译」一个3D网页是如何制作的 原文: 本文作者制作了一个3D网页作为自己的个人主页,是一个遥控汽车的游戏页面.页面十分有趣,感兴趣的朋友可以先打开体验一下. 以下为原文的译文,是我个人理解的版本.大 ...
最新文章
- axios get的parameter /eg /url+?input=6^input=8
- java中如何检查字符串都是数字_如何在Java中检查字符串是否为数字?
- loadrunner error 27796 Failed to connect to server
- hosts文件的修改方法
- 13到21年蓝桥杯真题及解析
- rainmeter 皮肤_Rainmeter入门指南:在桌面上显示系统统计信息
- VBA写一个下拉复选框,以及循环判断,附代码
- Matlab加矩形窗程序,基于MATLAB结合矩形窗设计FIR滤波器
- 个人企业征信体系介绍
- centos 设置mtu_Linux上合理设置网卡的MTU值
- U8二开之界面增加按钮处理事件
- (LaTex)CTex的初次使用心得及入门教程
- 魔术表演的核心秘密(一)——开篇简介
- c3p0连接池的详细配置
- 我的世界bc端mysql_[BC端简介] BungeeCord跨服群组简介
- 最新的期刊论文怎么下载?
- 在.NET中实现彩色光标/动画光标和自定义光标[转]
- 1421 净现值查询
- DM——数据处理基础之数据、数据统计特性
- 海峰五笔 8.0 下载
热门文章
- axios post object object_深入学习Axios源码(构建配置)
- H3C认证云计算高级工程师
- oracle百分比变成小数,oracle中计算百分比,并同时解决小数点前0不显示的问题...
- vue 导入excel解析_VUE中导入excel文件
- python 大众点评模拟登陆_python项目实战:模拟登陆163邮箱,简单到爆
- 移动端页面rem+media写法过程
- 零基础入门Python3-列表list详解
- SQL Sever 刪除重複數據只剩一條
- Leetcode883.Projection Area of 3D Shapes三维形体投影面积
- JS 浏览器扩展storage