首页 > 开发 > CSS > 正文

CSS3 media queries + jQuery实现响应式导航

2024-07-11 08:25:48
字体:
来源:转载
供稿:网友

目的:

实现一个响应式导航,当屏幕宽度大于700px时,效果如下:

当屏幕宽度小于700px时,导航变成一个小按钮,点击之后有一个菜单慢慢拉下来:

思路:

1.为了之后在菜单上绑定事件,并且不向DOM中添加多余的节点,在大屏幕中出现的导航和小屏幕中的下拉导航必须是一个。

   所以我选择了将导航绝对定位。

2.默认导航列表是出现的,当屏幕宽度小于700px时它隐藏,并且设置position,当屏幕宽度大于700px时,它出现。或者,默认导航列表是隐藏的,当屏幕宽度大于700px时它出现在右侧,小于时隐藏。

问题:

开始的时候,我选择了默认他出现,然后出现了一个问题——只要按过了按钮,屏幕放大之后导航列表就再也不会出现了。

代码如下:

CSS Code复制内容到剪贴板
  1. <div class="nav-box">            <ul class="nav">   
  2.           <li><a href="javascript:void(0);" class="toHome active">Home</a></li>              <li><a href="javascript:void(0);" class="toPort">Portfolio</a></li>   
  3.           <li><a href="javascript:void(0);" class="toCont">Contact</a></li>            </ul>   
  4.         <a href="javascript:void(0);" class="nav-btn">...</a>    </div>   
  5. .nav-box {        position: relative;   
  6. }    .nav-btn {   
  7.     display: none;        color: #DE6B73;   
  8.     float: rightright;        line-height: 20px;   
  9.     margin: 35px 0;    }   
  10. .nav {        display: block ;   
  11.     border-top: none;        position: absolute;   
  12.     rightright: 0;    }   
  13. @media(max-width:700px){        .nav-btn{   
  14.         display: inline-block;        }   
  15. }    @media(max-width:700px){   
  16.   .nav {        display: none;   
  17.     top: 80px;        background-color: #F79C9C;   
  18.     border-top: 1px solid #FFF;        line-height: 60px;   
  19.   }       }   
  20. window.onload=function(){        $(".nav-btn").click(function(){   
  21.         $(".nav").slideToggle(500);        });   
  22. }  
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表