当您将元素显示值设置为内联或内联块时,您一般会在元素之间看到默认的空格。若是您不想要设计中的空格,能够经过多种方法将其删除。
示例代码:javascript
<ul> <li id = "first">inline</li> <li id = "last">inline-block</li> </ul>
body { margin:0; } ul { /*font-size: 40px;*/ list-style:none; margin: 0; padding:0; } ul li { display: inline-block; border: 1px solid #ccc; // 设置边框方便查询 }
更改上述代码:css
ul li + li { margin-left: -5px; }
这应该经常使用一种方式;可是这种方式会受祖先容器字体大小影响,若是字体越大其间隙越大,也就不是上述提供 -5px,就能达到删除空隙了;html
能够经过JS辅助验证,空隙是否跟字体大小有关:java
// 字体大小设置为 16px 状况下: var first = document.querySelector('#first'); var last = document.querySelector('#last'); var c1 = first.getBoundingClientRect(); var c2 = last.getBoundingClientRect(); var gapWidth = c2.left - c1.width; // gapWidth => 4.732177734375 // 因此咱们前面设置 -5px 缘由, 由于CSS不支持小数点,因此才向上取整; // 字体大小设置为 32px 状况下: var first = document.querySelector('#first'); var last = document.querySelector('#last'); var c1 = first.getBoundingClientRect(); var c2 = last.getBoundingClientRect(); var gapWidth = c2.left - c1.width; // gapWidth => 9.46435546875 // 那么咱们前面设置 -5px ,就会失效了
了解 getBoundingClientRect 使用,你们能够点击这里查看:字体
<ul> <li class = "first">inline</li><li class = "last">inline-block</li> </ul>
ul { list-style:none; margin: 0; padding:0; font-size:0; } ul li { display: inline-block; border: 1px solid #ccc; // 设置边框方便查询 font-size: 16px; }