css一个盒子里可以装3个图片并排吗_John: CSS浮动与清除浮动属性详解(CSS float clear)...

24dc225b411ad9e6c755a5fe025cebd8.png

CSS里的浮动,可以让元素脱离标准流,从左上角或右上角依次贴边排列。

下面这个案例将会帮我们了解浮动的基本情况。下面这段代码块,外面是一个大div,里面包含着3个div,第一个左浮动,后两个无浮动。

//style样式.a{width: 500px;height: 500px;background-color: pink;}.a1{width: 100px;height: 100px;float: left;background-color: red;}.a2{background-color: blue;}.a3{background-color: yellow;}
//body部分
<div class="a"><div class="a1">a1</div><div class="a2">a2</div><div class="a3">a3</div>
</div>

它的运行结果是:

e3e97c0ac90f9d6d7722c3122862df2a.png
全部代码见文章最后的附录代码块中的“第一张图片.html”

在上图中,a2和a3的区域只被展示了一部分,还有一部分被a1层叠(压在下面)了。这是因为a2和a3都没有设置width和height,所以宽度会自动充满整个父容器,而因为a1脱离了标准流,所以a2和a3可以继续使用被a1压住的空间。而它们的Height也没有设置,其默认值是auto,也就是自适应,所以a3和a3的高度都是文字的行高。

那么a2和a3中的文字为什么没有被a1压在底下呢?这是因为文字会自动避开浮动元素,一定要让自己显示出来,所以a2和a3中的文字才会被我们看到。

这时候,如果在a2中加1个clear:both属性,即让a2不再受之前的浮动元素的影响(即a2认为之前的元素都是普通元素而不是浮动元素),这样,a2便认为,哦,a1就是个非常普通的块元素,那a2自然要显示在a1的下一行了,如下图。

24cdeaf2dafe9a04b81033173908a968.png
全部代码见文章最后的附录代码块中的“第二张图片.html”

下面我们看点复杂点的例子。

在下面的代码中,我们创建了两个大div,每个大div中有4个小div,每个小div都是向左浮动的。它们的尺寸、颜色如代码块所示。

//CSS样式* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 500px;border: 2px solid blue;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}
//body部分
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div>
</div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div>
</div>

那他们的运行结果如何呢?是下面这样的。

fb0000baf816750dee7105b10142f7ab.png
全部代码见文章最后的附录代码块中的“第三张图片.html”

两个大div,我们只能看到两条线,这是因为它们没有设置高度(即自适应,被里面的元素撑开)但是实际上又没有被撑开,因为子div都脱离了标准流,所以才撑不开大div,于是大div的height就是0,红蓝长线分别是它们的border,而且是两倍的border,因为高度是0所以上下border碰在一起了。红线和蓝线之间有大约20px的距离,这是我们给第一个大div设置的margin-bottom:20px在起作用。

而黄色的div们之所以跑到了图中的位置,从第一个黄div说起吧,它其实想贴最后一个粉红div的右边框,但显然第二个大div的剩余宽度要比它的宽度要小,所以它过不去,于是又去尝试贴第3个、2个、1个粉红div的边,显然都做不到,于是它只能去粉红div的下一行贴父元素的左边框了。而后面的黄div则依次贴它的边。

如果我们把第一个黄小div的宽度缩小到可以到上一行贴边,效果就会像下面这样:

6310965dbe6f15629d439588d4e0d15f.png
全部代码见文章最后的附录代码块中的“第四张图片.html”

而如果第二个大div足够宽,其内部的div也都能够直接贴第4个粉红div的右边框了,如下图。

cbc66d8c5f7b0a05930229c67aa5ebbf.png
全部代码见文章最后的附录代码块中的“第五张图片.html”

全部代码见链接中的“第一张图片.html”

那么怎样才能如我们所愿,正常显示两个大div包含着4个小div呢?

第一种方法是给大div设置height。本来我们让height自适应,但因为小div脱离了标准文档流所以无法撑开大div,那我们给大div设置height,显然就解决了。

即:在两个大div的样式中加一行height:150px;(只要该值大于其内部小div的高度即可)

起到效果如下图所示:

c1686586c5ad3869c8ef2b19f7b85d33.png
全部代码见文章最后的附录代码块中的“第六张图片.html”

但是这样,我们就无法实现高度自适应了,只能让height是个定值,因此稍有缺陷。

那我们尝试另一种思路,即用clear属性来清除float对下面元素带来的影响。

首先说外墙法,就是在两个大div之间放一个大div,写上clear:both。这样效果就会如下图所示:

7d48550e249d3ecdf5e72a5d79bdc1f8.png
全部代码见文章最后的附录代码块中的“第六点无张图片.html”(这个是后期补充的内容)

上图中,红蓝长线之间隔着一个高度是0的div,这个div唯一的作用就是清除上文的浮动。也就是说,这个div本身会觉得上文都是正常的,所以会贴着粉红子盒子的下边排列。但是这个方法起到的作用很有限,就只是让下面的大div会排列在粉红盒子的下边以后而已。

下面介绍最主流、好用(我自己觉得)的方法:内墙法。

内墙法就是在大盒子里最后一个浮动的子盒子后面加一个子盒子,让其属性值clear:both。

57690c800abf1aabea994b8cdcf7a5f5.png
全部代码见文章最后的附录代码块中的“第七张图片.html”

这个图才是我们一般情况下最想要的样式哦。实际上在上图中,两个外层大盒子的下边框上方都有一个我们看不到的属性为clear的子盒子,因为我们没有设置宽高,所以宽会充满整个外层大盒子,而高会自适应,而我们又没有设置内部元素,所以撑不开,height是0,且我们没有设置border,自然这个盒子我们就看不到了。如果我们给它设置下border为黑色,那么就能看到这个div了,如下图,可以清晰地看到黑色边框。

14d880bac1588bfe56731277bc85d2c5.png
全部代码见文章最后的附录代码块中的“第八张图片.html”

需注意,如果不设置border,只设置background-color,我们还是看不到,因为height是0,所以自然也没法显示bgcolor了。

但实际上,内墙法也有缺陷,样式上是好看了,但是从语义上,多了一个没有内容也机会没有用的元素,很多人认为是在结构上是不值得提倡的。

你还有哪些问题呢?可以在评论区参与讨论哦~

附录:以上8张图片的完整代码:

第一张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>day2 clear1</title><style type="text/css">.a{width: 500px;height: 500px;background-color: pink;}.a1{width: 100px;height: 100px;float: left;background-color: red;}.a2{background-color: blue;/*clear: both;*/}.a3{background-color: yellow;}</style>
</head>
<body>
<div class="a"><div class="a1">a1</div><div class="a2">a2</div><div class="a3">a3</div>
</div>
</body>
</html>

第二张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>day2 clear1</title><style type="text/css">.a{width: 500px;height: 500px;background-color: pink;}.a1{width: 100px;height: 100px;float: left;background-color: red;}.a2{background-color: blue;clear: both;}.a3{background-color: yellow;}</style>
</head>
<body>
<div class="a"><div class="a1">a1</div><div class="a2">a2</div><div class="a3">a3</div>
</div>
</body>
</html>

第三张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 500px;border: 2px solid blue;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div>
</div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div>
</div>
</body>
</html>

第四张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 500px;border: 2px solid blue;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}#bbb{width: 10px;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div>
</div>
<div class="b"><div class="b1" id="bbb"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div>
</div>
</body>
</html>

第五张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 1000px;border: 2px solid blue;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div>
</div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div>
</div>
</body>
</html>

第六张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;height: 150px;}.b{width: 500px;border: 2px solid blue;height: 150px;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div>
</div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div>
</div>
</body>
</html>

第六点五张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 500px;border: 2px solid blue;clear: left;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}.cl{clear: both;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div>
<!--    <div class="cl"></div>-->
</div>
<div class="cl"></div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div>
<!--    <div class="cl"></div>-->
</div>
</body>
</html>

第七张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 500px;border: 2px solid blue;clear: left;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}.cl{clear: both;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="cl"></div>
</div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="cl"></div>
</div>
</body>
</html>

第八张图片:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>3</title><style type="text/css">* {padding: 0;margin: 0;}.a{width: 500px;border: 2px solid red;margin-bottom: 20px;}.b{width: 500px;border: 2px solid blue;clear: left;}.a1{width: 100px;margin-right: 10px;height: 100px;float: left;background-color: pink;border: 2px solid red;}.b1{width: 100px;margin-right: 10px;height: 30px;float: left;background-color: yellow;border: 2px solid blue;}.cl {clear: both;border: 2px solid black;}</style>
</head>
<body>
<div class="a"><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="a1"></div><div class="cl"></div>
</div>
<div class="b"><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="b1"></div><div class="cl"></div>
</div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连接驱动_在jdbc中完成对于jdbc参数、jdbc变量,加载驱动,创建连接的封装

JDBC简介JDBC中文含义&#xff1a;Java数据库连接&#xff0c;英文全称&#xff1a;Java Database Connectivity。它是Java语言中用来规范访问数据库的接口&#xff0c;提供了放多接口方法&#xff0c;例如查询 、更新、插入、删除等方法。另外一点要注意的是&#xff1a;JDBC是…

tensorflow 保存训练loss_tensorflow2.0保存和加载模型 (tensorflow2.0官方教程翻译)

最新版本&#xff1a;https://www.mashangxue123.com/tensorflow/tf2-tutorials-keras-save_and_restore_models.html英文版本&#xff1a;https://tensorflow.google.cn/alpha/tutorials/keras/save_and_restore_models翻译建议PR&#xff1a;https://github.com/mashangxue/t…

layui导入模板数据_数据可视化图表 教程echarts,第一讲

1我们写web项目&#xff0c;展示数据的地方&#xff0c;可能会使用到图表。今天就讲这个玩意。本教程暂时定为 三讲&#xff1a;(随后情况&#xff0c;如果有新的研究&#xff0c;会有所更新&#xff01;)第一讲 饼图的使用第二讲 柱状图的使用第三讲 拆线图的使用此教程希望…

出发a标签_以用户标签为例,复盘B端产品的需求挖掘方法论

阅读指南受众人群&#xff1a;B端初级产品经理阅读收获&#xff1a;B端产品需求挖掘的一些技巧&#xff1b;了解用户标签/画像的一些业务知识。手上负责一个和数据方面有关的B端系统&#xff0c;在日常的产品规划当中&#xff0c;没有关于“用户标签”方面的规划&#xff0c;突…

字符ascii码值转换_没想到 Unicode 字符还能这样玩?

脚本之家你与百万开发者在一起来源 | 程序通事(ID&#xff1a;US_stocks)如若转载请联系原公众号上周的时候&#xff0c;朋友圈的直升飞机不知道为什么就火了&#xff0c;很多朋友开着各种花式飞机带着起飞。图片来自网络还没来得及了解咋回事来着&#xff0c;这个直升飞机就?…

右键菜单无响应_被流氓软件玩坏了?这两个清理工具拯救你凌乱的右键菜单。...

Hello 这里是一周进步我们写了四年近2000篇的干货文章&#xff0c;还分享了许多实用的神器工具&#xff0c;一路以来&#xff0c;感谢大家的支持与陪伴~文 / 一周进步 安哥拉如果你和我们一样&#xff0c;是一个喜欢在电脑上安装各种各样的软件的人&#xff0c;你的电脑右键菜…

jsp mysql源码_jsp+servlet+mysql员工管理系统源代码下载

jspservletmysql员工管理系统项目截图注册页面登录页面添加员工编辑员工员工列表数据库建表语句/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50509Source Host : localhost:3306Source Database : wdhdbTarget Server Type : MYSQLTarget …

vs里安装了mysql吗_vs2017安装 MySQL for Visual Studio 1.2.

vs2017安装想在win7EF6 VS2017 MySQL 但是安装MySQL for Visual Studio 1.2.7 时一直安装不上去&#xff0c;如下&#xff1a;Action 9:40:05: InstallFinalize.1: Action 9:40:05: DeleteRegKeyAndExtensionsFile_VS2013.1: Action 9:40:06: DeleteRegKeyAndExtensionsFile_…

mysql数据库优化语句_mysql数据库优化语句

mysql优化语句数据库语句&#xff1a; Ddl(数据定义语言) alter create drop Dml(数据操作语言) inset delete update www.2cto.com Dtl(数据事务语言) conmmit rollback savepoint Select Dcl(数据控制语句) grant赋权限 revoke回收 Mysql数据库优化&#xff1a; 1、 数据库表…

json模拟数据怎么用_在使用axios获取自己模拟的json数据是踩到的坑

最近在使用Vue仿写一个网易云音乐的单页面应用&#xff0c;当页面布局什么的写完后&#xff0c;然后就准备用axios获取后台数据渲染页面了&#xff0c;当然&#xff0c;我自己写的&#xff0c;并没有后台&#xff0c;所以&#xff0c;我就自己写json文件&#xff0c;然后弄prox…

mysql架构深入_mysql性能优化2:深入认识mysql体系架构

前言本文将重点梳理mysql的体系架构&#xff0c;便于了解mysql的实现原理。Mysql体系结构Client Connectors 接入方 支持协议很多Management Serveices & Utilities 系统管理和控制工具&#xff0c;mysqldump、 mysql复制集群、分区管理等Connection Pool 连接池&#xff1…

mysql租车管理系统_基于java实现租车管理系统

概述基于java swing JFrame 的图书馆管理系统&#xff0c;租车&#xff0c;还车&#xff0c;管理员管理用户&#xff0c;付款等。部分代码public class Login extends JFrame {private static final long serialVersionUID 1L;/*** 登录窗体*/public Login() {setDefaultClo…

java 1的阶乘之和_1-20的阶乘之和(java)

import java.math.BigInteger;public class Factorial {//2)求1&#xff01;2&#xff01;……20&#xff01;public static void main(String[] args){BigInteger sumBigInteger.ZERO;for(BigInteger iBigInteger.ONE;i.intValue()<20;){ii.add(BigInteger.ONE);sumsum.add…

java构建json_Java构造和解析Json数据的两种方法详解一

在www.json.org上公布了很多JAVA下的json构造和解析工具&#xff0c;其中org.json和json-lib比较简单&#xff0c;两者使用上差不多但还是有些区别。下面首先介绍用json-lib构造和解析Json数据的方法示例。用org.son构造和解析Json数据的方法详解请参见我下一篇博文&#xff1a…

java final被覆盖_java中的final的使用

1、final类不能被继承&#xff0c;因此final类的成员方法没有机会被覆盖&#xff0c;默认都是final的。在设计类时候&#xff0c;如果这个类不需要有子类&#xff0c;类的实现细节不允许改变&#xff0c;并且确信这个类不会再被扩展&#xff0c;那么就设计为final类。(什么时候…

wordcount.java_mapreduce中wordcount的java实现

用java模拟词频统计。有3个文件&#xff1a;text1: hello worldtext2:hello hadooptext3:hello mapreduce对上面的文件进行词频统计&#xff1a;结果应该是&#xff1a;hello:3; hadoop:1; world:1; mapreduce:1代码实现如下&#xff1a;package count;import java.ut…

java程序回滚之后在哪看_Java在触发事务回滚之后为什么会再一次回到Servlet开始的地方重新走一次流程?...

代码流程前台点击"提交订单"进入BaseServlet.classBaseServlet.class分发至子类OrderServlet.class的submitOrder()方法submitOrder()调用Service层的submitOrder()方法.关键是Service层submitOrder()中使用了事务回滚. 这里调用了Dao层两个方法: fun01()和fun02(), …

java不进入for_为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?...

在阅读《阿里巴巴Java开发手册》时&#xff0c;发现有一条关于在 foreach 循环里进行元素的 remove/add 操作的规约&#xff0c;具体内容如下&#xff1a;错误演示我们首先在 IDEA 中编写一个在 foreach 循环里进行 remove 操作的代码&#xff1a;import java.util.ArrayList;i…

8086汇编4位bcd码_二进制格雷码与自然二进制码的互换分析

在精确定位控制系统中&#xff0c;为了提高控制精度&#xff0c;准确测量控制对象的位置是十分重要的。目前&#xff0c;检测位置的办法有两种&#xff1a;其一是使用位置传感器&#xff0c;测量到的位移量由变送器经A/D转换成数字量送至系统进行进一步处理。此方法精度高&…

软件工程结构化建模的方法和工具_软件工程系列-结构化设计方法2

本系列文章为笔记&#xff0c;内容根据北京大学《软件工程》MOOC 初始化模块结构图精化的启发式规则常见的启发式规则什么叫做“启发式”根据设计准则&#xff0c;从长期的软件开发实践中&#xff0c;总结出来的规则既不是设计目标&#xff0c;也不是设计时应该普遍遵循的原理常…