【发布时间】:2011-03-31 01:35:11
【问题描述】:
我给自己惹了麻烦。这是我的标记:
<div class="header_wrap">
<div class="header_row0"><img src="header-940x60.gif"></div>
<table class="header_row1">
<tbody>
<tr>
<td><a href="/">Home</a></td>
<td><a id="menuTrigger" href="#">More</a>
<ul id="menuContent" class="easymenu">
<li><a href="/link1.html">Link 1</a></li>
<li><a href="/link2.html">Link 2</a></li>
</ul></td>
</tr>
</tbody>
</table>
<table class="header_row2">
<tbody>
<tr>
<td><a href="/link3.html">Link 3</a></td>
<td><a href="/link3.html">Link 4</a></td>
</tr>
</tbody>
</table>
</div>
总结一下,header_wrap 里面有三项:
- header_row0
- header_row1
- header_row2
我的目标是定位 header-940x60.gif 图像,使其在header_row1 和header_row2 后面显示为背景。但这是我不能做的:
- 我无法将 header.gif 放在背景中。图像的高度可能会有所不同,因此我必须在
<img>标记内使用 header.gif 而不指定尺寸。此外,我将来某个时候需要 SEO 的 alt 标签。 - 我不能使用
position: relative和position: absolute,因为#menuContent是position: absolute。它需要定位 w.r.t.页面,在其任何容器上使用相对定位,只会将所有内容都向上。 - 图像的高度未知,因此我不能使用负边距。
请建议在没有相对定位的情况下实现以下结果的最佳方法:
PS:在屏幕截图中,您会注意到弹出菜单未与其触发器的左侧对齐。这是主要问题。
此jsFiddle link 包含标记的皮肤缩小版本。
【问题讨论】:
-
为什么,哦,为什么,你使用表格进行布局?
-
淘汰表格在 todo 列表中(过去 15 个月一直存在:p)
-
您有一些代码的链接,或者您可以发布更多带有样式信息的实质性代码吗?正如 Kyle & Salman 指出的那样,您的桌子需要离开(它们是您问题的根源)......更多代码,我们可以为您提供更好的方法和解决方案
-
做一个JSBin的例子,我去看看。
-
“淘汰表格在待办事项列表中(过去 15 个月一直存在 :p)”表格在 15 个月前还不能用于布局。 :)
标签: html css positioning css-position