首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS绝对响应式导航

问CSS绝对响应式导航
EN

Stack Overflow用户
提问于 2016-07-22 16:32:44
回答 1查看 54关注 0票数 0

我有一个问题,当导航链接在屏幕末尾,没有足够的空间显示时,带有.hidden类的导航UL出现在屏幕上。

下面的屏幕截图说明了当您逐渐调整浏览器大小时会发生什么,您将能够看到问题。

​

​

Code pen example

代码语言:javascript
复制
<nav>
      <label for="show-menu" class="show-menu">Show Menu</label>
      <input type="checkbox" id="show-menu" role="button" />
      <ul id="menu">
  <li>
  <a href="#">Nav Item 1 ^</a>
    <ul class="hidden">
      <li><a href="#">Nav Item 1</a></li>
      <li><a href="#">Nav Item 2</a></li>
      <li><a href="#">Nav Item 3</a></li>
    </ul>
  </li>
  <li>
    <a href="#">Nav Item 2</a>
  </li>
  <li>
    <a href="#">Nav Item 3</a>
  </li>
  <li>
    <a href="#">Nav Item 4</a>
  </li>
  <li>
    <a href="#">Nav Item 5 ^</a>
    <ul class="hidden">
      <li><a href="#">Nav Item 1</a></li>
      <li><a href="#">Nav Item 2</a></li>
      <li><a href="#">Nav Item 3</a></li>
    </ul>
  </li>
  <li>
    <a href="#">Nav Item 6</a>
  </li>
  <li>
    <a href="#">Nav Item 7</a>
  </li>
  <li>
    <a href="#">Nav Item 8 ^</a>
    <ul class="hidden">
       <li><a href="#">Nav Item 1</a></li>
       <li><a href="#">Nav Item 2</a></li>
       <li><a href="#">Nav Item 3</a></li>
    </ul>
  </li>
 </ul>
</nav>


nav ul {
   list-style-type: none;
   margin: 0;
   padding: 0;
   display: none;
}

nav li a {
   display: block;
   height: 50px;
   text-align: center;
   line-height: 50px;
   font-family: "Helvetica Neue";
   color: #fff;
   background: #A80B0D;
   text-decoration: none;
}

#show-menu {
   display: none;
}

.show-menu {
   font-family: "Helvetica Neue";
   text-decoration: none;
   color: #fff;
   background: #A80B0D;
   text-align: center;
   padding: 10px;
   display: block;
}

nav li:hover ul a:hover {
   background: #DDDDDD;
   color: #000;
}

nav li:hover a {
   background: #333333;
}

nav ul li a:hover + .hidden,nav .hidden:hover {
   display: block ;
}

nav input[type=checkbox]:checked ~ #menu {
   display: block;
}

@media (min-width: 750px) {
   .show-menu {
      display: none;
   }

   nav ul#menu {
      display: block;
      text-align: center;
   }

   nav ul#menu {
      width: 100%;
      background-color: #A80B0D;
   }

   nav ul#menu li {
      display: inline-block;
   }

   nav ul#menu ul.hidden li {
      display: block;
      min-width: 200px;
   }

   nav ul.hidden {
      position: absolute;
   }

   nav li a {
      padding-left: 10px;
      padding-right: 10px;
   }
}
EN

回答 1

Stack Overflow用户

发布于 2016-07-22 16:45:36

只需将这些行添加到您的css中:

代码语言:javascript
复制
nav ul li {
  position: relative;
}

nav ul li:last-child ul {
  right: 0;
}

结果:

​

​

​

代码语言:javascript
复制
nav ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  display: none;
}

nav li a {
  display: block;
  height: 50px;
  text-align: center;
  line-height: 50px;
  font-family: "Helvetica Neue";
  color: #fff;
  background: #A80B0D;
  text-decoration: none;
}

#show-menu {
  display: none;
}

.show-menu {
  font-family: "Helvetica Neue";
  text-decoration: none;
  color: #fff;
  background: #A80B0D;
  text-align: center;
  padding: 10px;
  display: block;
}

nav li:hover ul a:hover {
  background: #DDDDDD;
  color: #000;
}

nav li:hover a {
  background: #333333;
}

nav ul li a:hover + .hidden,
nav .hidden:hover {
  display: block;
}

nav input[type=checkbox]:checked ~ #menu {
  display: block;
}

nav ul li {
  position: relative;
}

nav ul li:last-child ul {
  right: 0;
}

@media (min-width: 750px) {
  .show-menu {
    display: none;
  }
  nav ul#menu {
    display: block;
    text-align: center;
  }
  nav ul#menu {
    width: 100%;
    background-color: #A80B0D;
  }
  nav ul#menu li {
    display: inline-block;
  }
  nav ul#menu ul.hidden li {
    display: block;
    min-width: 200px;
  }
  nav ul.hidden {
    position: absolute;
  }
  nav li a {
    padding-left: 10px;
    padding-right: 10px;
  }
}
代码语言:javascript
复制
<nav>
  <label for="show-menu" class="show-menu">Show Menu</label>
  <input type="checkbox" id="show-menu" role="button" />
  <ul id="menu">
    <li>
      <a href="#">Nav Item 1 ^</a>
      <ul class="hidden">
        <li><a href="#">Nav Item 1</a></li>
        <li><a href="#">Nav Item 2</a></li>
        <li><a href="#">Nav Item 3</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Nav Item 2</a>
    </li>
    <li>
      <a href="#">Nav Item 3</a>
    </li>
    <li>
      <a href="#">Nav Item 4</a>
    </li>
    <li>
      <a href="#">Nav Item 5 ^</a>
      <ul class="hidden">
        <li><a href="#">Nav Item 1</a></li>
        <li><a href="#">Nav Item 2</a></li>
        <li><a href="#">Nav Item 3</a></li>
      </ul>
    </li>
    <li>
      <a href="#">Nav Item 6</a>
    </li>
    <li>
      <a href="#">Nav Item 7</a>
    </li>
    <li>
      <a href="#">Nav Item 8 ^</a>
      <ul class="hidden">
        <li><a href="#">Nav Item 1</a></li>
        <li><a href="#">Nav Item 2</a></li>
        <li><a href="#">Nav Item 3</a></li>
      </ul>
    </li>
  </ul>
</nav>

​

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

https://stackoverflow.com/questions/38521763

复制
相关文章

相似问题

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