响应式下的下拉菜单

原文:Convert a Menu to a Dropdown for Small Screenscss

译文:转换菜单为下拉式来适应小屏幕html

译者:dwqs浏览器

Five Simple Steps (ps:称FSS)网站有一个优雅的响应式设计的特色,当浏览器窗口的变小时,右上角的菜单从规则的一行转换成一个下拉菜单。(PS:原文写于2011年,FSS网站的设计已经改变,具体能够参考原文的截图。)app

HTML

两种菜单的HTML代码是不一样的,由于到目前为止,你不能把<select><option>的样式设计成<a>同样的外观和行为,反之也不能。因此两者都须要设计,而你作的就是把两者的标记都写出来。FSS的作法以下:网站

<nav> 

  <ul> 
    <li><a href="/" class="active">Home</a></li> 
    <li><a href="/collections/all">Books</a></li> 
    <li><a href="/blogs/five-simple-steps-blog">Blog</a></li> 
    <li><a href="/pages/about-us">About Us</a></li> 
    <li><a href="/pages/support">Support</a></li> 
  </ul> 

  <select> 
    <option value="" selected="selected">Select</option> 

    <option value="/">Home</option> 
    <option value="/collections/all">Books</option> 
    <option value="/blogs/five-simple-steps-blog">Blog</option> 
    <option value="/pages/about-us">About Us</option> 
    <option value="/pages/support">Support</option> 
  </select> 

</nav>

继续下一步this

CSS

默认咱们利用display:none隐藏select菜单,这个很好接受。对于屏幕的阅读者,将隐藏的多余的菜单。.net

nav select{
   display:none;
}

而后利用媒体查询,针对一些特定宽度的忽然变化。你能够根据实际状况来设计(标准断点参考)设计

@media (max-width:960px){
     nav ul{display:none;}
     nav select{display:inline-block;}
 }

如今须要维护两个菜单吗?code

恩,这是一个须要担忧的问题。或许你的菜单是动态建立的而且你不能很好的控制的输出,或许你有技术处理菜单但想确保不会偶然同步出现两个菜单。能找到的一种方式是从一开始就动态建立下拉菜单。利用JQuery,很容易就能实现:htm

// Create the dropdown base
$("<select />").appendTo("nav");

// Create default option "Go to..."
$("<option />", {
   "selected": "selected",
   "value"   : "",
   "text"    : "Go to..."
}).appendTo("nav select");

// Populate dropdown with menu items
$("nav a").each(function() {
 var el = $(this);
 $("<option />", {
     "value"   : el.attr("href"),
     "text"    : el.text()
 }).appendTo("nav select");
});

而后确保下拉菜单可以运用

$("nav select").change(function() {
  window.location = $(this).find("option:selected").val();
});

下拉菜单是否是有点唐突?

有一点。小屏幕大多数是移动设备,而且他们对JavaScript的支持很友好,所以并不用太担忧。可是若是你想确保在没有JavaScript的状况下也能让它正常工做的话,能够参考个人另外一篇文章:I have an article about that.

效果演示:http://jsfiddle.net/Web_Code/j810jta8/embedded/result/

打包下载:http://download.csdn.net/detail/u011043843/8257615

译文首发:http://www.ido321.com/1348.html

相关文章
相关标签/搜索