资讯专栏INFORMATION COLUMN

如何解决因float带来的排版问题?

william / 513人阅读

摘要:如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。用属性来指定要插入的内容。的作用是允许浏览器渲染它,但是不显示出来。这个元素的作用就像元素它定义了一个块级盒子有两个特性同行等高宽度自动调节。

浮动造成的常见问题有哪些? 兄弟元素排版错乱

内联元素(行内元素)
如果该兄弟元素是内联元素,内联元素会尽可能的围绕在浮动元素的周围

块级元素
如果该兄弟元素是块等元素,块级元素会无视浮动元素,并且一定程度的覆盖浮动元素,
文本是属于行内匿名元素,所以会浮动在内联元素周围,实际div已经尝试了覆盖
会在元素换行上有疑问,或许你还会想着通过宽度来解决这个换行问题

父元素塌陷问题
因为元素浮动,和未浮动的父元素不在同一个文档流当中,浮动的元素不能撑起来父元素的高度

为什么会造成这种现象?

使用用浮动会让元素脱离普通流,完成各种定位的同时,会带来了许多后遗症

如何解决浮动带来的问题? 方法一:clear:both

含义
不允许改元素的两边有浮动的元素

使用情况
更适合用于需要换行,却因浮动换行失败的情况

空div是什么个意思?
换行也存在两种可能性,一种是他紧邻的兄弟元素要换行,那再这个元素上直接添加clear:both就好,
还有一种是这个元素接下来的元素都要换行,那么我们就悄悄的呢添加一个其实没有任何意义的div,写上一个类,里面有clear:both;
还要有height:或者0 line-height: 0;要不然会换行了背景还是会塌陷

方法二:overflow:hidden/auto

含义
overflow 属性规定当内容溢出元素框时发生的事情。
hidden 内容会被修剪,并且其余内容是不可见的。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
auto对seo较为友好

使用情况
float造成的盒子塌陷

为什么不是裁剪跨出边界的元素,反而是撑高?
牵涉到BFC机制,overflow:hidden 的意思是超出的部分要裁切隐藏掉,
那么如果float 的元素不占普通流位置普通流的包含块要根据内容高度裁切隐藏,
如果高度是默认值auto那么不计算其内浮动元素高度就裁切就有可能会裁掉float,
这是反布局常识的, 所以如果没有明确设定容器高情况下它要计算内容全部高度才能确定在什么位置, hidden浮动的高度就要被计算进去顺带达成了清理浮动的目标。
简单说就是overflow会开启一个计算高度的机制,而这个机制的计算包括float

兼容性
IE6 中需要触发 hasLayout ——为父元素设置容器宽高或设置 zoom:1

方法三::after伪元素法(兼容性各方面综合最佳)

含义
after 选择器在被选元素的内容后面插入内容。
用 content 属性来指定要插入的内容。有点贵像空div的高级版

写法一


     
div-float:left
div-float:left
div-float:left
div-无float
第二个大盒子

写法二

 .clearfix:before, .clearfix:after {
       content:"";
       display:table;
   }
   .clearfix:after{
       clear:both;
       overflow:hidden;
   }
   .clearfix{
       zoom:1;
   }

解析
用after:伪元素在需要清除浮动的大盒子外边添加了一个看不见(visibility)但是有高度(高度为0)的空内容块。
visibility:hidden;的作用是允许浏览器渲染它,但是不显示出来。
display:table,这个元素的作用就像

元素.
它定义了一个块级盒子.有两个特性同行等高,宽度自动调节。

参考资料

1.kayo博客
2.知乎

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/115162.html

相关文章

  • 重拾css(9)——float

    摘要:导致这一现象的最根本原因在于被设置了的元素会脱离文档流。脱离文档流可以理解为子元素与父元素间的结构被破坏,父子关系解除。 1.引言 对于我们所有的web前端开发人员,float是或者曾经一度是你最熟悉的陌生人——你离不开它,却整天承受着它所带给你的各种痛苦,你以为它很简单就那么一点知识,但却驾驭不了它各种奇怪的现象。这就是我们又爱又恨的——float。所以,系统的学一学float是非常...

    CollinPeng 评论0 收藏0
  • 前端笔记之CSS(下)浮动&BFC&定位&Hack

    摘要:并最终窗体自上而下分成一行行,并在每行中从左至右的顺序排放元素。宋体清除浮动这是专业术语,其实就是需要我们解决浮动带来的影响宋体父元素的高度塌陷宋体。相对定位的参考点是自身。 一、浮动 1.1 各个语言的主要知识点 HTML:标签语义化(那么怎么样布局才是合理的?没有绝对的对和错) CSS:   样式:   布局:     标准流(标准文档流、普通文档流):盒子模型(width/height...

    番茄西红柿 评论0 收藏0
  • CSS魔法堂:说说Float那个被埋没志向

    摘要:时其宽度始终保持占满宽度的态度。清除浮动就是为浮动影响的范围划边界。那么可归结为的父容器包裹所有子元素。注意属性值不能为空白,否则无法清除浮动。 前言  定位系统中第一难理解就是Normal flow,而第二就非Float莫属了,而Float难理解的原因有俩,1. 一开头我们就用错了;2. 它跟Normal flow靠得太近了。本文尝试理清Float的特性和行为特征,若有纰漏望各位指正...

    legendmohe 评论0 收藏0
  • 重学前端学习笔记(二十五)--CSS正常流

    摘要:一正常流的行为正常流的排版行为依次排列,排不下了换行。在正常流基础上,有相关规则,使得一些盒占据了正常流需要的空间,可以把理解为文字环绕。 笔记说明 重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系,笔者主要整理学习过程的一些要点笔记以及感悟,完整的可以加入winter的专栏学习【原文有winter的语音】,如有侵权请联...

    dcr309duan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<