inline-block 元素之间间隙清除的几种方法

两个 inline-block 元素之间会有间隙(事实上,除了 inline-block 元素,两个 inline 元素之间也是有间隙的),究其根本,其实就是 html 元素换行导致(可以尝试下,换行和元素之间加个空格,或者多个空格,结果一样,最后都是一个空格)。如何清除这个间隙呢?

方法 0 - 移除空格

我们知道,产生间隙的原因,是因为元素之间有空格(换行,tabs,多个空格等,最后的表现都是一个空格),那么理论上,去掉这个空格,就不会有间隙了。

如果 html 是在后端模板中,那么有些模板可能就自带了去除 html 元素间隙的功能,比如 PHP 模板 twig,自带 spaceless 标签,而一些 html minimize 的工具,也会去除 html 之间的空格

如果不符合上述情况,也没有关系,我们手动去除:

<!-- 方法一 -->
<div>
one</div><div>
two</div><div>
three</div>

<!-- 方法二 -->
<div>one</div
><div>two</div
><div>three</div>

<!-- 方法三 -->
<div>one</div><!--
--><div>two</div><!--
--><div>three</div>

虽然生效了,但是不太优雅,如果有多个标签,这么写 html 太累了(当然,如果 html 是模版生成的,一般会有循环方法,也还好,推荐第三种 comments 方法,可读性相对强点)

方法二 - 负值 margin

想象一下,两个元素之间有间隙,给元素加上负值的 margin,是不是就能消除间隙了?答案是肯定的,但是这个负值,到底是多少,有待商榷,因为这个间隙,和 inline-block 父元素的 font-size 大小有关,跟页面所用字体有关,可能还跟浏览器有关(这点我并未探索)

nav a {
  display: inline-block;
  margin-right: -4px;
}

所以这个方法并不好

方法三 - 父元素 font-size 设置为 0

父元素设置 font-size 为 0,然后子元素(即 inline-block)的元素再单独设置 font-size

据说安卓机器可能会有问题,可以看下最下面的前两个链接中的此法说明

方法四 - 改用 float 布局

方法五 - 改用 flex 布局

方法六 - white-space-collapsing:discard

css3 草案 white-space-collapsing:discard,详见 这里,截至目前(2018/10/21),还并未有浏览器实现



参考:

原文地址:https://www.cnblogs.com/zichi/p/9824389.html

时间: 2024-08-03 22:38:14

inline-block 元素之间间隙清除的几种方法的相关文章

关于 inline block 元素之间的空格

本篇文章由:http://xinpure.com/about-the-inline-block-element-between-spaces/ 说点什么 display: inline-block 属性很好的避免了元素的浮动问题,但是会有点小问题,就是 inline-block 元素间的回车会被显示为一个空格.然而,我们写代码时,都是用回车来格式化的... 最简单的方法就是把 inline-block 元素之间的回车删除,就是代码显示有点不美观,影响阅读. 方法总结 以下方法不保证浏览器兼容性问

主程序与子程序之间的参数传递的四种方法

主程序调用子程序是,往往需要向子程序传递一些参数,同样,子程序运行的时候也需要把一些结果参数传回给主程序,主程序与子程序之间的这种信息传递称为参数传递,我们把主程序传给子存续的参数称为子程序的入口参数,把由子程序传给主程序的参数称为子程序的出口参数 有多种传递参数的方法,寄存器传递法,约定内存单元传递法,堆栈传递法和CALL后续传递法 4.2.1利用寄存器传递参数 利用寄存器传递参数就是把参数放在约定的寄存器中,这种方法的优点是实行啊你个简单和调用方便,但是由于寄存器的个数有限,并且寄存器往往还

清除行内元素之间HTML空白的几种解决方案

行内块(inline-block)是非常有用的,特别是想要不用'block'和'float'来控制这些行内元素的margin,padding之时. 问题来了,HTML源码中行内元素之间的空白有时候显示在屏幕上那是相当的讨厌. 当然,有一些技巧(方法)可以用来清除他们:比如粗暴地完全删除空白,或者其他的方法: 解决方案1: font-size:0; 最好的方法是在外层元素上设置font-size:0;同时在内层元素上指定字体具体的大小. 复制代码 代码如下: ul.inline-block-lis

去除行内(inline/inline-block)元素之间的间距

先展示一下,行内元素之间存在间距,实例代码如下: <style> div { color: #fff; padding: 25px 50px; } .inline-f00 { display: inline; background: #f00; } .inline-0f0 { display: inline; background: #0f0; } .inline-block-00f { display: inline-block; background: #00f; } .inline-bl

CSS子元素在父元素中水平垂直居中的几种方法

1. 水平居中(margin: auto;)子父元素宽度固定,子元素上设置 margin: auto; 子元素不能设置浮动,否则居中失效. #div1{ width: 300px; height: 300px; border: 1px solid red; } #div1 p { width: 100px; height: 100px; background-color: green; /*float: left; !*如果设置了浮动,则自动居中就会失效.*!*/ margin: 0 auto;

两台Linux系统之间传输文件的几种方法

scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名@计算机IP或者计算机名称:文件名 本地路径 命令格式 scp local_file [email protected]_ip:remote_folder 或者 scp local_file [email protected]_ip:rem

去除inline-block元素之间间隙和换行产生的行于行间隙的最佳方法

方法:给inline-block元素的容器设置font-size: 0;inline-block的字体大小再另行设置即可. css代码 1 .inline-block-box{ 2 font-size: 0; 3 border: 1px solid blue; 4 box-sizing: border-box; 5 } 6 .inline-block{ 7 display: inline-block; 8 width: 300px; 9 height: 100px; 10 line-height

css清除浮动4种方法

为什么浮动这么难? 因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性. 而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了. 解决浮动引起的问题有多种方法,但有些方法在浏览器兼容性方面还有问题. 1,父级div定义 height <style type="text/css"> .div1{background:#000080;border:1px solid red;/*解决代码*/heig

jquery 将disabled的元素置为enabled的三种方法

转--http://www.jb51.net/article/19342.htm 在jquery中可以通过jqueryObj.attr("disabled","disabled")将页面中某个元素置为不可编辑或触发状态,但是在jquery的API reference中并没说明怎么将页面置为disable的元素重新置为可触发或可编辑的. 这里发现可以采用三种的变通方法将置为disabled的元素状态改为enabled. 第一种:改变disabled的boolean状态