javascript - 如何 : Center Horizontal Menu & SubMenu

标签 javascript jquery html css

如何水平居中导航菜单和子菜单?设置较小的导航列表“宽度”和设置“边距:0 自动”不起作用。我还希望在整个页面宽度上保持导航栏的背景色。

我的 HTML:

<div class="slide-down-page">
    <ul id="nav">
    <li id= "bio"><a class="active btn" href="home.html">Bio</a></li>
    <li id= "portfolio"><a href="portfolio.html">Portfolio</a>
        <ul>
            <li><a href="#">Writing</a>
            </li>
            <li><a href="#">Illustrations</a></li>
            <li><a href="#">Design</a></li>
        </ul> 
    </li>
    <li id= "contact"><a href="contact.html">Contact</a></li>
    </ul>
</div>

我的 CSS:

#nav{
margin: 0 ; padding: 0;
position: fixed;
width: 100%;
background:#e7e7e7;
}

#nav li {
list-style: none;
display: inline-block;
float: left;
}

#nav li a{
padding: 1em 2em;
display: inline-block;
text-decoration: none;
color: #F2583E;
font-family: 'Helvetica Neue';
font-size:1.25em;
background: #e7e7e7;
text-align: center;
margin: 0 auto;
}

#nav li a:hover{
background-color: #C1DAD6;
}

#nav a.active, #nav li:hover a.active{
background-color: #F2583E;
color: #F7F3E8;
cursor: default;
}

/*SubMenu*/
#nav li ul{
display: none;
}

#nav li:hover ul{
display: block;
position: absolute;
top: 63px;
width: 100%
left:0px;
background: #C1DAD6;
color:white;
}

#nav li:hover ul li, #nav li:hover ul li a{
display: inline-block;
float: left;
padding: 5px;
color:white;
background: #C1DAD6;
}

#nav li ul li:hover a{
color: #77bed2;
}

#nav li ul li{ 
 _display: inline-block; /* for IE5*/
 }

#nav li ul li a{
width: 150px;
}

最佳答案

如果你想用 CSS 做到这一点,方法如下:

1.删除“ float :左;”来自“#nav li”和“#nav li:hover ul li, #nav li:hover ul li a”

2.添加“文本对齐:居中;”到“#nav”

3.通过添加“;”修复“#nav li:hover ul”的“宽度:100%”在“宽度:100%”之后

4.添加“填充:0;”到“#nav li:hover ul”

所以这里是固定的CSS代码:

#nav{
margin: 0 ; padding: 0;
position: fixed;
width: 100%;
background:#e7e7e7;
text-align:center;
}

#nav li {
list-style: none;
display: inline-block;
}
#nav li a{
padding: 1em 2em;
display: inline-block;
text-decoration: none;
color: #F2583E;
font-family: 'Helvetica Neue';
font-size:1.25em;
background: #e7e7e7;
text-align: center;
margin: 0 auto;
}

#nav li a:hover{
background-color: #C1DAD6;
}

#nav a.active, #nav li:hover a.active{
background-color: #F2583E;
color: #F7F3E8;
cursor: default;
}

/*SubMenu*/
#nav li ul{
display: none;
}

#nav li:hover ul{
display: block;
position: absolute;
top: 63px;
width: 100%;
padding: 0;
left:0px;
background: #C1DAD6;
color:white;
}

#nav li:hover ul li, #nav li:hover ul li a{
display: inline-block;
padding: 5px;
color:white;
background: #C1DAD6;
}

#nav li ul li:hover a{
color: #77bed2;
}

#nav li ul li{ 
 _display: inline-block; /* for IE5*/
 }

#nav li ul li a{
width: 150px;
}

关于javascript - 如何 : Center Horizontal Menu & SubMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33248536/

相关文章:

javascript - promise 回调是否发送到事件队列?

php - 如何在 PHP 中回显 .html 文件的全部内容?

javascript - 无法使用 jQuery 均衡 anchor 高度

javascript - knockout 计算和输入验证

javascript - Rally 列出所有功能查询

javascript - 使用 Jquery 从 url 读取文本文件

javascript - 简单的 KnockoutJS 尝试 - foreach 给出无法处理绑定(bind) [属性] 未定义错误

javascript - html 中大小为 0 的下拉列表的滚动条

javascript - 我想使用 async/await 访问 API

javascript - 过滤器 + 使用同位素搜索会中断搜索吗?