zoukankan      html  css  js  c++  java
  • display:inline,display:inline-block,display:block 区别

    之前一直迷惑于display:inline/inline-block/block的异同,在度娘谷哥的帮助下,突然有了一点思路。

    按照网上的介绍,inline将对象转化为内联元素,block将对象转化为块元素,而inline-block则将对象转化为具有块属性的内联元素。

    可能是因为本人理解能力有限,一直很纠结着难以理解这个说法。后来看到这么一个解释[1]:

    内联元素即所有元素都在一行上,无前后换行符,且无法限定高宽,即高宽为其内容的高宽。例如<input>,<img>,<span>,<em>都是内联元素的例子。

    块元素即总在新行上开始,可控制高宽。<div>,<p>,<form>,<h1>为块元素的例子。

    从例子上说,对span进行背景色限定时,会发现span的背景色总是和文字大小相符,即说明了内联元素的特性。而对div增加背景色限定,则可无视其内容,根据div的高宽进行渲染。

    但是,如果需要对span进行背景色限定,但又要对span的大小做规定,那就用到了inline-block。

    <html>
    <head>
    <style>
    #content{auto;height:200px;}
    .blockdiv{background:#ccc;50%;height:50px;}
    .inlinespan{background:#f60;50%;height:50px;}
    </style>
    </head>
    <body>
    <div id="content">
    <div class="blockdiv">这段文字用于测试div的大小</div><span class="inlinespan">这段文字用于测试span的大小
    </span>

    </div>
    </body>
    </html>

    例如上面这个例子,假如想使div.blockdiv和span.inlinespan在一行,但又希望控制div.blockdiv的高度,即可使用div.blockdiv{display:inline-block;}

    inline-block即将对象对外转换为内联元素,但对内其内容又可限定高宽,具有块元素的特征属性。这样一来,规定了inline-block的元素会和周围inline的元素在一行,但它又可以指定高宽。

    仍旧是万恶的IE,IE6/7对inline-block的支持不够完善。因此需要采用hack的方式,但首先需要明了这种hack的原理:

        这是IE的一个经典bug,如果先定义了display:inline-block,然后再设置display回inline或block,layout不会消失。但需要在两个css中[2]。

    IE6/7可识别的hack为*,IE6为_。参考[3,4]后,认定在现在IE6/7下的inline-block可通过以下原理实现。在IE中的方式有以下几种,例如object

    1、#object{

      display:inline-block;//激活inline-block,使之在除IE8/7/6下的浏览器均实现,同时使IE下元素触发block

      zoom:1;//激活IE下的对象haslayout属性

    }

      #object{

      *display:inline;//IE6/7下的对象在保持有haslayout属性前提下,表现为inline

    }

    2、#object{

       float:left;//触发layout,表现为块元素

       display:inline;//使之产生inline效果

    }

    3、#object{

      display:inline; //先使对象呈内联状态

      zoom:1; //激活layout

    }

    因此,display:inline-block在IE中的hack可表现为:

    1、为对象增加haslayout属性,使之表现为块元素

    2、将对象转换为inline.(haslayout不消失)

    3、顺序可颠倒。

    参考:

    1.http://www.cnblogs.com/jdonson/archive/2011/06/10/2077932.html

    2.http://ideal.ncepu.me/2012/03/25/1-182/

    3.http://www.68design.net/Web-Guide/HTMLCSS/41207-4.html

    4.http://www.codesky.net/article/201107/169482.html

  • 相关阅读:
    php之异常处理
    php7之严格模式RFC
    获取真实ip三个方法
    php网站速度性能优化(转)
    PHPweb应用攻击总结(转)
    PHP安全之Web攻击(转)
    php获取真实ip地址(转)
    单表查询
    表与表之间的关系
    表的操作
  • 原文地址:https://www.cnblogs.com/bluers/p/3222454.html
Copyright © 2011-2022 走看看