你如何编写响应式菜单?

时间:2015-04-23 14:17:39

标签: jquery html css

我试图做这个响应式菜单。

cuppcomputing

在桌面版上,它会在满足最大宽度时显示整个面板:600px(平板电脑和手机大小)。它只显示标题,然后当您单击它时,它将显示菜单内部。如果你调整浏览器的大小,你可以回到桌面版和移动版。我不想使用插件。

我确实尝试过桌面版,它确实有用。我不知道如何使其响应。当我的断点是600px并且我点击不同的.menuCol h2时它将显示并隐藏。当我的断点大于600px时(当我调整浏览器大小时),一些.menuList被隐藏。

jsFiddle



function menuToggle() {
  $('#menuBtn').click(function() {
    var menuBtn = $('#menuBtn');
    var menuInner = $('.menuInner');

    if ($(menuInner).is(':hidden')) {
      $(menuBtn).text('close');
    } else {
      $(menuBtn).text('menu');
    }

    $(menuInner).fadeToggle(200);
  });
}

menuToggle();


function menuMobile() {
  $(".menuCol h2").click(function() {

    $(".menuList").slideUp();

    if (!$(this).next().is(":visible")) {
      $(this).next().slideDown();
    }
  });

}


menuMobile();

body {
  font-size: 13px;
  margin-top: 80px;
}
a {
  text-decoration: none;
  color: #434141;
}
ul {
  list-style-type: none;
  padding: 0;
}
#toggleMenu {
  text-align: center;
  max-width: 1000px;
  margin: 0 auto;
}
#menuBtn {
  background-color: #fa7361;
  text-transform: uppercase;
  font-size: 15px;
  color: #434141;
  padding: 2px 6px;
  margin-bottom: 24px;
  display: inline-block;
}
.menuInner {
  text-align: left;
  background-color: #cce9ec;
  padding: 5%;
  overflow: hidden;
}
.menuInner .menuCol {
  margin-bottom: 0;
  width: 22.5%;
  float: left;
}
.menuInner .menuCol h2 {
  font-size: 15px;
  text-transform: uppercase;
  margin-bottom: 20px;
}
.menuInner li {
  margin-bottom: 8px;
  margin-right: 3.3%;
}
.menuInner li:last-child {
  margin-bottom: 0;
  margin-right: 0;
}
.menuList {
  display: block;
}
.menuList a:hover {
  color: #fa7361;
  border-bottom: 1px dotted #fa7361;
}
@media (max-width: 600px) {
  .menuInner .menuCol {
    float: none;
    width: 100%;
    text-align: center;
  }
  .menuInner .menuCol h2 {
    cursor: pointer;
  }
  .menuInner .menuCol h2:hover {
    display: inline-block;
    color: #fa7361;
    border-bottom: 1px dotted #fa7361;
  }
  .menuCol:last-child h2 {
    margin-bottom: 0;
  }
  .menuList {
    display: none;
  }
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<div id="toggleMenu">
  <a id="menuBtn" href="#">menu</a>
  <ul class="menuInner">
    <li class="menuCol">
      <h2>Living Room</h2>
      <ul class="menuList">
        <li><a href="#">sofas & loveseats</a>
        </li>
        <li><a href="#">chairs</a>
        </li>
        <li><a href="#">benches</a>
        </li>
        <li><a href="#">bookcases & shelving</a>
        </li>
        <li><a href="#">all living room</a>
        </li>
      </ul>
    </li>
    <li class="menuCol">
      <h2>Bedroom</h2>
      <ul class="menuList">
        <li><a href="#">beds</a>
        </li>
        <li><a href="#">mattresses</a>
        </li>
        <li><a href="#">daybeds & sleepers</a>
        </li>
        <li><a href="#">floor mirrors</a>
        </li>
        <li><a href="#">all bedroom</a>
        </li>
      </ul>
    </li>
    <li class="menuCol">
      <h2>Home Office</h2>
      <ul class="menuList">
        <li><a href="#">desks</a>
        </li>
        <li><a href="#">desk chairs</a>
        </li>
        <li><a href="#">office storage</a>
        </li>
        <li><a href="#">display ledges</a>
        </li>
        <li><a href="#">all office</a>
        </li>
      </ul>
    </li>
    <li class="menuCol">
      <h2>Dining Room</h2>
      <ul class="menuList">
        <li><a href="#">dining tables</a>
        </li>
        <li><a href="#">dining chairs</a>
        </li>
        <li><a href="#">bar & counter stools</a>
        </li>
        <li><a href="#">dining benches</a>
        </li>
        <li><a href="#">all dining</a>
        </li>
      </ul>
    </li>
  </ul>
</div>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

您需要使用媒体查询并重新构建CSS,以使其适用于手机或平板电脑。研究媒体查询。

答案 1 :(得分:0)

#toggleMenu { text-align: center; width: 1000px; margin: 0 auto; }

#menuBtn { background-color: #fa7361; text-transform: uppercase; font-size: 15px; color: #434141; padding: 2px 6px; margin-bottom: 24px; display: inline-block; }

.menuInner { text-align: left; background-color: #cce9ec; padding: 5%; overflow: hidden; }
.menuInner .menuCol { margin-bottom: 0; width: 22.5%; float: left; }
.menuInner .menuCol h2 { font-size: 15px; text-transform: uppercase; margin-bottom: 20px; }
.menuInner li { margin-bottom: 8px; margin-right: 3.3%; }
.menuInner li:last-child { margin-bottom: 0; margin-right: 0; }

.menuList { display: block; }
.menuList a:hover { color: #fa7361; border-bottom: 1px dotted #fa7361; }

@media only screen and (max-width: 800px) { #toggleMenu { width: 100%; }
  .menuInner .menuCol { float: none; width: 100%; text-align: center; }
  .menuInner .menuCol h2 { cursor: pointer; }
  .menuInner .menuCol h2:hover { display: inline-block; color: #fa7361; border-bottom: 1px dotted #fa7361; }
  .menuCol:last-child h2 { margin-bottom: 0; }
  .menuList { display: none; } }