关于 inline block 元素之间的空格

本篇文章由:http://xinpure.com/about-the-inline-block-element-between-spaces/

说点什么

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

最简单的方法就是把 inline-block 元素之间的回车删除,就是代码显示有点不美观,影响阅读。

方法总结

以下方法不保证浏览器兼容性问题,仅在 Chrome 浏览器测试通过

HTML Code:

<h5>未处理空格</h5>
<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
</ul>

<h5>通过格式化代码来去除空格</h5>
<ul>
    <li>One</li><li>
        Two</li><li>
        Three</li>
</ul>

<h5>用空白注释代替回车</h5>
<ul>
    <li>One</li><!--
    --><li>Two</li><!--
    --><li>Three</li>
</ul>

<h5>通过忽略&lt;/li&gt; 去除空格</h5>
<ul>
    <li>One
    <li>Two
    <li>Three
</ul>

<h5>设置 margin-right: -4px 去除空格</h5>
<ul class="margin-fix">
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
</ul>

<h5>设置 font-size: 0 去除空格</h5>
<ul class="font-size-fix">
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
</ul>

<h5>设置 flex-box 去除空格</h5>
<ul class="flex-box">
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
</ul>

CSS Code:

body {
    font-family: sans-serif;
    font-size: 16px;
}

ul {
    list-style: none;
}

li {
    display: inline-block;
    background-color: #000;
    color: #fff;
    padding: 5px;
}

ul.margin-fix li {
    margin-right: -4px;
}

ul.font-size-fix {
    font-size: 0;
}

ul.font-size-fix li {
    font-size: 16px;
}

ul.flex-box {
    display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6 */
    display: -moz-box;         /* OLD - Firefox 19- (buggy but mostly works) */
    display: -ms-flexbox;      /* TWEENER - IE 10 */
    display: -webkit-flex;     /* NEW - Chrome */
    display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
}

效果图:

时间: 2024-12-27 16:03:23

关于 inline block 元素之间的空格的相关文章

去除行内(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

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

两个 inline-block 元素之间会有间隙(事实上,除了 inline-block 元素,两个 inline 元素之间也是有间隙的),究其根本,其实就是 html 元素换行导致(可以尝试下,换行和元素之间加个空格,或者多个空格,结果一样,最后都是一个空格).如何清除这个间隙呢? 方法 0 - 移除空格 我们知道,产生间隙的原因,是因为元素之间有空格(换行,tabs,多个空格等,最后的表现都是一个空格),那么理论上,去掉这个空格,就不会有间隙了. 如果 html 是在后端模板中,那么有些模板

block元素和inline元素的特点

一.block元素的特点 1.处于常规流中时,如果width没有设置,会自动填充满父容器 2.可以设置heigth/width及margin/padding 3.处于常规流中时,布局在前后元素位置之间(独占一个水平空间) 4.忽略vertical-align 二.inline元素特点 1.水平方向上根据direction依次布局 2.不会在元素前后进行换行 3.受white-space控制 4.margin/padding在垂直方向上无效,在水平方向上有效 5.width/height对非替换行

inline元素、block元素

inline元素 不会独占一行,相邻的行内元素会排列在同一行内,直到一行排不下才会换行 高.行高.以及外边距和内边距不可改变 宽度就是它的文字或图片的宽度,不可改变,随元素内容变化而变化 内联元素只能容纳文本和其他内联元素 只有水平方向margin-left.margin-right.padding-left.padding-right会产生边距效果 block元素 会独占一行,默认情况下,其宽度自动填满父级元素宽度 高度.行高.以及外边距和内边距都可控制 宽度缺省时默认容器的百分之百 可以容纳

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

经常有图片链接写法如下: <a href="www.baidu.com"><img src="baidu.jpg" /></a> 点击图片自动跳转,不用增加新的点击事件,光标滑过时变成小手等等,这都是a标签的功劳. 但是inline元素包裹block元素后,inline元素本身是否会变成blcok元素,还有待求证,于是做了如下对比: <div>这里是块元素</div> <span>用于测试(没有

inline元素、block元素、inline-block元素

inline 内联元素:是不可以控制宽和高.margin等:并且在同一行显示,不换行,直到该行排满. block 块级元素:是可以控制宽和高.margin等,并且会换行.块级对象元素会单独占一行显示,多个block元素会各自新起一行. inline-block 内联块级元素: 具有宽度高度特性,又具有同行特性(一行内显示) 常見的inline元素:span,a,strong,em等. 常見的block元素:div,p,h1到h6,form,ul,ol等. 常見的inline-block元素:im

inline,block,inline-block解析

display:block就是将元素显示为块级元素. block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, <form>, <ul> 和 <li>是块元素的例子. display:inline就是将元素显示为行内元素. inline元素的特点是:  和其他元素都在一行上: 高,行高及顶和底边距不可改变: 宽度就是它的文字或图

块元素和行内元素之间的转换,overflow与visibility

<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <title>块元素和行内元素之间的转换,overflow与visibility</title> <style> a{ width:100px; height:100px; border:1px solid #000000; background:red; di

CSS display:inline|block|inline-block差异

display:inline|block|inline-block三属性的区别和联系,block就是将元素显示为块级元素,inline就是将元素 显示为行内元素,CSS display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格. 详解CSS display:inline|block|inline-block的区别 ◆CSS display:block CSS display:block就是将元素显示为块级元素. blo