显示:内联块额外保证金

我正在使用几个div来设置display: inline-block并有一个设置的heightwidth 。 在HTML中,如果在每个div之后出现换行符,则会在div的右侧和底部添加一个自动5px页边距。

例:

 <div>Some Text</div> <div>Some Text</div> 

是否有一个我忽略的属性,可以让我重置自动保证金?

更新

从我发现没有办法删除保证金…除非你有一切都在同一行或添加注释来注释掉换行符。 例:

 <div>Some Text</div><!-- --><div>Some Text</div> 

不是最好的解决scheme,但如果您有多条线路,则仍然更容易阅读。

div被视为内联元素。 正如两个跨度之间的空间或分界线会造成间隙,它在内联块之间进行。 您可以给他们一个负边距或设置word-spacing: -1; 在周围的容器上。

空白会影响内联元素

这不应该是一个惊喜。 我们每天都会用跨度,强壮和其他内联元素来看它。 将字体大小设置为零以删除额外的边距。

 .container { font-size: 0px; letter-spacing: 0px; word-spacing: 0px; } .container > div { display: inline-block; margin: 0px; padding: 0px; font-size: 15px; letter-spacing: 1em; word-spacing: 2em; } 

这个例子看起来像这样。

 <div class="container"> <div>First</div> <div>Second</div> </div> 

这是一个jsfiddle版本。 http://jsfiddle.net/QtDGJ/1/

一年后,偶然发现了一个内联LI问题,但是find了一个很好的解决scheme,可以在这里应用。

http://robertnyman.com/2010/02/24/css-display-inline-block-why-it-rocks-and-why-it-sucks/

我所有的LI元素的vertical-align:bottom在所有浏览器中修复了我的“额外的边距”问题。

font-size: 0父容器

(来源: https : //twitter.com/garand/status/183253526313566208 )

更清洁的方式来删除这些空间是通过使用float: left;

DEMO

HTML:

 <div>Some Text</div> <div>Some Text</div> 

CSS:

 div { background-color: red; float: left; } 

我不支持所有新的浏览器 。 从来没有得到它为什么当IE统治了很多的开发人员没有起诉他们的网站在firefox / chrome上运行良好,但今天,当IE浏览器下降到14.3% 。 反正,在IE-9没有很多问题,甚至认为它不被支持,例如上面的演示工作正常。

即使您的内联块元素之间没有任何WHITESPACE,也可以获得垂直空间。

对我来说,这是由line-height造成的。 简单的解决方法是:

 div.container { line-height: 0; } div.container > * { line-height: normal; } 

为了logging,这个保证金和填充重置对我来说并没有什么窍门,但是从上面的评论中引用这个引用是至关​​重要的,并且为我解决了这个问题:“如果我把div放在同一行上,边际消失“。

这个问题有很多解决方法涉及字间距或字体大小,但是本文build议用-4px的右边距去除边距;

http://designshack.net/articles/css/whats-the-deal-with-display-inline-block/

你可以发布一个链接到有问题的HTML?

最终你应该能够做到:

 div { margin:0; padding: 0; } 

去除间距。 这只是在一个特定的浏览器或全部?

在这个问题上挣扎了很多次之后,我在HTML 5中发现了一个非常优雅的解决scheme。在HTML 5中,不应该closures几个(li,p等)标签。 成为XML的雄心永远消失了。 例如,做清单的首选方法是:

 <ul> <li> <a ...>...</a> <li> <a ...>...</a> </ul> 

浏览器必须closuresLI,他们必须这样做,而不会引入空白,解决这个问题。 如果你仍然有XML的思维方式,那就感觉错了,但是一旦你克服了,就会节省许多的噩梦。 这不是黑客,因为它依赖于HTML 5规范的措辞。 更好,因为不closures标签是普遍的我期望没有兼容性问题(虽然没有testing)。 奖金是HTML格式化器处理这个好。

有点成功的例子: http : //cssdesk.com/Ls7fK

另一个解决scheme是使用HTML minifier。 这在Grunt构build过程中效果最好,在这个过程中,HTML可以在运行中缩小。

额外的换行符和空格被删除,这可以很好地解决页边空白问题,并且可以让你在IDE中编辑标记(no </li><li> )。

我遇到了同样的问题。 是什么导致了我插入的一串空白( &nbsp; )。 删除它们后,问题就解决了。