• block,inline和inline-block概念和区别


     


    在我们的WEB前端开发过程中,需要写一些页面,会用到display:inline block inline-block三者元素,这对刚走进前端开发的行业来说的朋友们,不懂他们之间的具体特点与特征,不好更好的驾驭,下面和大家一起看下具体区别于与特点. 

    display:inline就是将元素显示为行内元素. 

    inline元素的特点是: 


    和其他元素都在一行上; 
    高,行高及顶和底边距不可改变; 
    宽度就是它的文字或图片的宽度,不可改变。 

    inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。

    inline元素设置width,height属性无效。

    inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。


    比如 

    <span>, <a>, <label>, <input>, <img>, <strong> 和<em>inline和block可以控制一个元素的行宽高等特性,需要切换的情况如下: 

    让一个inline元素从新行开始; 
    让块元素和其他元素保持在一行上; 
    控制inline元素的宽度(对导航条非凡有用); 
    控制inline元素的高度; 
    无须设定宽度即可为一个块元素设定与文字同宽的背景色。 

    display:block就是将元素显示为块级元素. 

    block元素的特点是: 


    总是在新行上开始; 
    高度,行高以及顶和底边距都可控制; 

    block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。

    block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。

    block元素可以设置margin和padding属性。

    比如 

    <div>, <p>, <h1>, <form>, <ul> 和 <li>display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,答应空格。 

    inline-block的元素特点: 

    将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,答应空格。(准确地说,应用此特性的元素呈现为内联对象,四周元素保持在同一行,但可以设置宽度和高度地块元素的属性) 


    并不是所有浏览器都支持此属性,目前支持的浏览器有:Opera、Safari在IE中对内联元素使用display:inline-block,IE是不识别的,但使用display:inline-block在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。从上面的这个分析,也不难理解为什么IE下,对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被display:inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然还是行布局,而不会如Opera中块元素呈递为内联对象。 

     

    IE下块元素如何实现display:inline-block的效果? 
    有两种方法: 

    1、先使用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(两个display要先后放在两个CSS声明中才有效果,这是IE的一个经典bug,如果先定义了display:inline-block,然后再将display设回inline或block,layout不会消失)。代码如下(...为省略的其他属性内容): 
    div {display:inline-block;...} 
    div {display:inline;} 

    2、直接让块元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的layout(如:zoom:1等)。代码如下: 
    div {display:inline; zoom:1;...} 

    以下用个例子来说明三者的区别和用法: 

     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <style> 
     7 div,span{background-color:lightseagreen;margin:5px;border:1px solid #333;padding:5px;height:52px;color:#fff;} 
     8 .b{display:block;} 
     9 .i{display:inline;} 
    10 div.ib{display:inline-block;} 
    11 div.ib{display:inline;} 
    12 a.ib{display:inline-block;} 
    13 a.ib{display:block;} 
    14 #sb{display:block}
    15 span.v{padding:0;margin:0;border:0;vertical-align:middle;height:100%} 
    16 </style> 
    17 
    18 </head>
    19 <body>
    20 <div>div display:block</div> 
    21 <div class="i">div display:inline</div> 
    22 <div class="ib">div display:inline-block</div> 
    23 <span>span display:inline</span> 
    24 <span class="b">span display:block</span> 
    25 <span id='sb'><a class="ib">a display:block</a></span> 
    26 <div><span class="v"></span>vertical-align:middle</div> 
    27 </body>
    28 </html>

    显示结果:

    #xx{display:inline-block;} 
    #xx{display:inline;} 
    一定要分开写,不要这样写#xx{display:inline-block;display:inline;}


  • 相关阅读:
    (兼容IE8)的渐变
    左侧固定,右侧自适应,两列等高并且自适应的第二种办法
    左侧定宽,右侧自适应,两列布局且等高
    下拉框重写
    在页面中输出当前客户端时间
    用哈希表去数组重复项,有详细注释
    求数组最大值、求和、乘法表、取整
    类似新浪微博输入字符计数的效果
    将博客搬至CSDN
    Mysql常用操作
  • 原文地址:https://www.cnblogs.com/HanBlogs/p/5902929.html
Copyright © 2020-2023  润新知