display:inline-block,block,inline的区别与用法

一.首先要了解什么是块级元素与行级元素

块级元素

大家在学习的HML的过程中可能已经发现,有些标签非常霸道,它是独占一行的,别的元素(即标签)不能和它共享同一行,其后的多个block元素也自动换行,可以设置width,height,设置了width后即使该行还有剩余的位置,也同样独占一行,同样也可以设置margin和padding属性。

PS:常见的块级元素:h1~h6,div ,ul,form,p等

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style type="text/css">
        #wrapper div
        {
            height:100px;
            width:100px;
            margin:20px;
            text-align: center;
        }
        #first{background-color: violet;}
        #second{background-color: yellow;}
        #third{background-color:tomato;}

    </style>
</head>
<body>
    <div id="wrapper">
        <div id="first"> 1</div>
        <div id="second"> 2</div>
        <div id="third"> 3</div>
    </div>
</body>
</html>

效果如图:
效果如图

行级元素

行级元素又称行内元素,与其他元素在同一行上,行内元素可以容纳其他行内元素,但不可以容纳块元素,无法定义高度和宽度,可以定义margin-left和margin-right,但不可以定义margin-top和margin-bottom。

display:inline-block,block,inline元素的区别

1、display:block将元素显示为块级元素,从而可以更好地操控元素的宽高,以及内外边距,每一个块级元素都是从新的一行开始。

2、display : inline将元素显示为行内元素,高度,行高以及底边距不可改变,高度就是内容文字或者图片的宽度,不可以改变。多个相邻的行内元素排在同一行里,知道页面一行排列不下,才会换新的一行。

3、display:inline-block看上去值名inline-block是一个混合产物,实际上确是如此,将元素显示为行内块状元素,常见的inline-block元素有两个:img元素和input元素,设置该属性后,其他的行内块级元素会排列在同一行。比如我们li元素一个inline-block,使其既有block的宽度高度特性,又有inline的同行特性,在同一行内有不同高度内容的元素时,通常要设置对齐方式如vertical-align: top;来使元素顶部对齐。此外,对于块元素,IE6和IE7不能识别“display:inline-block”,意思就是加不加“display:inline-block”都对页面没有影响,解决方法是:在IE6和IE7中用“display:inline;*zoom:1;”来代替“display:inline-block”。但对于行内元素,则不存在兼容性问题,所有浏览器都可以识别,可以正常使用。当然IE6和IE7也逐渐淡出历史舞台。

例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #inline p{
            display: inline;
            background-color:red ;
            width:300px;/*这里设置无用*/
        }
        #inline-block p{
            display: inline-block;
            background-color:red ;
            width:100px;
            padding:10px;
        }
        #block p{
            display: block;
            background-color: red;
            width:100px;
            padding:20px;
        }
        div{
            margin:20px;
            background-color: #eee;
        }
    </style>
</head>
<body>
     <div id="inline">
        display:inline 在同一行,并且宽度就等于文字内容的宽度且设置宽度无用<p>内容内容内容内容内容内容内容</p>内容内容内容内容内容内容
     </div>
     <div id="inline-block">
        display:inline-block  既有行级元素的特性,也有块级元素的特性,因此在同一行,能设置宽高,margin,padding<p>内容内容内容内容内容内容内容</p>内容内容内容内容内容内容
     </div>
     <div id="block">
        display:block 块级元素会自动换新行,占领一行,可以设置宽高,margin,padding <p>内容内容内容内容内容内容内容</p>内容内容内容内容内容内容
     </div>
</body>
</html>

效果如图:
在这里插入图片描述

需要注意的是:
低版本的ie浏览器(ie6 ie7)是不支持display:inline-block;所以理论上ie是不识别的,但是在 ie 内核下有个部分叫做 hasLayout,只要触发了它,这个元素就可以设置高宽从而使行级元素拥有了display:inline-block属性的表象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值