【发布时间】:2015-04-11 15:09:06
【问题描述】:
如何在不移除border-top/border-bottom的情况下折叠两个相邻元素的垂直边框?
例如:
<style type="text/css">
.bordered {
border:1px solid #000000;
}
</style>
...
<body>
<div class="bordered">bordered_1</div>
<div class="bordered">bordered_2</div>
</body>
我发现的一种方法是添加
margin-top:-1px;
margin-bottom:-1px;
到.bordered。但是这样如果我改变边框厚度我也必须改变边距顶部和边距底部。 另一种方式是设置:
body {
display:table;
border-collapse:collapse;
}
.bordered {
display:table-row;
border:1px solid #000000;
}
它似乎具有良好的浏览器兼容性(在 IE 9、FF、Chrome 上测试),但它是一种 hacky 类型的代码。 有没有更优雅的方式?
【问题讨论】:
-
使用 hacky 方式 做 hacky 工作 有什么问题?
-
为什么你不想删除一些边框?对我来说,它似乎比使用 display: table on body 更 hacky。
-
另一种解决方案可以是
margin-top:-1px;,带有一个js生成的值 -
什么“骇人的工作”?我问了一个关于如何解决任务的问题,我看不出有什么不寻常的地方。我不想删除边框,因为我对任何应该有边框的元素使用“.bordered”,并且这些元素可能不与另一个有边框的元素相邻。
-
负边距比表格布局 IMO 更 hacky,考虑到这种事情是表格布局 的工作原理,而您必须跳过许多圈才能迎合负面边距。如前所述,最简单的方法是仅在一侧为除一个元素之外的所有元素指定边框。