如何使这个响应式CSS导航栏的子页面全宽?

时间:2017-01-18 07:04:04

标签: html css responsive-design

在桌面视图中,这对我来说很好,但在移动视图中,我希望子菜单的宽度与父母一样。 (例如我们是谁/我们做什么链接太薄 - 我希望它们跨越整个屏幕宽度)

我不想更改桌面视图行为。

您可能需要调整小于768像素以查看问题。

https://jsfiddle.net/Lnr8t3v0/

HTML:



body {
  margin:0
}
#menuBackground {
  background:#2f3036;
  width:100%;
  height:50px;
  text-align: center;
}
#menuContainer {
  text-align: center;
}
/*Strip the ul of padding and list styling*/
ul { 
  list-style-type:none;
  margin:0;
  padding:0;
} 

/*Create a horizontal list with spacing*/
li {
  display:inline-block;
  vertical-align: top;
  margin-right:1px;
}

/*Style for menu links*/
li a {
  display:block;
  min-width:140px;
  height:50px;
  text-align:center;
  line-height:50px;
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  color:#fff;
  background:#2f3036;
  text-decoration:none;
  font-size: 1rem;
}

/*Hover state for top level links*/
li:hover a {
  background:#19c589
}

/*Style for dropdown links*/
li:hover ul a {
  background:#f3f3f3;
  color:#2f3036;
  height:40px;
  line-height:40px
}

/*Hover state for dropdown links*/
li:hover ul a:hover {
  background:#19c589;
  color:#fff
}

/*Hide dropdown links until they are needed*/
li ul {
  position: absolute;
  display:none
}

/*Make dropdown links vertical*/
li ul li {
  display:block;
}

/*Prevent text wrapping*/
li ul li a {
  width:auto;
  min-width:100px;
  padding:0 20px
}

/*Display the dropdown on hover*/
ul li a:hover + .hidden,.hidden:hover {
  display:block
}

/*Style 'show menu' label button and hide it by default*/
.show-menu {
  font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
  text-decoration:none;
  color:#fff;
  background:#19c589;
  text-align:center;
  padding:16px 0;
  display:none;
  width:100%!important
}

/*Hide checkbox*/
input[type=checkbox] {
  display:none
}

/*Show menu when invisible checkbox is checked*/
input[type=checkbox]:checked ~ #menu {
  display:block;
  margin:0 auto
}

/*Responsive Styles*/
@media screen and (max-width : 760px) {
  /*Make dropdown links appear inline*/
  ul {
    position:static;
    display:none;
    white-space: initial;
  }

  /*Create vertical spacing*/
  li {
    margin-bottom:1px
  }

  /*Make all menu links full width*/
  ul li,li a {
    width:100%
  }

  /*Display 'show menu' link*/
  .show-menu {
    display:block
  }
} 

<div id="menuBackground">
  <div id="menuContainer">
    <label for="show-menu" class="show-menu">Show Menu</label>
    <input type="checkbox" id="show-menu" role="button" />
    <ul id="menu">
      <li><a href="#">Home</a>
      </li>
      <li>
        <a href="#">About ↓</a>
        <ul class="hidden">
          <li><a href="#">Who We Are</a>
          </li>
          <li><a href="#">What We Do</a>
          </li>
        </ul>
      </li>
      <li>
        <a href="#">Portfolio ↓</a>
        <ul class="hidden">
          <li style="width: 100%;"><a href="#">Photography</a></li>
          <li><a href="#">Web & User Interface Design</a></li>
          <li><a href="#">Illustration</a></li>
        </ul>
      </li>
      <li><a href="#">News</a>
      </li>
      <li><a href="#">Contact</a>
      </li>
    </ul>
  </div>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:0)

在小屏幕中以ul为单位制作100%的宽度

@media screen and (max-width : 760px) {
    li ul{
        width:100%;
    }
}

工作小提琴:https://jsfiddle.net/Lnr8t3v0/1/

答案 1 :(得分:0)

你可以尝试这个:

body {
    margin:0
}

#menuBackground {
    background:#2f3036;
    width:100%;
    height:50px;
    text-align: center;
}
#menuContainer {
    text-align: center;
}
/*Strip the ul of padding and list styling*/
ul {
    list-style-type:none;
    margin:0;
    padding:0;
}

/*Create a horizontal list with spacing*/
li {
    display:inline-block;
        vertical-align: top;
    margin-right:1px;
}

/*Style for menu links*/
li a {
    display:block;
    min-width:140px;
    height:50px;
    text-align:center;
    line-height:50px;
    font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
    color:#fff;
    background:#2f3036;
    text-decoration:none;
    font-size: 1rem;
}

/*Hover state for top level links*/
li:hover a {
    background:#19c589
}

/*Style for dropdown links*/
li:hover ul a {
    background:#f3f3f3;
    color:#2f3036;
    height:40px;
    line-height:40px
}

/*Hover state for dropdown links*/
li:hover ul a:hover {
    background:#19c589;
    color:#fff
}

/*Hide dropdown links until they are needed*/
li ul {
    position: absolute;
    display:none
}

/*Make dropdown links vertical*/
li ul li {
    display:block;
}

/*Prevent text wrapping*/
li ul li a {
    width:auto;
    min-width:100px;
    padding:0 20px
}

/*Display the dropdown on hover*/
ul li a:hover + .hidden,.hidden:hover {
    display:block
}

/*Style 'show menu' label button and hide it by default*/
.show-menu {
    font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;
    text-decoration:none;
    color:#fff;
 background:#19c589;
    text-align:center;
    padding:16px 0;
    display:none;
    width:100%!important
}

/*Hide checkbox*/
input[type=checkbox] {
    display:none
}

/*Show menu when invisible checkbox is checked*/
input[type=checkbox]:checked ~ #menu {
    display:block;
    margin:0 auto
}

/*Responsive Styles*/
@media screen and (max-width : 760px) {
    /*Make dropdown links appear inline*/
    ul {
        position:static;
        display:none;
        white-space: initial;
    }

    /*Create vertical spacing*/
    li {
        margin-bottom:1px
    }

    /*Make all menu links full width*/
    ul li,li a {
        width:100%
    }

    /*Display 'show menu' link*/
    .show-menu {
        display:block
    }
     li ul{
        width:100%;
    }
}

Demo Here

答案 2 :(得分:0)

@media screen and (max-width : 760px) {   
    ul {
        position: static;
        display: none;
        white-space: initial;
        width: 100%;
    }
}

width:100%添加到ul,如上所述

答案 3 :(得分:0)

您必须在媒体查询https://jsfiddle.net/Lnr8t3v0/5/

中为子菜单添加一个CSS
li ul.hidden{
   width:100%;
   position:relative;
}