从问题找原因之CSS浮动清除
问题描述
浮动元素导致的后面img标签居中对齐“失败”,如下图
<div>
<div class="content1">
<div class="float-left">left-div</div>
<div class="float-right">right-div</div>
</div>
<div class="content2">
<img src="./1.jpg" style="width:150px;height:150px;"/>
<p>center text</p>
</div>
</div>
<style>
.content1{
background: pink;
height:50px;
line-height:50px;
}
.float-left{
float: left;
width: 100px;
height: 50px;
background: tan;
}
.float-right{
float: right;
width: 100px;
height: 51px;
background: tan;
}
.content2{
background:springgreen;
text-align:center;
height: 300px;
}
</style>
问题原因
浮动元素造成的影响,文本、行内元素、行内块元素会采取环绕的方式排列在浮动元素周围。图中right-div的高度为51px,高于父级div的50px,故img标签居中是相对于
(父级div宽度)-(right-div宽度)来计算的,所以偏离了正常水平居中的位置。若将p标签放到第img标签前面去,则不会产生这种问题。但最好的办法还是清除浮动。
清除浮动的方法
clear:both
使用
<div style="clear:both"></div>- 将上面的div插入content1和content2之间时,会造成content1和content2之间有一条缝隙,如果看不清,可以将right-div的高度调大
- 将上面的div插入content1尾部时,无变化,问题并未解决
- 将上面的div插入content1和content2之间时,会造成content1和content2之间有一条缝隙,如果看不清,可以将right-div的高度调大
使用
伪元素,结果与上面方式2一致,未能解决问题.clearfix:before,
.clearfix:after{
content: '';
display: table;
clear: both;
}
.clearfix: { zoom:1 } //触发IE的haslayout.
BFC(Block formatting context)
- 设置content1样式
overflow:hidden,完美解决问题
总结:总而言之,本次问题是由于浮动和设置了浮动元素父级元素高度共同作用的结果,不是仅仅清除浮动就能完全解决的。若不设置浮动元素父元素的高度,则img也会正常垂直居中,但浮动未清除。若只清除浮动,而不解决高度突出的问题,则img不能正常垂直居中。设置
overflow:hidden刚好两点都做到了。
参考文章:清除浮动方法解析
从问题找原因之CSS浮动清除的更多相关文章
- 横向排列两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法
最近在做一个div css切割,昨晚发现了长期以来一直无记录下来的问题!关于兼容IE跟FF的float属性.趁现在还清醒赶紧记下笔记先:一.并排在一行的两个div样式有这种情况:ie或者ff下对于子d ...
- [css]浮动-清除浮动的3种方法
清除浮动的方法: 内墙法 注: 这是个奇淫技巧,没什么原理可言,记住即可 这个技巧又使得父box重新可以被子box撑开高度了. 隔墙法-适用于2个box之间上下排列 由于2个box高度依旧是0, 彼此 ...
- 彻底理解浮动float CSS浮动详解 清除浮动的方法
我们把网页的常用的布局格式分为以下三种: 1.标准流. 所谓的标准流就是,行内元素自己单独一行,而块级元素是上下显示的. 以前我们学习的都是标准流. 注意:标准流使我们网页布局中最稳定的一种结构 ...
- css浮动(float)及清除浮动的几种实用方法
CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...
- CSS浮动并清除浮动(造成的影响)
一.浮动 CSS浮动 CSS float浮动的深入研究.详解及拓展(一) CSS浮动属性Float详解 块级元素独占一行 块级元素,在页面中独占一行,自上而下排列,也就是传说中的流. 可以 ...
- css浮动(float)及如何清除浮动
前言: CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float)(1)html文档流 自窗体自上而下分成一行一 ...
- css浮动现象及清除浮动的方法
css浮动现象及清除浮动的方法 首先先明确浮动最初的定义及使用场景:实现文本环绕图片的效果. 除了用浮动外,目前暂无其他方法实现文本环绕 再来看看浮动的具体定义: 浮动的框可以左右移动,直至它 ...
- css浮动(folat),清除浮动(clear)(另加两种清除浮动方式,总共三种清除浮动方式)
css浮动(float) float是css样式,用于设置标签的居左浮动和居右浮动,浮动后的元素不属于html文档流,需要用清除浮动把文档拽回到文档流中 浮动值: left:向左浮动 right:向右 ...
- css浮动布局,浮动原理,清除(闭合)浮动方法
css浮动 1.什么是浮动:在我们布局的时用到的一种技术,能够方便我们进行布局,通过让元素浮动,我们可以使元素在水平上左右移动,再通过margin属性调整位置 2.浮动的原理:使当前元素脱离普通流,相 ...
随机推荐
- Hive udf 或者 spark maven打包问题
正常打包maven pom配置如下 <properties> <project.build.sourceEncoding>UTF8</project.build.sour ...
- 5.string字符串
string(字符串)是 Redis 中最简单的数据类型.我们知道,Redis 所有数据类型都是以 key 作为键,通过检索这个 key 就可以获取相应的 value 值.Redis 存在多种数据类型 ...
- omnet++:用到的方法和语句
1.方法 方法 说明 msg->getName() 获取发送的消息名 uniform(a,b) 生成[a,b]间的随机实数 intuniform(a,b) 生成[a,b]间的随机整数 expon ...
- 通过Xshell或Xftp链接Windows10子系统Linux
1.打开linux系统 2.切换到root角色 sudo -i //切换到root 并输入密码 3.卸载安装ssh server sudo apt-get remove openssh-server ...
- Tableau学习Step6一如何制作炫彩地图
Tableau学习Step6一如何制作炫彩地图 本文首发于博客冰山一树Sankey,去博客浏览效果更好. 一.统计地图概述 1.1 统计地图的基本概念 统计地图的本质:数据的正确对应 将数据信息和地理 ...
- vue--axios异步请求及文件目录结构分析(个人记录)
我这里使用axios进行异步加载 axios是一个库,并不是vue中的第三方插件,使用时不能通过Vue.use()安装插件,需要在原型上进行绑定,即直接在main.js中使用Vue.prototype ...
- LeetCode-092-反转链表 II
反转链表 II 题目描述:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 ...
- Android 应用框架层 SQLite 源码分析
概述 Android 在应用框架层为开发者提供了 SQLite 相关操作接口,其归属于android.database.sqlite包底下,主要包含SQLiteProgram, SQLiteDat ...
- ES77
PUT rr_bd202_chaos_20211220{ "aliases" : { "rr_bd202_chaos_pgold":{} }, "ma ...
- Qt记事本,美化版
主体代码实现 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QMenu> ...