我正试图推出一个类似于表格的布局,左边出现药物名称,数据占据了表格的其余部分.简单的说: +-------------+------------+medicine 1 | some data | some data | +-------------+------------+medicine 2 | some da
+-------------+------------+ medicine 1 | some data | some data | +-------------+------------+ medicine 2 | some data | some data | +-------------+------------+
由于我想保持数据网格动态,我使用两个< div>的样式显示:table-cell作为两个容器,左边一个用于所有药物名称,右边一个用于数据网格.这两个table-cell< div>里面有几个内部< div>,但是当我使用Chrome检查界面调查它时,我不确定为什么左边有一个大的填充区域(请看下图):
我不太确定哪个部分出了问题,而且检查界面没有给我相关信息.我想学习如何处理这种情况.以下是供您参考的html代码:
<div style="display:table"> <div style="display:table-row"> <div style="display:table-cell"> <div style="height:85px; width:170px; text-align:right; font-size:13px; margin-right:5px"> Dexedrine Spansules (Dextroamphetamine, ER) <br/><span style="font-style:italic">(20mg)</span> </div> <div style="height:85px; width:170px; text-align:right; font-size:13px; margin-right:5px"> Methamphetamine (Desoxyn, IR) <br/><span style="font-style:italic">(15mg)</span> </div> </div> <div style="display:table-cell; overflow:hidden; max-width:800px"> <div id="medicine_table_container_2" class="medicine-table-container" style="position:relative; left:0"> <div style="white-space:nowrap; font-size:0px"> <div style="display:inline-block; background-color:yellow; width:130px; height:85px; border:1px solid #999; font-size: 12px; white-space:normal"> <div> <div style="display:inline-block; width:70px; height:45px"> Morning<br/>- </div> <div style="display:inline-block; width:50px; height:45px"> Noon<br/>5mg </div> </div> <div> <div style="display:inline-block; width:70px; height:35px"> Afternoon<br/>12mg </div> <div style="display:inline-block; width:50px; height:35px"> Evening<br/>- </div> </div> </div> </div> <div style="white-space:nowrap; font-size:0px"> <div style="display:inline-block; background-color:yellow; width:130px; height:85px; border:1px solid #999; font-size: 12px; white-space:normal"> <div> <div style="display:inline-block; width:70px; height:45px"> Morning<br/>- </div> <div style="display:inline-block; width:50px; height:45px"> Noon<br/>5mg </div> </div> <div> <div style="display:inline-block; width:70px; height:35px"> Afternoon<br/>12mg </div> <div style="display:inline-block; width:50px; height:35px"> Evening<br/>- </div> </div> </div> </div> </div> </div> </div> </div>这是关于垂直对齐.默认值设置为baseline并生成此输出.只需将对齐方式更改为表格单元格的顶部,您就不会遇到此问题:
<div style="display:table"> <div style="display:table-row"> <div style="display:table-cell; vertical-align: top;"> <div style="height:85px; width:170px; text-align:right; font-size:13px; margin-right:5px"> Dexedrine Spansules (Dextroamphetamine, ER) <br/><span style="font-style:italic">(20mg)</span> </div> <div style="height:85px; width:170px; text-align:right; font-size:13px; margin-right:5px"> Methamphetamine (Desoxyn, IR) <br/><span style="font-style:italic">(15mg)</span> </div> </div> <div style="display:table-cell; vertical-align: top; overflow:hidden; max-width:800px"> <div id="medicine_table_container_2" class="medicine-table-container" style="position:relative; left:0"> <div style="white-space:nowrap; font-size:0px"> <div style="display:inline-block; background-color:yellow; width:130px; height:85px; border:1px solid #999; font-size: 12px; white-space:normal"> <div> <div style="display:inline-block; width:70px; height:45px"> Morning<br/>- </div> <div style="display:inline-block; width:50px; height:45px"> Noon<br/>5mg </div> </div> <div> <div style="display:inline-block; width:70px; height:35px"> Afternoon<br/>12mg </div> <div style="display:inline-block; width:50px; height:35px"> Evening<br/>- </div> </div> </div> </div> <div style="white-space:nowrap; font-size:0px"> <div style="display:inline-block; background-color:yellow; width:130px; height:85px; border:1px solid #999; font-size: 12px; white-space:normal"> <div> <div style="display:inline-block; width:70px; height:45px"> Morning<br/>- </div> <div style="display:inline-block; width:50px; height:45px"> Noon<br/>5mg </div> </div> <div> <div style="display:inline-block; width:70px; height:35px"> Afternoon<br/>12mg </div> <div style="display:inline-block; width:50px; height:35px"> Evening<br/>- </div> </div> </div> </div> </div> </div> </div> </div>
由于您的代码有点复杂,因此这是一个重现问题并更好地了解正在发生的事情的基本代码:
.table { display: table; border: 1px solid; margin: 5px; } .table>div { display: table-row; } .table>div>span { display: table-cell; padding: 0 5px; } .table>div>span span { display: inline-block; }
baseline <div class="table"> <div> <span>one line</span> <span><span>two <br> line (inline-block)</span></span> </div> </div> baseline <div class="table"> <div> <span>two<br> line</span> <span><span>two <br> line (inline-block)</span></span> </div> </div> baseline (with overflow:hidden) <div class="table"> <div> <span>one line</span> <span><span style="overflow:hidden;">two <br> line</span></span> </div> </div> baseline (with overflow:hidden) <div class="table"> <div> <span>one line</span> <span><span style="overflow:hidden;">another line</span></span> </div> </div> top will fix all the cases <div class="table"> <div> <span style="vertical-align:top;">one line</span> <span><span>two <br> line</span></span> </div> </div> <div class="table"> <div> <span style="vertical-align:top;">one line</span> <span><span style="overflow:hidden;">two <br> line</span></span> </div> </div> <div class="table"> <div> <span style="vertical-align:top;">one line</span> <span><span style="overflow:hidden;">another line</span></span> </div> </div> <div class="table"> <div> <span style="vertical-align:top;">two<br> line</span> <span><span>two <br> line (inline-block)</span></span> </div> </div>
您可以清楚地看到如何使用内联块(和溢出:隐藏)是罪魁祸首,因为它使基线计数器的计算直观且意外.