导航部分顶起部分
Posted 北漂阿猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了导航部分顶起部分相关的知识,希望对你有一定的参考价值。
1.html部分
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> * { margin: 0; padding: 0 } img { vertical-align: top; } .main { margin: 0 auto; width: 1000px; margin-top: 10px; } #Q-nav1 { overflow: hidden; } .fixed { position: fixed; top: 0; left: 0; } </style> <!--引入工具js--> <script src="my.js"></script> <script> window.onload = function () { //需求1:当我们滚动界面的时候,被卷曲的头部超过第二个盒子距离顶部的位置,那么直接给第二个盒子加类名.fixed //需求2:当我们滚动界面的时候,被卷曲的头部小于第二个盒子距离顶部的位置,那么直接给第二个盒子取消类名.fixed //步骤: //1.老三步。 //2.判断 ,被卷曲的头部的大小 //3.满足条件添加类,否则删除类 //1.老三步。 var topDiv = document.getElementById("top"); var height = topDiv.offsetHeight; var middle = document.getElementById("Q-nav1"); var main = document.getElementById("main"); window.onscroll = function () { //2.判断 ,被卷曲的头部的大小 if(scroll().top > height){ //3.满足条件添加类,否则删除类 middle.className += " fixed"; //第二个盒子不占位置了,所以我们给第三个盒子一个上padding占位置,不出现盒子抖动问题 main.style.paddingTop = middle.offsetHeight+"px"; }else{ middle.className = ""; //清零 main.style.paddingTop = 0; } } } </script> </head> <body> <div class="top" id="top"> <img src="images/top.png" alt=""/> </div> <div id="Q-nav1"> <img src="images/nav.png" alt=""/> </div> <div class="main" id="main"> <img src="images/main.png" alt=""/> </div> </body> </html>
2.JS部分
/** * Created by andy on 2015/12/8. */ function scroll() { // 开始封装自己的scrollTop if(window.pageYOffset !== undefined) { // ie9+ 高版本浏览器 // 因为 window.pageYOffset 默认的是 0 所以这里需要判断 return { left: window.pageXOffset, top: window.pageYOffset } } else if(document.compatMode === "CSS1Compat") { // 标准浏览器 来判断有没有声明DTD return { left: document.documentElement.scrollLeft, top: document.documentElement.scrollTop } } return { // 未声明 DTD left: document.body.scrollLeft, top: document.body.scrollTop } } //缓动动画封装 function animate(ele,target) { clearInterval(ele.timer); ele.timer = setInterval(function () { var step = (target-ele.offsetLeft)/10; step = step>0?Math.ceil(step):Math.floor(step); ele.style.left = ele.offsetLeft + step + "px"; console.log(1); if(Math.abs(target-ele.offsetLeft)<Math.abs(step)){ ele.style.left = target + "px"; clearInterval(ele.timer); } },18); }
以上是关于导航部分顶起部分的主要内容,如果未能解决你的问题,请参考以下文章