首先我们大概区分下 inline与inline-block、block的区别,

官方定义如下:

inline:内联元素,从左到右依次排列,宽度高度由内容决定;

block:块级元素,独占一行,可以设定宽高;

inline-block:内联块元素,从左到右依次排列,可以设定宽高。

这里我们需要注意的地方有:

1.在有多个内容高度不一样的 内联元素的时候, 内联元素的位置是从最高的高度范围内从下到上排列的,如下:

<div>
    小字体<span style="font-size:50px">大字体</span>
  </div>

样式如下:

2.inline-block在排列的时候,元素和元素之间有空隙,如下代码:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
   .lineblock{
       width:100px;
       height:100px;
       background-color:green;
       display:inline-block;
   }
  </style>
</head>
<body>
  <div class="lineblock"></div>
  <div class="lineblock"></div>
  <div class="lineblock"></div>
  <div class="lineblock"></div>
</body>
</html>

效果如下:

对此,我们又两种解决方案:

(1)设置容器的font-size:0,如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
  #container{
    font-size:0;
  }
   .lineblock{
       width:100px;
       height:100px;
       background-color:green;
       display:inline-block;
   }
  </style>
</head>
<body>
  <div id="container">
    <div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
  </div>
</body>
</html>

效果如下:

完美解决,不过font-size:0在容器里面有文字的时候,比较麻烦,还得重新设置容器中文字的大小,而且有的浏览器会失效,比如IE7或者低版本的chrome。

(2)设置letter-spaceing的值,代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
  #container{
    letter-spacing:-4px;
  }
   .lineblock{
       width:100px;
       height:100px;
       background-color:green;
       display:inline-block;
   }
  </style>
</head>
<body>
  <div id="container">
    <div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
  </div>
</body>
</html>

但是有个问题,中间的间隙变的不一样了,可以解决间隙的问题,但是有点勉强

 

(3)把元素和元素之间的换行去掉,代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
   .lineblock{
       width:100px;
       height:100px;
       background-color:green;
       display:inline-block;
   }
  </style>
</head>
<body>
  <div id="container">
    <div class="lineblock"></div><div class="lineblock"></div><div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
  </div>
</body>
</html>

效果如下: ,我们发现不换行,则没有空格,换行则有空格,这是因为浏览器中对HTML文档流解析的时候,把空格解析为空格了,所以就会有间隙,对于inline元素的布局同理,代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>

</head>
<body>

我是代码中的第一行

我是第二行
  </body>
</html>

效果如下:

(4)这种也是我们解决间隙常用到的一中方法,设置容器的font-size:0,代码如下:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style>
    #container{
      font-size:0;
    }
   .lineblock{
       width:100px;
       height:100px;
       background-color:green;
       display:inline-block;
   }
  </style>
</head>
<body>
  <div id="container">
    <div class="lineblock"></div><div class="lineblock"></div><div class="lineblock"></div>
    <div class="lineblock"></div>
    <div class="lineblock"></div>
  </div>
</body>
</html>

效果如下:

讲了这么多,其实就为了了解一句话:多个inline 、inline-block元素的换行在浏览器中会解析为空格,希望对大家有帮助。

inline-block的理解的更多相关文章

  1. 对于block的理解,block的面试题

    1.block跟swift中的闭包(closure)基本一样,都常用于值的回调,特别是在多线程的网络请求回调中,使用起来极为方便. 2.block的开头是"^",接着是由小括号所报 ...

  2. Block 朴实理解

    转载自:http://www.cnblogs.com/lzz900201/archive/2013/04/17/3025340.html block是个什么玩意儿 Block是Apple Inc.为C ...

  3. display:inline block inline-block 的区别

    原文地址:http://blog.csdn.net/jly036/article/details/5506182 display:block就是将元素显示为块级元素. block元素的特点是: 总是在 ...

  4. inline,block,inline-block解析

    display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div& ...

  5. inline,block,inline-block的区别

    display:block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block元素可以设置width,height属性.块级元 ...

  6. 块状元素和内联元素 【inline block】

    // 9) { colorRandom += colorArray[randomV - 10]; } else { colorRandom += randomV; } } currentEle.css ...

  7. inline, block, and inline-block

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...

  8. Objective-C block深入理解

    一.block是什么? block是带有自动变量(局部变量)的匿名函数.它是C语言的扩展功能,C语言标准并不支持block. block是Objective-C的闭包实现,正如C++中的Lambda表 ...

  9. inline-block,inline,block,table-cell,float

    float:left ---------------------------------------------------------------------------------------- ...

  10. c++ inline关键字的理解

    1. inline是实现修饰符,而非声明修饰符,所以应该用于实现部分的修饰(你也可以放置inline在声明,但是没有必要) 2. 所有中类中定义的函数都默认声明为inline函数,所有我们不用显示地去 ...

随机推荐

  1. C# 控件消失等问题

    控件消失原因: 1.新控件的触发导致页面重载,该重载有没有达到原有控件的触发状态进而消失. 2.(目前只发现这一点,后续又发现再更...) 1.示例: ASPX: <div> <!- ...

  2. Window服务项目脚手架

    本人最近工作用到window服务程序,于是尝试分享下经验,开源了一个window服务脚手架项目,把window服务程序必不可少的组件集成进去,如日志组件log4net,window服务挂在后台,用日志 ...

  3. 带查询参数 可分页 的 T-SQL 语句写法

    ) DECLARE @pageindex int DECLARE @pagesize int DECLARE @classid int set @keys = '' ; ; ; with temptb ...

  4. 【java】多态

    多态:某一类事物的多种存在形态 如:动物中的猫和狗猫对象对象的类型是猫类型,即 cat c1= new cat()但同时猫也是动物中的一种,也可以把猫成为动物,即 animal c1= new cat ...

  5. JavaWeb数据库长时间不访问断开链接解决思路

    这几天开发的线上商超系统长时间不操作,会频繁的出现第一次登陆或者跟数据库操作有关的方法都会报500错误,很是鸡肋啊这个问题. 经过网上不断的探索,在知识的海洋里畅游了几分钟后我自己总结出一套方法,我用 ...

  6. WinEdt和LaTeX的简介

    LaTex 是一款Tex软件, 是一款专业的 pdf 排版软件,功能强大,上手简单,是老板折磨新同学的一件非常好用的利器,能让你仅用两个晚上就达到肾虚的效果. LaTex的软件由MikTex以及编译器 ...

  7. IMU(LPMS-B2) ROS下使用教程

    一.基本信息 http://www.alubi.cn/lpms-b2/ 安装ros教程 http://wiki.ros.org/lpms_imu https://lp-research.com/ros ...

  8. RDLC报表系列--------初级报表

    前面记录下了很多平时开发遇到的问题,RLDC之前也是不会,只会水晶报表,后来也慢慢的也上手了.把这些记录下来,以后用的着 1.打开VS添加新建项,选择Reporting,选择报表,后缀名为RLDC的名 ...

  9. [蓝桥杯]PREV-23.历届试题_数字游戏

    问题描述 栋栋正在和同学们玩一个数字游戏. 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈.栋栋首先说出数字1.接下来,坐在栋栋左手边的同学要说下一个数字2.再下面的一个同学要从上一个同学说的数 ...

  10. 廖雪峰Java8JUnit单元测试-2使用JUnit-3参数化测试

    参数化测试: 可以把测试数据组织起来 用不同的测试数据调用相同的测试方法