做项目过程中发现元素设置为inline-block后,彼此之间会有间距,有时候不是我们想要的效果,这时候就需要将间距去除掉。

后来上网查了下,已有前人总结了不少好的方法。这里主要借鉴了张鑫旭博客中介绍的一些方法。我在这里总结一下。

现象:

1.如下代码:

<span>首页</span>
<span>联系我们</span>
<span>关于我们</span>
<span>新闻中心</span>
<span>网站地图</span>
span{
display:inline-block;
width:100px;
height:40px;
line-height:40px;
background-color:rgb(12,12,12);
}

这个时候几个导航之间会出现间距。有时候是不需要的。

2.如下代码:

<input type='text' placholder='搜索'>
<button>搜索</button>
input,button{
display:inline-block;
outline:none;
}

这个时候input和button之间还是会有间距,假如设计要求按钮和表单紧紧挨着,那就是不理想的。

解决方案:


1.移除空格

元素间留白间距出现的原因就是标签段之间的空格,因此,去掉HTML中的空格,自然间距就木有了。

不过这样的话,代码可读性可能比较差。

想要兼顾可读性的话,可以在标签相接处不换行,在其他位置换行。类似于:

    <span>
导航1</span><span>
导航2</span><span>
导航3</span>

不同标签有不同写法,这里可以脑洞。

2.使用margin负值,margin负值可以解决布局中很多问题。这里不多说。

至于margin负值的值具体是多少,张先生有另外一篇文章,很详细:

http://www.zhangxinxu.com/wordpress/2010/11/%E6%8B%9C%E6%8B%9C%E4%BA%86%E6%B5%AE%E5%8A%A8%E5%B8%83%E5%B1%80-%E5%9F%BA%E4%BA%8Edisplayinline-block%E7%9A%84%E5%88%97%E8%A1%A8%E5%B8%83%E5%B1%80/

3.标签不闭合。

严格意义上来讲,标签不闭合是不符合HTML5规范的。不过由于HTML是松散类型的文本标记语言,不闭合标签在浏览器中能够正确的解析。在这种场景下,不闭合标签能够实现要求,解决问题,也是一种思路。不过对于代码强迫症来讲,这是接受不了的。比如说我。

<span>导航1
<span>导航2
<span>导航3

4.使用font-size=0

前面提到,inline-block之间的空白是由于代码中的空格,而空格的大小,是受其周围元素的字号影响。所以,可以给父元素加一个属性,font-size:0;在inline-block元素上设置真实的font-size

<div class='par'>
<span>导航1</span>
<span>导航1</span>
<span>导航1</span>
</div>
.par{
font-size:;
}
.par span{
font-size:12px;
}

5.letter-spacing(字符间距)和word-spacing(单词间距)

<div class='par'>
<span>导航1</span>
<span>导航1</span>
<span>导航1</span>
</div>
.par{
letter-spacing:-3px;
}
.par span{
letter-spacing:;
}
.par{
word-spacing:-6px;
}
.par span{
word-spacing:;
}

以上是我简单总结。张鑫旭的博客中有详细介绍。

原文地址

原文标题:去除inline-block元素间间距的N种方法

原文链接:http://www.zhangxinxu.com/wordpress/2012/04/inline-block-space-remove-%E5%8E%BB%E9%99%A4%E9%97%B4%E8%B7%9D/

inline-block元素间距的更多相关文章

  1. CSS3如何去除 inline block 元素之间多出的空格

    display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的. ...

  2. 多个inline元素、block元素、inline-block元素在父容器中的换行情况

    1.首先看inine元素的换行情况 <style> *{padding:0;margin:0} div.wrap{width:200px;height:200px;border:1px s ...

  3. 当inline元素包裹block元素时会发生什么

    经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a&g ...

  4. inline元素、block元素、inline-block元素

    inline 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行,直到该行排满. block 块级元素:是可以控制宽和高.margin等,并且会换行.块级对象元素会单独占一行显示, ...

  5. block元素和inline元素的特点

    一.block元素的特点 1.处于常规流中时,如果width没有设置,会自动填充满父容器 2.可以设置height/width及margin/padding 3.处于常规流中时,布局在前后元素位置之间 ...

  6. 关于block元素和inline元素

    呃...这个会不会太基础了.最近在复习,所以基础知识也不能够忽略. 根据HTML 4.01 规范,其描述如下(http://www.w3.org/TR/html401/struct/global.ht ...

  7. inline元素、block元素

    inline元素 不会独占一行,相邻的行内元素会排列在同一行内,直到一行排不下才会换行 高.行高.以及外边距和内边距不可改变 宽度就是它的文字或图片的宽度,不可改变,随元素内容变化而变化 内联元素只能 ...

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

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

  9. inline, block, and inline-block

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

  10. 【HTML笔记】--- 内联元素间距问题及解决方案

    一.内联元素间距问题 在HTML实践中我们会发现,有时候内联元素之间会存在一定的间距,并且这间距和margin和padding无关.这是由编辑时的空白字符引起的,并且间距的大小受父元素的font-si ...

随机推荐

  1. django基础篇

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  2. jQuery基础_4

    dom对象就是jquery对象的数组组成部分jquery对象和dom对象的转化jquery对象-->dom对象$()[下标]dom对象-->jquery对象$(dom对象) jquery框 ...

  3. JavaScript函数的4种调用方法详解

    在JavaScript中,函数是一等公民,函数在JavaScript中是一个数据类型,而非像C#或其他描述性语言那样仅仅作为一个模块来使用.函数有四种调用模式,分别是:函数调用形式.方法调用形式.构造 ...

  4. powershell对txt文件的服务器进行ping操作

    powershell对txt文件的服务器进行ping操作,txt文件有几百台服务器要进行Ping操作.每行一个 #//***************************************** ...

  5. 敏捷开发与jira之燃烧图

    项目当前版本的燃烧图是下面这样的 存在的问题: 1.任务在版本起始时期之后再细化,造成了绿线一直在红线上面.解决方案:版本起始日期定为任务录入结束后的日期 2.工时录入不及时,没有实时反映当前项目组的 ...

  6. Ruby的require相关知识

    1. 在调用require xxx之前,需要确定xxx这个gem已经安装过了(使用gem install xxx,安装位置可以使用gem env列出),或者xxx是Ruby内置的标准函数库(StdLi ...

  7. Play Framework 完整实现一个APP(五)

    程序以及基本可用了,需要继续完善页面 1.创建页面模板 创建文件 app/views/tags/display.html *{ Display a post in one of these modes ...

  8. MVC PartialView

      参考 Updating an MVC Partial View with Ajax RenderPartial vs RenderAction vs Partial vs Action in MV ...

  9. 帆软报表FineReport中数据连接之Weblogic配置JNDI连接

    1. 制作报表的原理 在帆软报表FineReport设计器中先用JDBC连接到数据库,建立数据库连接,然后用SQL或者其他方法创建数据集,使用数据集制作报表,然后把建立的数据库连接从JDBC连接改成J ...

  10. 《InsideUE4》-4-GamePlay架构(三)WorldContext,GameInstance,Engine

    Tags: InsideUE4 UE4深入学习QQ群: 456247757 引言 前文提到说一个World管理多个Level,并负责它们的加载释放.那么,问题来了,一个游戏里是只有一个World吗? ...