js實現導航欄的吸頂操作


  1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2 
  3 
  4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5 <html>
  6 <head>
  7 <style type="text/css">
  8     body {
  9         padding:0;
 10         margin:0;
 11     }
 12     #nav {
 13         width:100%;
 14         height:60px;
 15         background:#39f;
 16         color:#fff;
 17         line-height:60px;
 18         text-align:center;
 19         padding:0;
 20         margin:0;
 21         list-style:none;
 22     }
 23     #nav li {
 24         float:left;
 25         width:20%;
 26         height:60px;
 27     }
 28     .fix {
 29         position:fixed;
 30         top:0;
 31         left:0;
 32     }
 33 </style>
 34 </head>
 35 
 36 <div class="wrap">
 37     <h1>在線書城</h1>
 38     <p>有沒有一本書讓你仿佛遇到春風十里</p>
 39     <ul id="nav">
 40         <li>加入購物車</li>
 41         <li>加入收藏</li>
 42         <li>立即購買</li>
 43     </ul>
 44     <div class="con">
 45         <p>好書有好事有好詩</p>
 46         <p>好書有好事有好詩</p>
 47         <p>好書有好事有好詩</p>
 48         <p>好書有好事有好詩</p>
 49         <p>好書有好事有好詩</p>
 50         <p>好書有好事有好詩</p>
 51         <p>好書有好事有好詩</p>
 52         <p>好書有好事有好詩</p>
 53         <p>好書有好事有好詩</p>
 54         <p>好書有好事有好詩</p>
 55         <p>好書有好事有好詩</p>
 56         <p>好書有好事有好詩</p>
 57         <p>好書有好事有好詩</p>
 58         <p>好書有好事有好詩</p>
 59         <p>好書有好事有好詩</p>
 60         <p>好書有好事有好詩</p>
 61         <p>好書有好事有好詩</p>
 62         <p>好書有好事有好詩</p>
 63         <p>好書有好事有好詩</p>
 64         <p>好書有好事有好詩</p>
 65         <p>好書有好事有好詩</p>
 66         <p>好書有好事有好詩</p>
 67         <p>好書有好事有好詩</p>
 68         <p>好書有好事有好詩</p>
 69         <p>好書有好事有好詩</p>
 70         <p>好書有好事有好詩</p>
 71         <p>好書有好事有好詩</p>
 72     </div>
 73 </div>
 74 
 75 <script type="text/javascript">
 76 var tit = document.getElementById("nav");
 77 //alert(tit);
 78 //占位符的位置
 79 var rect = tit.getBoundingClientRect();//獲得頁面中導航條相對於瀏覽器視窗的位置
 80 var inser = document.createElement("div");
 81 tit.parentNode.replaceChild(inser,tit);
 82 inser.appendChild(tit);
 83 inser.style.height = rect.height + "px";
 84 
 85 //獲取距離頁面頂端的距離
 86 var titleTop = tit.offsetTop;
 87 //滾動事件
 88 document.onscroll = function(){
 89     //獲取當前滾動的距離
 90     var btop = document.body.scrollTop||document.documentElement.scrollTop;
 91     //如果滾動距離大於導航條據頂部的距離
 92     if(btop>titleTop){
 93         //為導航條設置fix
 94         tit.className = "clearfix fix";
 95     }else{
 96         //移除fixed
 97         tit.className = "clearfix";
 98     }
 99 }
100 </script>
101 </html>

當頁面向下滾動時超過了吸頂導航的初始位置時,需要把吸頂導航欄固定在窗口頂部,一般吸頂導航欄還可以替換成文章標題欄,搜索框、tab條等等,例如百度糯米,天貓,淘寶最為常用。它們共同點是在內容或者功能上比較重要,但又不是最重要的元素,最重要的一般會放置於頂部

1.實現思路是監聽 scroll 事件,判斷當前頁面的滾動位置,當滾動距離大於導航條距頂部的距離時,為導航條采用窗口定位。

2.與“回到頂部“的實現方法一樣,但是會發現實現吸頂功能時,到了臨界位置時,頁面會抖動一下,因為當導航條fixed出去,下部內容填補了導航條離開的位置。搶占了導航條的位置,所以抖動了一下。此處我們設置一個占位符,守住導航條的位置

 

效果如下:

JS 吸頂導航,告別“回到頂部”


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM