doe*_*eck 4 html css twitter-bootstrap
我有一个 div,里面有一张桌子。该表通过应用表类使用 bootstrap 进行样式设置。默认情况下,bootstrap 中的表格的 margin-bottom 为 20px。
我的 div 将其高度调整为表格的可见内容,但不包括表格的边距。
我想用左边框设计 div,让多个 div 彼此重叠,并带有连续边框。但由于表格的(看不见的)边距,总是存在间隙。
这是一个简化示例的小提琴: http: //jsfiddle.net/bj13hez3/2/
html:
<div>
<table class="table">
<tr>
<td>some</td>
<td>table</td>
<td>content</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</table>
</div>
<div>
<table class="table">
<tr>
<td>some</td>
<td>other</td>
<td>table</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>4</td>
<td>5</td>
<td>6</td>
</tr>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
div { border-left: 2px solid #d7d7d7; }
Run Code Online (Sandbox Code Playgroud)
如果我在 div 的所有边上放置边框,高度接缝将正确调整到表格(包括其边距)。我可以做类似的事情
div { border: 2px solid transparent;
border-left: 2px solid #d7d7d7;}
Run Code Online (Sandbox Code Playgroud)
但是,对应于顶部/底部边框的 div 之间会有一个 2px 的小间隙。因为后来我只想在悬停/鼠标悬停时显示边框,这对我来说可能是一个解决方案(2px 可能不会引起别人的注意),但它并不是很好。
我该怎么做才能使我的 div / border 具有完整内容的高度?
要包含margin
子项的 ,您需要添加overflow: hidden
。对此可能的解释如下。
此问题的几种可能的解决方案包括:
div { border: 2px solid transparent;
overflow: hidden;}
div table {display: block;}
Run Code Online (Sandbox Code Playgroud)
浏览器总是将边距与附近的边距折叠起来。当您给出 时overflow: hidden
,它会计算其盒模型内的所有内容并使其限制于内容。
抱歉我的字写得太快了……
s也是同样的情况float
。浮动的项目不占用任何空间。看看这里:
div { border: 2px solid transparent;
overflow: hidden;}
div table {display: block;}
Run Code Online (Sandbox Code Playgroud)
div {padding: 5px; border: 1px solid #666;}
Run Code Online (Sandbox Code Playgroud)
但同样的事情,如果父母有一个,overflow: hidden
它就不会发生:
<div>
<div style="float: left;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
div {padding: 5px; border: 1px solid #666;}
Run Code Online (Sandbox Code Playgroud)
关于这个概念的一整篇大文章在这里:关于折叠边距你应该知道什么。这overflow
是一个非常强大的属性,它适用于一切。不过使用的时候position
一定要慎重!
作品position
与 、 一样float
,两者都不采取布局。例如,请参阅下面的代码片段:
<div style="overflow: hidden;">
<div style="float: left;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
div {padding: 5px; border: 1px solid #666;}
Run Code Online (Sandbox Code Playgroud)
如果你以错误的方式玩它:
<div>
<div style="position: absolute;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
div {padding: 5px; border: 1px solid #666;}
Run Code Online (Sandbox Code Playgroud)
上面的内容被删减了。希望它是清楚的。