【问题标题】:How to achieve table layout without using tables?如何在不使用表格的情况下实现表格布局?
【发布时间】:2012-06-18 10:24:28
【问题描述】:

以进步(和学习)的名义,我如何才能从我的代码中删除表格并实现相同的布局?

例如,这是我的桌子:

<table cellspacing="0px">
    <tr>
        <td>
            <img src="http://www.poltairhomes.com/images/footerlogo.png" />
        </td>
        <td id="footertext">
            <p>Poltair Homes Plc<br />Registered Office: The Old Chapel, Greenbottom, Truro, Cornwall, TR4 8QP.<br />Registered in England & Wales: 3955425<br />www.poltairhomes.com<br />info@poltairhomes.com</p>
        </td>
        <td id="footertext">
            <p>Terms and Conditions | Privacy Policy | Sitemap</p>
        </td>
        <td id="footertext">
            <p>SIGN UP FOR OUR NEWSLETTER:</p>
            <img src="http://www.poltairhomes.com/images/signup(temp).png" />
        </td>
    </tr>
</table>

以及相关的 CSS:

.footertext {
    margin: 0;
    padding:0 5px 0 5px;
    color: #AAA;
    font-size: 10px;
    font-family:Arial, Helvetica, sans-serif;
    text-align:center;
    border-left: 1px solid #CCC;
}

http://jsfiddle.net/userdude/tYjKw/

【问题讨论】:

  • 不要像你一样重复使用id 标签。那些应该是class="footertext"
  • class="footertext"jsfiddle.net/userdude/tYjKw/1
  • 抱歉,网站上的实际情况是这样的(因此 CSS 是“.footertext”而不是“#footertext”……我在这里输入时不好……谢谢!

标签: html css html-table


【解决方案1】:

CSS:

.table {
  display: table;
}
.table-row {
  display: table-row;
}
.table-cell {
  display: table-cell;
}

HTML:

<div class="table">
  <div class="table-row">
    <div class="table-cell">Table cell 1</div>
    <div class="table-cell">Table cell 2</div>
  </div>
</div>

【讨论】:

  • 关于在不使用 -tag 的情况下获取表格的问题,这将是最好的现代解决方案。您还可以使用“vertical-align:middle”,这并不容易仅使用网格来处理,但它显示在小提琴链接中。请注意,这不适用于 IE7 及以下版本。
【解决方案2】:

创建样式为:

.footerItem { float: left; }
<div class="footerItem">
        <img src="http://www.poltairhomes.com/images/footerlogo.png" />
    </div>
    <div class="footerItem">
        <p>Poltair Homes Plc<br />Registered Office: The Old Chapel, Greenbottom, Truro, Cornwall, TR4 8QP.<br />Registered in England & Wales: 3955425<br />www.poltairhomes.com<br />info@poltairhomes.com</p>
    </div>
    <div class="footerItem">
        <p>Terms and Conditions | Privacy Policy | Sitemap</p>
    </div>   
    <div class="footerItem">
        <p>SIGN UP FOR OUR NEWSLETTER:</p><img src="http://www.poltairhomes.com/images/signup(temp).png" />
    </div>

然后使用 DIV 来创建您的主体以分隔块并将类应用于每个块:

【讨论】:

  • 谢谢 - 两个很好的例子之一! :)
  • 这是我想要的答案 - 但这里还有其他人也非常有帮助......谢谢大家!伟大的工作:)
【解决方案3】:
<div class="table">
    <div class="row">
       <div class="cell twocol">
           <span>Content1</span>
       </div>
       <div class="cell twocol">
           <span>Content2</span>
       </div>
    </div>
    <div class="row">
       <div class="cell onecol">
           <span>Content3</span>
       </div>
    </div>
</div>

还有 CSS

.table {width: 100%; height: 100%;}
.row {width: 100%; min-height: 1px; height: auto; margin: 0;}
.cell {float: left; margin: 0; padding: 0;}
.onecol {width: 100%;}
.twocol {width: 50%;}

我建议您研究一些网格系统,例如 960grid (http://960.gs/) 或 1140grid (http://cssgrid.net/),对您有很大帮助。

【讨论】:

  • 查看了 960grid 幻灯片 - 看起来很有趣...一定会进一步探索。谢谢!
  • 就我个人而言,我使用 1140px,用于更宽的屏幕,到目前为止它还没有让我失望,它很灵活,使用 @media-queries 可以简单地调整它。个人建议:得到。摆脱。的。这。表。和。这。 .
    。 :D
  • 很酷,我会看看 - 由于这个问题的一些答案,表格现在对我来说是历史!看看我在poltairhomes.com 上的页脚来源(请原谅 wordpress 造成的混乱!客户的订单!) - 我将如何摆脱
    的?

  • 是由 Wordpress 创建的?顺便说一句,我建议添加 .textwidget > .footerItem:last-child {padding: 0;},因为您的页脚有点崩溃了。
  • 没有
    是我试图让布局正确!我指的是 html 标签过于复杂 - wordpress 从 CSS 和 PHP 构建 html - 但不,
    是我的错! “分手”是什么意思?我觉得还可以吗?
猜你喜欢
  • 2011-09-28
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
相关资源
最近更新 更多