我的导航栏是居中的,但当窗口变小时,它只会转到下一行,而不是变小以适应窗口的大小,我不知道如何解决这个问题。它上面有下拉元素。当在移动设备上查看时,我还将考虑将其转换为垂直列表,但还远未进行媒体查询。
这是我的HTML:
<nav id="page-navigation">
<ul>
<li><a href="index.html">Home</a></li>
<ul class="top-menu">
<li><a href="_portfolio/photography.html" onclick="return false">Photography</a>
<ul class="sub-menu">
<li><a href="_portfolio/_photography/bmc-himley-mini-show-2015.html">BMC Himley Mini Show 2015</a></li>
<li><a href="_portfolio/_photography/kinver-snow.html">Kinver Snow</a></li>
<li><a href="_portfolio/_photography/mini-runs-collection.html">"Mini Runs" Collection</a></li>
<li><a href="_portfolio/_photography/hofner-bass.html">Hofner Bass</a></li>
<li><a href="_portfolio/_photography/nature.html">Nature</a></li>
<li><a href="_portfolio/_photography/haynes-motor-museum.html">Haynes Motor Museum</a></li>
<li><a href="_portfolio/_photography/miscellaneous.html">Miscellaneous</a></li>
<li><a href="_portfolio/_photography/classic-mini.html">Classic Mini</a></li>
</ul>
</li>
<li><a href="_portfolio/graphic-design.html" onclick="return false">Graphic Design</a>
<ul class="sub-menu">
<li><a href="_portfolio/_graphic-design/story-bag-artwork.html">"Story Bag" Artwork</a></li>
<li><a href="_portfolio/_graphic-design/business-cards.html">Business Cards</a></li>
<li><a href="_portfolio/_graphic-design/logo-design.html">Logo Design</a></li>
<li><a href="_portfolio/_graphic-design/the-mexican-job.html">"The Mexican Job"</a></li>
<li><a href="_portfolio/_graphic-design/magazine-covers.html">Magazine Covers</a></li>
<li><a href="_portfolio/_graphic-design/wpap-artwork.html">WPAP Artwork</a></li>
<li><a href="_portfolio/_graphic-design/lyric-posters.html">Lyrics Posters</a></li>
</ul>
</li>
<li><a href="_portfolio/3d-modelling.html">3D Modelling</a></li>
</ul>
<li><a href="about.html">About</a></li>
<li><a href="recognition.html">Recognition</a></li>
</ul>
</nav>下面是我的CSS:
/*navigation*/
#page-navigation
{
width: 60%;
height: 53px;
margin-left: auto;
margin-right: auto;
margin-bottom: 10px;
}
#page-navigation ul li
{
color: white;
list-style: none;
background-color: darkslategray;
width: 9em;
float: left;
}
li
{
position: relative;
}
li.title
{
display: none;
}
li a
{
display: block;
color: white;
line-height: 1.3em;
padding: 1em;
text-align: center;
}
li a:link
{
text-decoration: none;
}
li a:visited
{
text-decoration: none;
color: white;
}
li a:hover, .top-menu > li:hover > a
{
background-color: rgb(48,48,48);
}
li a:active
{
background-color: dimgray;
}
ul.sub-menu
{
width: auto;
height: auto;
position: absolute;
left: -9000em;
overflow: hidden;
}
ul.sub-menu li
{
clear: left;
float: none;
margin-left: -2.5em;
z-index: 1000;
}
.top-menu li:hover ul
{
left: 0;
}
ul.sub-menu li a
{
height: auto;
border-bottom: 1px solid gray;
padding: .4em 1em;
background-color: dimgray;
padding-top: 1em;
padding-bottom: 1em;
}
ul.sub-menu li:last-child a
{
border-bottom: none;
}
ul.sub-menu li a:hover
{
background-color: darkslategray;
}
ul.sub-menu li a:active
{
background-color: gray;
}谢谢。
发布于 2015-09-08 00:34:41
您的菜单被指定为60%的可变宽度:
#page-navigation
{
width: 60%;
...
}这将导致条的宽度随窗口缩放,并影响其中元素的位置。要防止出现这种情况,请指定静态宽度,例如:
#page-navigation
{
width: 1000px;
...
}发布于 2015-09-08 00:48:48
我只插入了一行代码,我觉得现在看起来很不错:)
ul.top-menu{
padding: 0;
}如果您调整屏幕的大小,在导航(下一行)的前面有一个小空间,这就解决了这个问题。
也可在jsfiddle上查看该解决方案。
发布于 2015-09-08 21:18:37
答案:
由于HTML文档的结构方式,您不可能获得预期的效果,原因如下:
Recommendations:
*解决方案: Demo
HTML (已修复):
<nav id="page-navigation">
<ul>
<li><a href="../../index.html" title="Home">Home</a></li>
<li class="top-menu"><a href="../../_portfolio/photography.html" onclick="return false">Photography</a>
<ul class="sub-menu">
<li><a href="../../_portfolio/_photography/bmc-himley-mini-show-2015.html">BMC Himley Mini Show 2015</a></li>
<li><a href="../../_portfolio/_photography/kinver-snow.html">Kinver Snow</a></li>
<li><a href="../../_portfolio/_photography/mini-runs-collection.html">"Mini Runs" Collection</a></li>
<li><a href="../../_portfolio/_photography/hofner-bass.html">Hofner Bass</a></li>
<li><a href="../../_portfolio/_photography/nature.html">Nature</a></li>
<li><a href="../../_portfolio/_photography/haynes-motor-museum.html">Haynes Motor Museum</a></li>
<li><a href="../../_portfolio/_photography/miscellaneous.html">Miscellaneous</a></li>
<li><a href="../../_portfolio/_photography/classic-mini.html">Classic Mini</a></li>
</ul>
</li>
<li class="top-menu"><a href="../../_portfolio/graphic-design.html" onclick="return false">Graphic Design</a>
<ul class="sub-menu">
<li><a href="../../_portfolio/_graphic-design/story-bag-artwork.html">"Story Bag" Artwork</a></li>
<li><a href="../../_portfolio/_graphic-design/business-cards.html">Business Cards</a></li>
<li><a href="../../_portfolio/_graphic-design/logo-design.html">Logo Design</a></li>
<li><a href="../../_portfolio/_graphic-design/the-mexican-job.html">"The Mexican Job"</a></li>
<li><a href="../../_portfolio/_graphic-design/magazine-covers.html">Magazine Covers</a></li>
<li><a href="../../_portfolio/_graphic-design/wpap-artwork.html">WPAP Artwork</a></li>
<li><a href="../../_portfolio/_graphic-design/lyric-posters.html">Lyrics Posters</a></li>
</ul>
</li>
<li><a href="../../_portfolio/3d-modelling.html">3D Modelling</a></li>
<li><a href="../../about.html">About</a></li>
<li><a href="../../recognition.html">Recognition</a></li>
</ul>
</nav>CSS (已修复和已更新):
/*navigation*/
#page-navigation {
width: 100%;
margin-left: auto;
margin-right: auto;
margin-bottom: 10px;
}
#page-navigation ul {
text-align: center;
}
#page-navigation ul li {
color: white;
list-style: none;
background-color: darkslategray;
width: 9em;
/* float: left removes any possibility of it centering */
display: inline-block;
}
li {
position: relative;
}
li.title {
display: none;
}
li a {
display: block;
color: white;
line-height: 1.3em;
padding: 1em;
text-align: center;
}
li a:link {
text-decoration: none;
}
li a:visited {
text-decoration: none;
color: white;
}
li a:hover,
.top-menu > li:hover > a {
background-color: rgb(48, 48, 48);
}
li a:active {
background-color: dimgray;
}
ul.sub-menu {
width: auto;
height: auto;
position: absolute;
left: -9000em;
overflow: hidden;
}
ul.sub-menu li {
clear: left;
float: none;
margin-left: -2.5em;
z-index: 1000;
}
.top-menu:hover ul {
left: 0;
}
ul.sub-menu li a {
height: auto;
border-bottom: 1px solid gray;
padding: .4em 1em;
background-color: dimgray;
padding-top: 1em;
padding-bottom: 1em;
}
ul.sub-menu li:last-child a {
border-bottom: none;
}
ul.sub-menu li a:hover {
background-color: darkslategray;
}
ul.sub-menu li a:active {
background-color: gray;
}
ul.top-menu {
padding: 0;
}仍然有一些次要的样式需要调整,但这应该会根据您的问题得到您想要的。
https://stackoverflow.com/questions/32442870
复制相似问题