html - 两列 html 布局,带拉伸(stretch)以适合列

标签 html css html-table

我正在寻找一个 2 列的非 table 布局,其行为类似于 table。并在 IE7 中工作

http://jsfiddle.net/YGb2y/
这可行,但它是一个表格,众所周知,表格不是布局的理想选择。如果必须的话,我会使用它,但我想找到一种语义上更合适的方式来做到这一点

table 请注意左列如何拉伸(stretch)以适应包含的内容,而右列如何占据剩余的可用空间

<table>
    <tr><td class="left">12345</td><td class="right">...</td></tr>
    <tr><td class="left">123456</td><td class="right">...</td></tr>
    <tr><td class="left">1234567</td><td class="right">...</td></tr>
    <tr><td class="left">12345678</td><td class="right">...</td></tr>
    <tr><td class="left">123456789</td><td class="right">...</td></tr>
    <tr><td class="left">1234567890</td><td class="right">...</td></tr>
</table>

table
{
    width:100%;
}
.left
{
    width:1px;
    background-color:blue;
    color:white;
}
.right
{
    background-color:gray;
}

我试图将其更改为使用 ul/li/div,但我可以设置固定宽度或百分比左列。没有 width:stretch-to-fit
http://jsfiddle.net/cj6PR/

HTML

<ul>
    <li><div class="left">12345</div><div class="right">...</div></li>
    <li><div class="left">123456</div><div class="right">...</div></li>
    <li><div class="left">1234567</div><div class="right">...</div></li>
    <li><div class="left">12345678</div><div class="right">...</div></li>
    <li><div class="left">123456789</div><div class="right">...</div></li>
    <li><div class="left">1234567890</div><div class="right">...</div></li>
</ul>

CSS

ul
{
    list-style:none;
    width:100%;
}
li
{
    clear:both;
    position:relative;
    overflow:hidden;
}
li div
{
    padding:5px;
}
.left
{
    float:left;
    width:20%;
    background-color:blue;
    color:white;
}
.right
{
    background-color:gray;
}

problems

建议?

最佳答案

这就是我最终的结果

http://jsfiddle.net/cj6PR/4/

HTML

<ul>
    <li><div class="left">12345</div><div class="right">...</div></li>
    <li><div class="left">123456</div><div class="right">...</div></li>
    <li><div class="left">1234567</div><div class="right">...</div></li>
    <li><div class="left">12345678</div><div class="right">...</div></li>
    <li><div class="left">123456789</div><div class="right">...</div></li>
    <li><div class="left">1234567890</div><div class="right">...</div></li>
</ul>

CSS

ul
{
    display:table;
    width:100%;
}
li
{
    display:table-row;
}
li div
{
    display:table-cell;
}
.left
{
    width:1px;
    background-color:blue;
    color:white;
}
.right
{
    background-color:gray;
}

JS(IE7 破解)

if ($.browser.msie && $.browser.version == 7)
{
    $("ul").wrapInner("<table />");
    $("li").wrap("<tr />");
    $("li div").wrap("<td />");
}

关于html - 两列 html 布局,带拉伸(stretch)以适合列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951700/

相关文章:

html - 减少内容为 "transform:rotated"的 TH 的宽度以避免浪费空间

javascript - 如何在表格中添加下拉列表?

html - 拥有带有粘性标题的表格的最佳方法是什么?

html - 如何在同一 div 中有另一个元素时将 Logo 与 div 边界对齐?

html - child 使用 ems 和 % 转义父 div 的问题

javascript - React onClick 没有在第一次点击时触发,第二次点击按预期运行(简单的调试消息直到第二次点击才出现)

HTML:Div 不受图像大小的影响

html - CSS忽略子元素但不忽略文本

javascript - HTML5 拖放问题

javascript - 使用jQuery获取带有子元素的div文本