用CSS创建菜单并溢出:auto

该页面的主要结构如下所示:

<html>
    <body>
        <div id="Menu">
            <h1>Menu</h1>
            <ul id="MenuList><!-- some LI elements --></ul>
            <h1>Submenu 1</h1>
            <ul id="Submenu1List"><!-- many LI elements --></ul>
            <h1>Submenu 2</h1>
            <ul id="Submenu2List"><!-- many LI elements --></ul>
            <h1>Submenu 3</h1>
            <ul id="Submenu3List"><!-- some more LI elements --></ul>
        </div>
        <div id="Main"><!-- long content --></div>
    </body>
</html>

我使用JQuery将#Menu中的H1元素设置为可点击的,以便所有其他UL都汇总起来,H1之后的UL滚动。 我想滚动#主要是#Menu,如果需要,我希望在#Menu的每个UL中都有滚动条。 这里是相关的CSS:

    html { height: 100%; overflow: hidden; font-size: .8em; }
    body { height: 100%; overflow: hidden; }
    div#Main { position: absolute; right: 0px; top: 0px; bottom: 0px; width: 79.9%; }
    div#Menu { position: absolute; left: 0px; top: 0px; bottom: 0px; width: 20%; }

    div#Main { overflow: auto; }
    div#Menu h1 { font-size: 1.5em; }
    div#Menu ul { max-height: 87%; overflow: auto; }

这完全按照我想要的方式工作。 #Main区域是可滚动的,并且每个UL展开时,如果存在比包含的#Menu DIV可包含的内容更多的内容,则获得滚动条。

唯一的问题是我必须指定包含#Menu DIV的87%的高度,它只适用于我的屏幕大小,窗口大小和字体大小的组合。 没有硬编码每个UL的高度,是否有办法达到相同的效果?

如果你喜欢,你可以看到页面。 我会发布链接到CSS(/musicdb.css)和JS代码(/musicdb.js),但我不允许。 如果您想查看源代码,可以通过将?mode = xml或?mode = html添加到URL中来切换内容类型,并在IE或Firefox中查看它。


我正在用Firebug玩你的网站页面。 除了这个之外,真的不可能有真正快捷的解决方案:

将“div#Menu”设置为100%,将“div#Menu H1”设置为百分比为5%的高度。

你有“菜单”,“艺术家”,“标签”和“格式”= 4 h1项目。 这是5 X 4 = 20%。

将“div#Menu ul”设置为100-20 = 80%。

玩数字,并调整垂直对齐,你应该很好去。 不足之处在于,您无法在极小或大屏幕上欣赏到美景。

我的2美分。

链接地址: http://www.djcxy.com/p/63023.html

上一篇: creating a menu with CSS and overflow: auto

下一篇: System.Timers.Timer gradually increasing interval?