背景
我有一个小的单级 CSS 弹出菜单(嗯,从技术上讲,它是一个扩展元素)。它绝对定位在一个相当窄的父绝对定位元素的左下角。请参阅下面的第二个h1
元素:
<div id="controls">
<h1>Controls 1</h1>
<h1 id="size" class="poplinks button">
Size
<a href="#" class="button selected" title="small"><img src=""></a>
<a href="#" class="button" title="medium"><img src=""></a>
<a href="#" class="button" title="large"><img src=""></a>
</h1>
</div>
这很简单地变成了一个扩展菜单/弹出窗口,如下所示:
.poplinks:hover {
width:auto;
}
.poplinks a {
display:none;
}
.poplinks:hover a {
display:inline-block;
}
问题
这会产生以下类似按钮的元素:
有h1
样式width:48px;
,并且还有一个样式规则可以在悬停时应用于width:auto;
元素h1
,所以它应该能够扩大。但是,在悬停时,当我希望它向右延伸时(超出父元素的包含框),子菜单被迫保持不超过父元素的宽度。
我想看到的(通过将元素移到父级之外获得,但我希望它保留在内部以继承样式,因此当我将菜单栏从左侧移动到顶部时,它会自动跟随):
这可能吗?你有什么建议?
在 JS Fiddle中亲自体验一下。
浏览器
注意:我计划在 Firefox、Chrome 和 IE 8 中使用此功能。我在 Firefox 和 Chrome 中进行主要样式设置,当基本完成后,将添加条件 CSS 以使 IE 正常工作并尽可能接近。
基本原理
我绝对定位父菜单的原因是我正在构建一个类似应用程序的页面来显示图像。该页面将托管在父 Windows 应用程序中,不需要大量识别信息:仅用于显示所需的图像。我选择使菜单绝对定位,而不是使用 inline-block 或浮动或其他方法来使我的菜单列就位(有两个)。但是,它不必是这种方式。如果您对替代布局或策略有建议,我会全力以赴。