首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当窗口调整大小时居中导航栏?

当窗口调整大小时居中导航栏?
EN

Stack Overflow用户
提问于 2015-09-08 00:28:59
回答 3查看 1.4K关注 0票数 1

我的导航栏是居中的,但当窗口变小时,它只会转到下一行,而不是变小以适应窗口的大小,我不知道如何解决这个问题。它上面有下拉元素。当在移动设备上查看时,我还将考虑将其转换为垂直列表,但还远未进行媒体查询。

这是我的HTML:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
/*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;
}

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2015-09-08 00:34:41

您的菜单被指定为60%的可变宽度:

代码语言:javascript
复制
#page-navigation
{
    width: 60%;
    ...
}

这将导致条的宽度随窗口缩放,并影响其中元素的位置。要防止出现这种情况,请指定静态宽度,例如:

代码语言:javascript
复制
#page-navigation
{
    width: 1000px;
    ...
}
票数 0
EN

Stack Overflow用户

发布于 2015-09-08 00:48:48

我只插入了一行代码,我觉得现在看起来很不错:)

代码语言:javascript
复制
ul.top-menu{
   padding: 0;
}

如果您调整屏幕的大小,在导航(下一行)的前面有一个小空间,这就解决了这个问题。

也可在jsfiddle上查看该解决方案。

票数 0
EN

Stack Overflow用户

发布于 2015-09-08 21:18:37

答案:

由于HTML文档的结构方式,您不可能获得预期的效果,原因如下:

  • 您有一个无序列表直接嵌套在另一个无序列表中,该列表(1)被认为是不正确的(see this discussion);但更重要的是,虽然您的导航看起来有6个顶级项目,但实际上只有4个。因此,无论您应用什么CSS,它都不会起作用。

Recommendations:

  1. 首先通过只在顶部导航项上使用适当的类来修复您的超文本标记语言文档的结构,并正确地嵌套您的导航项。*
  2. 我建议您重组信息体系结构,以便在菜单上包含较少的导航项。例如,在你的“关于”页面中进行识别是有意义的。如果这是一个公文包类型的网站,将你的摄影,平面设计和3D建模折叠到项目中将会很好。如果你担心分离,这将发生在页面中,因为你决定保持导航结构的sub-navigation.
  3. If,建议要么将你的菜单折叠成一个精选菜单,要么在移动设备上将汉堡菜单折叠成一个汉堡包菜单,因为你的导航占用了某人的移动设备屏幕的很大一块,对你的用户来说不是一个好的体验。最重要的是,你必须考虑到用户不能在移动设备上“悬停”,而且这些下拉菜单的大小充其量也很难导航。

*解决方案: Demo

HTML (已修复):

代码语言:javascript
复制
<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 (已修复和已更新):

代码语言:javascript
复制
/*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;
}

仍然有一些次要的样式需要调整,但这应该会根据您的问题得到您想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32442870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档