有些网站的导航菜单的高度随着网页下拉变化,并且将网页恢复到顶部时,高度又恢复。效果如下图:
怎么实现这样的导航栏高度随着网页拖动变化呢?这就需要使用到 jQuery 滚动事件$(window).scroll()。下面介绍一下实现方法。
第一步:在网站导航代码底部放上以下的代码,用于监测导航菜单与滚动条的垂直位置距离,达到标注的高度后,就自动给导航菜单添加一个 class 类 head_up;
- <script>
- $(window).scroll(function () {
- var sT = $(window).scrollTop();
- if (sT >50) {
- $("#header").addClass("head_up");
- } else {
- $("#header").removeClass("head_up");
- }
- });
- </script>
第二步:然后就是给新添加的 CLASS 类添加 CSS 样式,让它控制这个新类下的菜单的高度。当然后如果有 LOGO 和下拉二级菜单时,也需要更换样式;
- /*鼠标下拉头部上缩*/
- #header.head_up,#header.head_up .logo a{height: 70px;transition: 400ms;}
- #header.head_up .logo img{max-width: 80%;head_uptransition: 400ms;}
- #header.head_up .nav_box .topnav>li>a{height: 70px;line-height: 70px;transition: 400ms;}
- #header.head_up .nav_box .topnav>li>.sub-menu{top: 70px;}
这样就可以实现下拉控制导航高度变化了。代码里 transition: 400ms 起到了渐变的效果。