你能不用表格来做这个HTML布局吗?
好的,一两周前我有一个简单的布局问题。 即一个页面的部分需要一个标题:
+---------------------------------------------------------+
| Title Button |
+---------------------------------------------------------+
很简单的东西。 事情是表仇恨似乎已经接管了网络世界,当我问及为什么使用定义列表(DL,DD,DT)标签为HTML表单而不是表格时,我提醒了这一点。 现在已经讨论过表格vs div / CSS的一般主题,例如:
所以这并不是要讨论关于CSS和表格布局的一般性讨论。 这只是解决一个问题的方法。 我尝试过使用CSS的上述各种解决方案,其中包括:
由于不同原因,这些解决方案都不令人满意。 例如,相对定位导致z-index问题,其中我的下拉菜单出现在内容下。
所以我最终回到:
<style type="text/css">
.group-header { background-color: yellow; width: 100%; }
.group-header td { padding: 8px; }
.group-title { text-align: left; font-weight: bold; }
.group-buttons { text-align: right; }
</style>
<table class="group-header">
<tr>
<td class="group-title">Title</td>
<td class="group-buttons"><input type="button" name="Button"></td>
</tr>
</table>
它完美的作品。 这很简单,因为它具有向后兼容性(即使在IE5上也可能工作),并且它正常工作。 没有搞乱定位或漂浮。
那么任何人都可以做没有表格的等价物?
要求是:
在附注中,我今天遇到了一些有趣的文章:
编辑:让我详细解释浮动问题。 这类作品:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.group-header, .group-content { width: 500px; margin: 0 auto; }
.group-header { border: 1px solid red; background: yellow; overflow: hidden; }
.group-content { border: 1px solid black; background: #DDD; }
.group-title { float: left; padding: 8px; }
.group-buttons { float: right; padding: 8px; }
</style>
</head>
<body>
<div class="group-header">
<div class="group-title">This is my title</div>
<div class="group-buttons"><input type="button" value="Collapse"></div>
</div>
<div class="group-content">
<p>And it works perfectly. It's simple, as backward compatibile as it gets (that'll work probably even on IE5) and it just works. No messing about with positioning or floats.</p>
<p>So can anyone do the equivalent without tables that is backwards compatible to at least FF2 and IE6?</p>
<p>On a side note, I came across a couple of interesting articles today:</p>
</div>
</body>
</html>
感谢Ant P的overflow: hidden
部分(尽管如此,仍然不明白)。 这就是问题出现的地方。假设我想让标题和按钮垂直居中。 这是有问题的,因为元素的高度不同。 比较这个:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.group-header, .group-content { width: 500px; margin: 0 auto; }
.group-header { border: 1px solid red; background: yellow; overflow: hidden; }
.group-content { border: 1px solid black; background: #DDD; }
.group-header td { vertical-align: middle; }
.group-title { padding: 8px; }
.group-buttons { text-align: right; }
</style>
</head>
<body>
<table class="group-header">
<tr>
<td class="group-title">This is my title</td>
<td class="group-buttons"><input type="button" value="Collapse"></td>
</tr>
</table>
<div class="group-content">
<p>And it works perfectly. It's simple, as backward compatibile as it gets (that'll work probably even on IE5) and it just works. No messing about with positioning or floats.</p>
<p>So can anyone do the equivalent without tables that is backwards compatible to at least FF2 and IE6?</p>
<p>On a side note, I came across a couple of interesting articles today:</p>
</div>
</body>
</html>
这完美地工作。
使用可用的工具快速正确地完成工作没有任何问题。
在这种情况下,桌子完美地工作。
我个人会为此使用一张桌子。
我认为应该避免嵌套表,事情可能会变得混乱。
只是左右浮动,并设置清除,你就完成了。 不需要桌子。
编辑:我知道我为此得到了很多赞扬,我相信我是对的。 但有些情况下你只需要有表格。 你可以尝试用CSS做所有事情,它可以在现代浏览器中使用,但是如果你希望支持更老的......不要重复自己,这里是相关的堆栈溢出线程和我的博客上的咆哮。
编辑2:由于旧版浏览器不再那么有趣,我正在使用Twitter引导进行新项目。 这对大多数布局需求都很好,并且使用CSS。
这是一个狡猾的问题:在你到达之前,它看起来非常简单
假设我想让标题和按钮垂直居中。
我想陈述的是,在CSS中垂直居中困难。 当人们发帖时,看起来似乎没完没了,“你能用CSS做X吗?”答案几乎总是“是”,他们的wh seems似乎是不合理的。 在这种情况下,是的,这是一件特别的事情。
有人应该将整个问题编辑为“在CSS中垂直居中问题?”。
链接地址: http://www.djcxy.com/p/2543.html上一篇: Can you do this HTML layout without using tables?
下一篇: Make a div fill the height of the remaining screen space