申请达人,去除赞助商链接

iOS风格的操作系统和导航方式现在越来越流行,在今天的jQuery教程中,我们将介绍如何生成一个iphone风格的菜单导航。

HTML代码

我们使用镶嵌的<li>来生成菜单内容,并且包含在<nav>标签中,如下:

  1. <nav>
  2. <h1>导航菜单</h1>
  3. <ul>
  4. <li>
  5. <h2>专题教程</h2>
  6. <ul>
  7. <li>
  8. <h3>HTML专题教程</h3>
  9. <ul>
  10. <li><a href="http://www.gbin1.com/tutorials/html5-tutorial/html5-introduction">GBin1专题之HTML5教程 - 第一篇:HTML5介绍</a></li>
  11. <li><a href="http://www.gbin1.com/tutorials/html5-tutorial/html5-new-elements">GBin1专题之HTML5教程 - 第二篇:HTML5元素</a></li>
  12. <li><a href="http://www.gbin1.com/tutorials/html5-tutorial/html5-video">GBin1专题之HTML5教程 - 第三篇:HTML5 Video元素</a></li>
  13. <li><a href="http://www.gbin1.com/tutorials/html5-tutorial/html5-video-doc">GBin1专题之HTML5教程 - 第四篇:HTML5 Video Doc</a></li>
  14. <li><a href="http://www.gbin1.com/tutorials/html5-tutorial/html5-audio">GBin1专题之HTML5教程 - 第五篇:HTML5 Audio元素</a></li>
  15. </ul>
  16. <li>
  17. <h3>GBin1热点秀</h3>
  18. <ul>
  19. <li><a href="http://www.gbin1.com/tutorials/hotspot/hotspot1/">GBin1专题之Web热点秀#1</a>
  20. <li><a href="http://www.gbin1.com/tutorials/hotspot/hotspot2/">GBin1专题之Web热点秀#2</a>
  21. <li><a href="http://www.gbin1.com/tutorials/hotspot/hotspot3/">GBin1专题之Web热点秀#3</a>
  22. </ul>
  23. </ul>
  24. 。。。 。。。
 
 

Javascript

使用jQuery来查询遍历li,并且生成菜单项目,如下:

  1. $(function(){
  2. var nav = $("nav"),
  3. navTitle = nav.children().first(),
  4. navTitleLabel = navTitle.text(),
  5. mainList = navTitle.next(),
  6. subLevels = mainList.find("ul"),
  7. hiddenClass = "hidden";
  8. nav.addClass("js");
  9. mainList.find("a:last-child").addClass("files");
  10. subLevels.addClass(hiddenClass);
  11. navTitle.wrap($("<div/>")).before($("<a/>", {
  12. href: "#",
  13. className: hiddenClass,
  14. click: function(e){
  15. var $this = $(this),
  16. activeList = subLevels.filter(":visible:last"),
  17. activeListParents = activeList.parents("ul");
  18. navTitle.text($this.text());
  19. if(activeListParents.length > 2)
  20. $this.text(activeListParents.eq(1).prev().text());
  21. else if (activeListParents.length > 1)
  22. $this.text(navTitleLabel)
  23. else
  24. $this.addClass(hiddenClass).empty();
  25. setTimeout(
  26. function(){
  27. activeList.addClass(hiddenClass);
  28. }, slideDuration - 100
  29. );
  30. mainList.css("left", parseInt(mainList.css("left")) + navWidth + "px");
  31. e.preventDefault();
  32. }
  33. }));
  34. subLevels.prev().wrap($("<a/>", {
  35. href:"#",
  36. click: function(e){
  37. var $this = $(this);
  38. backArrow.removeClass(hiddenClass).text(navTitle.text());
  39. navTitle.text($this.text());
  40. $this.next().removeClass(hiddenClass);
  41. mainList.css("left", parseInt(mainList.css("left")) - navWidth + "px");
  42. e.preventDefault();
  43. }
  44. }));
  45. var backArrow = navTitle.prev(),
  46. navWidth = nav.width(),
  47. firstSubLevel = subLevels.eq(0),
  48. docStyle = document.documentElement.style,
  49. slideDuration = 0,
  50. timingRatio = 1000;
  51. if(docStyle.WebkitTransition !== undefined)
  52. slideDuration = parseFloat(
  53. firstSubLevel.css("-webkit-transition-duration")
  54. ) * timingRatio;
  55. if(docStyle.MozTransition !== undefined)
  56. slideDuration = parseFloat(
  57. firstSubLevel.css("-moz-transition-duration")
  58. ) * timingRatio;
  59. if(docStyle.OTransition !== undefined)
  60. slideDuration = parseFloat(
  61. firstSubLevel.css("-o-transition-duration")
  62. ) * timingRatio;
  63. });
 

CSS

使用图片来生成页面顶端的按钮:

  1. body {
  2. font-size: 14px;
  3. font-family: Arial;
  4. background:#f5f5f8;
  5. }
  6. .js {
  7. position:absolute;
  8. width:320px;
  9. height:480px;
  10. top:50%;
  11. left:50%;
  12. margin:-280px 0 0 -160px;
  13. overflow:hidden;
  14. -webkit-border-radius:5px;
  15. -moz-border-radius:5px;
  16. border-radius:5px;
  17. background:#fff;
  18. -webkit-box-shadow:0 1px 2px rgba(0,0,0,.25);
  19. -moz-box-shadow:0 1px 2px rgba(0,0,0,.25);
  20. box-shadow:0 1px 2px rgba(0,0,0,.25);
  21. }
  22. .js .files {
  23. background-image:none;
  24. }
  25. .js .hidden {
  26. display:none;
  27. }
  28. .js * {
  29. font-size:14px;
  30. font-weight:400;
  31. margin:0;
  32. padding:0;
  33. list-style:none;
  34. }
  35. .js > div {
  36. position:relative;
  37. z-index:1;
  38. height:44px;
  39. text-align:center;
  40. font-size:14px;
  41. line-height:44px;
  42. color:#fff;
  43. text-shadow:0 -1px 0 rgba(0,0,0,.4);
  44. background:#7f94b0;
  45. background:-webkit-gradient(
  46. linear,
  47. 0 0,
  48. 0 100%,
  49. color-stop(0,#b5c0ce),
  50. color-stop(0.5,#889bb3),
  51. color-stop(0.51,#7f94b0),
  52. color-stop(1,#6d83a1)
  53. );
  54. background:-moz-linear-gradient(
  55. top center,
  56. #b5c0ce,
  57. #889bb3 22px,
  58. #7f94b0 23px,
  59. #6d83a1
  60. );
  61. border-bottom:1px solid #2d3033;
  62. -webkit-border-top-left-radius:5px;
  63. -webkit-border-top-right-radius:5px;
  64. -moz-border-radius-topleft:5px;
  65. -moz-border-radius-topright:5px;
  66. border-top-left-radius:5px;
  67. border-top-right-radius:5px;
  68. }
  69. .js > div a {
  70. height:31px;
  71. top:7px;
  72. left:20px;
  73. font-size:14px;
  74. line-height:31px;
  75. color:#fff;
  76. background:url('../images//center.png');
  77. }
  78. .js > div a, .js > div a:before, .js > div a:after {
  79. position:absolute;
  80. }
  81. .js > div a:before {
  82. left:-13px;
  83. content:url('../images//left.png');
  84. }
  85. .js > div a:after {
  86. right:-10px;
  87. top:0;
  88. content:url('../images//right.png');
  89. }
  90. .js > div a:active {
  91. opacity:.65;
  92. }
  93. .js a {
  94. text-decoration:none;
  95. }
  96. .js ul a {
  97. display:block;
  98. color:#000;
  99. padding:.8em 18px;
  100. border-bottom:1px solid #e0e0e0;
  101. background:url('images/next.png') no-repeat 94% 50%;
  102. }
  103. .js ul a:hover {
  104. background-color:#edf3fe;
  105. }
  106. .js a:focus {
  107. outline:none;
  108. }
  109. .js ul {
  110. position:absolute;
  111. top:0;
  112. padding-top:45px;
  113. width:100%;
  114. -webkit-transition:left .4s ease-out;
  115. -moz-transition:left .4s ease-out;
  116. -o-transition:left .4s ease-out;
  117. }
  118. .js ul {
  119. left:0;
  120. }
  121. .js ul ul {
  122. left:320px;
  123. }
 

搞定! 请参考在线演示查看效果,希望大家喜欢这个简单的效果!

 

使用jQuery开发iOS风格的页面导航菜单的更多相关文章

  1. 一款jquery编写图文下拉二级导航菜单特效

    一款jquery编写图文下拉二级导航菜单特效,效果非常简洁大气,很不错的一款jquery导航菜单特效. 这款jquery特效适用于很多的个人和门户网站. 适用浏览器:IE8.360.FireFox.C ...

  2. jQuery制作右侧边垂直二级导航菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. jQuery/CSS3类似阿里巴巴的商品导航菜单实现教程

    有两天没发表文章了,今天来说说利用jQuery和CSS3制作一款类似阿里巴巴左侧商品菜单导航,这款菜单看起来非常大气,可以展示非常多的产品类目,如果你在设计电子商务网站,不妨可以拿来参考,一下是效果图 ...

  4. UWP开发---通过委托跨页面导航

    -前言 做过.Net开发的都了解,当二级窗口操作主窗口的控件时通常用委托的方式.那么在UWP开发中,常常会遇到MainPage的二级Frame里面的内容去操作MainPage的导航跳转,具体看下图: ...

  5. WordPress主题开发:输出指定页面导航

    实例: <ul> <li class="widget widget_nav_menu"> <?php if(is_page(array(12,14,1 ...

  6. 用jQuery制作仿网易云课堂导航菜单效果

    最近做项目,用到类似的效果. 效果图如下: 直接上代码: HTML: <!DOCTYPE html> <html lang="en"> <head&g ...

  7. 20款jquery下拉导航菜单特效代码分享

    20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...

  8. 用CSS做导航菜单的4个理由

    导航结构在网站设计中是起到决定性作用的,导航菜单/栏常常通过颜色.排版.形状和一些图片来帮助网站创造更好的视觉和感受,它是网页设计的关键元素.虽然网站导航菜单的外观是网页设计中关系到整个设计成败与否的 ...

  9. PhotoSwipe - 移动开发必备的 iOS 风格相册

    PhotoSwipe 是一个专门针对移动设备的图像画廊,它的灵感来自 iOS 的图片浏览器和谷歌移动端图像. PhotoSwipe 提供您的访客熟悉和直观的界面,使他们能够与您的移动网站上的图像进行交 ...

随机推荐

  1. Kali Linux Web 渗透测试视频教程— 第八课 nessus

    Kali Linux Web 渗透测试视频教程— 第八课 nessus 文/玄魂 视频课程地址:http://edu.51cto.com/course/course_id-1887.html 目录 n ...

  2. [备忘][转]rsync使用时的常见问题

    sync使用时的常见问题: 错误1: rsync: read error: Connection reset by peer (104) rsync error: error in rsync pro ...

  3. EditPlus不能着色显示SQl语句的问题

    说明:今天重装了系统后,从网上安装下载了一个EditPlus阅读代码,发现sql语句是灰色的,不和以前的带有颜色的看着美观了,顿时心里别扭了起来.以为下错了版本,可是换了好几个,都是这样,网上查了一下 ...

  4. R 报错:package ‘***’ is not available (for R version ****) 的解决方案

    R 安装sparklyr,ggplot2等包出现如下warning package '****' is not available (for R version 3.0.2) 系统环境 ubuntu1 ...

  5. Liferay7 BPM门户开发之33: Portlet之间通信的3种方式(session、IPC Render Parameter、IPC Event、Cookies)

    文章介绍了5种方式,4种是比较常用的: Portlet session IPC Public Render Parameters IPC Event Cookies 参考地址: https://web ...

  6. Python包的相对导入时出现错误的解决方法

    在练习Python中package的相对导入时,即 from . import XXX 或者 from .. import XXX 时会遇到这样两个错误: SystemError: Parent mo ...

  7. JQ中mouseover和mouseenter的区别

    我最近也在学习JQuery,所以最近对JQ中的一些小问题进行总结,方便学习. 在对于刚开始学习JQ的初学者来说,mouseover事件和mouseenter事件总是傻傻分不清楚,毕竟刚开始学习的时候, ...

  8. Java反序列化漏洞执行命令回显实现及Exploit下载

    原文地址:http://www.freebuf.com/tools/88908.html 本文原创作者:rebeyond 文中提及的部分技术.工具可能带有一定攻击性,仅供安全学习和教学用途,禁止非法使 ...

  9. 南京都昌信息科技有限公司招聘C#程序员

    南京都昌信息科技有限公司招聘全职C#程序员 本公司核心产品为DCWriter电子病历文本编辑器,DCTimeLine时间轴软件等自研产品,现招聘全职C#程序员. 职位描述: 1.使用C#进行软件开发, ...

  10. 【由VerySky原创】由Number Range 导致凭证生成但无法保存的问题

    工厂正常生产,但某天突然发生车辆下线失败销售入库报错( MFBF凭证不能保存\ 下线车无法产生131 )的问题: ST22发现程序dump信息 分析 | SAPSQL_ARRAY_INSERT_DUP ...