html - 在动态水平菜单下居中静态宽度垂直子菜单

标签 html css

我已经在这里工作了几个小时。我可以找到我想要的各个组件,但我似乎无法将它们放在一起。

我遇到的问题是我无法让静态宽度子菜单以它们派生的 li 元素为中心。如果那些父 li 项具有静态宽度,这应该很容易,但我想根据页面的宽度动态更改它们的宽度。我不知道这是否在视觉上令人愉悦,但这是我想做的事情,不想让它变得静态。我会将宽度设置为 100%,但是当页面变得非常宽时它们往往看起来很笨(我选择它们为静态的原因)

我确定我还应该对 css 结构进行其他更改以使其更好,所以如果您有任何提示,请告诉我!

这是我的。

JSFiddle:http://jsfiddle.net/ede2gsc6/

HTML:

<ul id="top-menu">
    <li>ITEM1</li>
    <li>ITEM2
        <ul>
            <li>SUBITEM1</li>
            <li>SUBITEM2</li>
        </ul>
    </li>
    <li>ITEM3
        <ul >
            <li>SUBITEM1</li>
            <li>SUBITEM2</li>
            <li>SUBITEM3</li>
        </ul>
    </li>
    <li>ITEM4</li>
    <li>ITEM5
        <ul>
            <li>SUBITEM1</li>
            <li>SUBITEM2</li>
            <li>SUBITEM3</li>
            <li>SUBITEM4</li>
            <li>SUBITEM5</li>
        </ul>
    </li>
</ul>

和CSS:

body, ul {
    margin: 0;
    padding: 0;
}


#top-menu{
    float: left;
    width:100%;
    background-color: rgba(0,240,255,.5);
    border-top: 1px solid black;
    border-bottom: 1px solid black;
    text-align: center; 
    padding: 0px;   
    margin: 0px;
    min-width: 620px;
    list-style: none;   
}
        #top-menu li {
            float: left;
            position: relative;
            width: 20%;
            list-style: none;
        }
        #top-menu a:hover {
            color: #00F0FF;
        }
            #top-menu li ul {
                padding-top: 1px;       
                position: absolute;
                background: rgba(0,240,255,.5);
                border-bottom: 1px solid black;
                border-left: 1px solid black;
                border-right: 1px solid black;
                visibility: hidden;
                width: 170px;
            }
            #top-menu li:hover ul {
                visibility: visible;
                display: block;
            }   
                #top-menu li ul li {
                    float: left;
                    padding: 0px;
                    width: 100%;
                    text-align: left;
                }

最佳答案

如果你打算让它更动态一点,你也可以使用类而不是 id。

这是一个包含您需要的类的示例。 http://jsfiddle.net/54n1r96e/1/

<ul class="nav">
<li>ITEM1</li>
<li>ITEM2
    <ul class="dropdown">
        <li>SUBITEM1</li>
        <li>SUBITEM2</li>
    </ul>
</li>
<li>ITEM3
    <ul class="dropdown">
        <li>SUBITEM1</li>
        <li>SUBITEM2</li>
    </ul>
</li>
<li>ITEM4</li>
<li>ITEM5
    <ul class="dropdown">
        <li>SUBITEM1</li>
        <li>SUBITEM2</li>
    </ul>
</li>

关于html - 在动态水平菜单下居中静态宽度垂直子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26748569/

相关文章:

jQuery 动画。如何在自动设置顶部和左侧

html - 如何使可选择的文本与显示的不同

javascript - 通过选项下拉 Javascript 更改字体

php - 从页面上的mysql中清除所有显示的记录

css - 使用 CSS 忽略 <br>?

javascript - 在鼠标悬停时删除另一个 DOM 对象中第 n 个元素的类

css - 无论 z-index 值如何,元素 A 始终在元素 B 下

html - 如何通过使用键盘在表单中导航来用边框替换轮廓?

html - 文本不适合方框。 CSS 问题

javascript - 没有页眉和页脚的谷歌电子表格