深入了解float与inline-block

   2015-11-06 0
核心提示:这篇文章主要介绍了深入了解float与inline-block,分别从兼容性,对父元素的影响等方面进行了分析,推荐给小伙伴参考下

最近工作比较轻松,所以一直在写自己的canvas库..也没啥好知识点写博客,停滞了有2个月了吧.故今天决心花些时间来写一篇css的博文,刚好最近项目写界面的时候碰到这2个家伙...所以就和大家一起来半深入的理解下

首先是兼容性

float的话完全不用担心什么浏览器都能兼容,比较是一个很老的属性了.

inline-block则在IE8以上(包括8)才能使用,查了下资料,其实IE5.5的时候就已经有inline-block了,只是实现不一样,所以想要兼容低版本的IE就只能用额外的代码


复制代码
代码如下:

display:inline; //强行不换行
zoom:1; // 用来触发hasLayout,有兴趣深入理解的猴子可自行了解

其次是对父亲元素的影响

inline-block的话,没什么好说的,唯一要注意的就是每个设置了inline-block的元素直接都会有空隙,可以在父亲元素里设置


复制代码
代码如下:

font-size: 0;

来消除,不过后果是什么大家都知道,不过我依然觉得这是最简单暴力的方法,当然也有其他方法,还是请自行查找

float的话,设置了该属性的元素会脱离文本流,也就是说和position:absolute一样,不过对于一样设置了该属性的元素则不会.所以带来的问题就是父亲元素并不会随着子元素的大小改变长宽,但是如果父亲元素设置为inline-block的话,则长宽会随着子元素变化(前提是浏览器兼容inline-block,如果兼容的话我就直接用inline-block了~).

所以在不给父亲元素设置inline-block属性的时候就需要清除浮动.

在父亲元素结束前最后一个浮动元素后.clear:both下(原理大概就是用一个有文本流的元素定位父亲元素的大小),这样父亲元素的高度就会随浮动元素改变

最后是一点其他的小区别

基线:float和inline-block的基线不一样

float的基线是浮动元素紧贴顶部

inline-block的基线是默认的基线,所以比较灵活可以配合vertical-align.

最后的最后...就个人而言还是喜欢用inline-block多点,用float的地方多数可以用inline-block来代替,唯有当要围绕某个元素时float是唯一的解决方法

 
标签: float inline-block
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • js(javascript)取float型小数点后两位数的方法
    以下我们将为大家介绍 JavaScript 保留两位小数的实现方法:四舍五入以下处理结果会四舍五入:?12var num =2.446242342;num = num.toFixed(2); // 输出结果为 2.45不四舍五入以下处理结果不会四舍五入:第一种,先把小数边整数:?12Math.floor(15.7784514000 * 1
    03-08
  • CSS float 父元素高度自适应
    CSS float 父元素高度自适应
    htmlheadtitle/titlestyle type="text/css"*{margin:0 ;padding:0;}.content{border:1px solid red;}.fl{float:left}/style/headbody  div class="content"  div class="fl" 1/divdiv class="fl"2/div  /div/body/html结果如下:class 拥有
    03-08
  • 解决CSS中float:left后需要clear:both清空的繁
      之前,因为公司专门有CSS+DIV的切片设计师,所以我一直都是注重程序的设计与开发。现在,因为接了一些Web网站的项目需要制作,就在空闲时间学习起了CSS、Jquery。    现在,大部分的横排导航都是通过 ul - li *n - a 来实现的。具我所知,要达到这种
    03-08
  • css position, display, float 内联元素、块级
    position属性:position属性指出一个元素的定位方法。有4种可能值:static, relative, absolute or fixed: static:默认值,元素按照在文档流中出现的顺序渲染absolute:绝对定位,元素相对于它的第一个被定位的祖先元素(非static)来进行定位fixed:元素相
    03-08
  • CSS.04 -- 浮动float、overflow、定位position、CSS初始化
    CSS.04 -- 浮动float、overflow、定位position
    标准流:行内/行内块元素横向有序排列 ; 块元素纵向有序排列。 浮动:Float语法:float:left/right ;  设置浮动的元素,脱离标准流浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。 由于浮动框不在文档的普通流中,所
    03-08
  • css float样式的换行问题
    在Chrome、Firefox下这个问题没有出现,但是在IE下就会出现,另起一行了。问题原因是:当非float的元素和float的元素在一起的时候,如果非float元素在先,那么float的元素将被排斥也就是说,你的span是float:right,但是你文本还是float:none。如果要让两者在
    02-08
  • 应不应该使用inline-block代替float
  • 通过float实现两个div不换行
    实现两个div不换行最常用的方法莫过于使用css的float属性,下面有个小示例,大家可以参考下
  • 子Div使用Float后撑开父Div的几种方法
    子Div使用Float后撑开父Div的几种方法
    子Div撑开父Div,可以设置父元素overflow以及zoom,或者是父元素也是设置浮动效果,也可以在添加一个子元素,并设置clear样式
  • CSS之float在IE浏览器下换行问题解决方法
    a标签float在IE等浏览器下换行的情况想必大家都有遇到过吧,解决方法很简单,就是把a标签放在文本前面,下面是具体的示例,需要的朋友了解下
点击排行