Javascript 等间距居中对齐菜单
我有这样的菜单Javascript 等间距居中对齐菜单,javascript,html,css,Javascript,Html,Css,我有这样的菜单 Home About Privacy Shopping Contact Us 我想在其容器的中心显示此菜单(无论容器的宽度如何)。我可以对这些列表项应用20%的宽度,但由于文本大小不同,一些列表项之间的间距较大,而其他列表项之间的间距较小 <div id="container"> <ul> <li><a>Home</a></li> <li><a>
Home About Privacy Shopping Contact Us
我想在其容器的中心显示此菜单(无论容器的宽度如何)。我可以对这些列表项应用20%的宽度,但由于文本大小不同,一些列表项之间的间距较大,而其他列表项之间的间距较小
<div id="container">
<ul>
<li><a>Home</a></li>
<li><a>About</a></li>
<li><a>Privacy</a></li>
<li><a>Shopping</a></li>
<li><a>Contact us</a></li>
</ul>
</div>
- 家
- 关于
- 隐私权
- 购物
- 联系我们
在CSS中水平居中元素的最佳方法是给它一个特定的宽度,然后给它一个边距:auto代码>。这是一个我快速制作的例子。您可以看到ul
(蓝色边框)的宽度为300px,它位于500px容器(红色边框)的中央。您可以按自己的意愿分隔列表元素。此方法允许您使用20%的宽度并将项目置于容器的中心,同时保持每个项目的宽度相同
ul {
list-style-type: none;
width: 700px;
margin: 0 auto;
}
#container {
width: 800px;
background: #CC9;
}
li { display: block;
float: left;
width: 20%;
margin-left: -5px;
background: #399;
text-align: center;
border: solid black 1px;
color: white;
}
你可以在这里看到
我添加了一个负的左边距来补偿我添加的边框,这样你就可以更好地了解它是如何工作的。我还将ul
的宽度设置为700px。这可以是任何宽度
要在容器中心设置整个菜单,请将其添加到css中:
ul { margin: 0 auto; }
然后为容器添加一个宽度。这一切都在掌握之中。您可以将容器的宽度设置为所需的任何宽度。我的价格是800像素。非常简单
div#container {
width: 300px;
margin: auto 0;
}
div#container li {
display: inline-block;
padding: 15px;
}
您肯定需要编写一些JavaScript来实现这一点。这就是我要做的
通过使用一点jQuery,您可以获得所需的动态大小的容器。尝试使用Flex Box布局():
容器的确切宽度是多少。。?
好的,让我假设它的960px
现在给你的ul
元素width
,这样列表项就不会在第二行了。假设它现在已经花费了600px
,在这种情况下,你在中心制作菜单项的CSS将是:
.container{width:960px;}
.container ul{width:600px;margin:auto}
希望它能解决您的问题。如果您可以添加包含元素(nav
可能是最合适的),这里有一个很好的解决方案:
HTML:
预览:
如果希望每个li
元素为容器宽度的20%,只需将容器设置为width:100%
,并将每个li
元素设置为width:100%
(您还需要从li
中删除边距并添加文本对齐:居中)。
请参阅:您完全不需要javascript来实现这一点!当你调整页面的大小时,链接会相互关联。他希望列表项的大小能够动态调整为页面内的文本大小。。。否决票是完全没有必要的。我只是想在这一点上走一条重要的道路。它完全能够使用CSS。@MichaelReader,问题标签:javascript,CSS html+1顺便说一句,这里绝对不需要Javascript。这是非常简单和典型的css编码。你的问题不清楚。菜单的宽度是固定的吗?你是在问如何水平居中吗?你是在问如何均匀地分配菜单项的宽度吗?使用19%的宽度会在右侧留下25像素的多余空白(随着内容大小的增加,空白会更大)。看见最好使用20%的宽度和负边距来补偿边界,或者将边界放在锚定标记上,而不是li。请记住…我将很快添加一个优雅的降级版本(实际上逐渐增强)。+1对于有趣的发现nav ul{left:50%;}nav ul li{right:50%;}
.container{width:960px;}
.container ul{width:600px;margin:auto}
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Privacy</a></li>
<li><a href="#">Shopping</a></li>
<li><a href="#">Contact us</a></li>
</ul>
</nav>
nav { overflow: hidden; }
nav ul {
float: left;
position: relative;
left: 50%;
padding: 0;
list-style: none; }
nav ul li {
float: left;
position: relative;
right: 50%;
margin: 0 10px; }
nav ul li a {
padding: 5px;
display: block; }