显示:内联块额外保证金
我正在使用几个div
来设置display: inline-block
并有一个设置的height
和width
。 在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>
)。
我遇到了同样的问题。 是什么导致了我插入的一串空白(
)。 删除它们后,问题就解决了。