请问css中的区块 inline inline-block block 三者有啥区别呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问css中的区块 inline inline-block block 三者有啥区别呢?相关的知识,希望对你有一定的参考价值。

请问css中的区块 inline inline-block block 三者有什么区别呢?要详细点哦,谢谢!

这样先讲内联元素和块级元素:
内联元素是不可以控制宽和高、margin等;并且在同一行显示,不换行。
块级元素时可以控制宽和高、margin等,并且会换行。

inline:使用此属性后,元素会被显示为内联元素,元素则不会换行。
block:使用此属性后,元素会被现实为块级元素,元素会进行换行。
inline-block:是使元素以块级元素的形式呈现在行内。意思就是说,让这个元素显示在同一行不换行,但是又可以控制高度和宽度,这相当于内敛元素的增强。

要注意的是IE6 不支持inline-block
参考技术A 1.inline是行内元素,同行可以显示,像span、font、em、b这些默认都是行内元素,不会换行,无法设置宽度、高度、margin、border
2.block,块元素,div、p、ul、li等这些默认都是块元素,会换行,除非设置float
3.inline-block,可以同行显示的block,想input、img这些默认就是inline-block,出了可以同行显示,其他基本block一样,但是inline-block兼容性很差,要用需要写hack

inline-block的hack如下:

display: -moz-inline-stack;火狐2hack
display: inline-block;
vertical-align: top;撑出盒子的bug修复
zoom: 1;后面两行IE7hack
*display: inline;
使用例子 ul li display: -moz-inline-stack; display: inline-block; vertical-align: top; zoom: 1; *display: inline;

inline-block有个好处,就是div设置浮动只能实现居左,或者居右,而inline-block可以通过上级容器设置text-align:center实现块元素居中
参考技术B block CSS1
块对象的默认值。将对象强制作为块对象呈递,为对象之后添加新行
inline CSS1
内联对象的默认值。将对象强制作为内联对象呈递,从对象中删除行
inline-block IE5.5
将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内
参考技术C 第一个是同行显示,第三个是换行显示。第二个没用过。

Sass--运算

数值运算

body{
    height: 800px;
    $smallBlockWidthAndHeight: 100px;

    .outside{
        background: gray;
        height: 500px;
        .smallBlock{
            width: $smallBlockWidthAndHeight;
            height: $smallBlockWidthAndHeight;
            background: red;
            display: inline-block;
            margin-left: 5px;
        }

        .resultBlock{
            width: $smallBlockWidthAndHeight / 2;
            height: $smallBlockWidthAndHeight / 2;
            background: blue;
            display: inline-block;
            margin-left: 5px;
        }
    }
}

 

技术分享

 

 

字符串运算

实例 1

body{
    // $str: "70px" + "80px";
    $str: 70px + 80px;
    .outside{
        width: 500px;
        height: 300px;
        background: gray;

        margin-left: $str;
    }
}

 

编译后

body .outside {
  width: 500px;
  height: 300px;
  background: gray;
  margin-left: 150px; }

 

 

实例 2

body{
    $str: "70px" + "80px";
    .outside{
        width: 500px;
        height: 300px;
        background: gray;

        margin-left: $str;
    }
}

 

编译后

body .outside {
  width: 500px;
  height: 300px;
  background: gray;
  margin-left: "70px80px"; }

 

 

实例 3 

body{
    .outside{
        width: 500px;
        height: 300px;
        background: gray;

        &:after{
            content: "边距是:\\"" + (70px + 80px) + "\\"";
        }
    }
}

 

编译后

@charset "UTF-8";
body .outside {
  width: 500px;
  height: 300px;
  background: gray; }
  body .outside:after {
    content: ‘边距是:"150px"‘; }

 

 

可以看出来,这个规则和JS运算挺像的

以上是关于请问css中的区块 inline inline-block block 三者有啥区别呢?的主要内容,如果未能解决你的问题,请参考以下文章

用◇制作三角

CSS进阶篇——展示 (display)

CSS进阶篇——展示 (display)

CSS进阶篇——展示 (display)

Sass--运算

元素居中