Javascript實現滾動條下拉時,側邊欄固定的實現


一般博客側邊欄高度小於主體內容區時,滾動條滾動到到側邊欄底部時,側邊欄固定。

JavaScript代碼如下:

 1 $.fn.scrollFix = function (opt) {
 2     var defaults = {
 3         baseTop: 50, // 初始top值
 4         main: ".main"  // 主體區選擇器
 5     };
 6     var settings = $.extend(defaults, opt);
 7 
 8     var $window = $(window),
 9         $this = $(this),
10         windowHeight,
11         scrollTop,
12         thisHeight,
13         $main = $(settings.main),
14         mainHeight;
15     $window.scroll(function () {
16         windowHeight = $window.height();
17         scrollTop = $window.scrollTop();
18         mainHeight = $main.height();
19         $this.each(function (idx, val) {
20             thisHeight = $(this).height();
21             // 當主體區高度小於側邊欄時不做處理
22             if (mainHeight < thisHeight) {
23                 return false;
24             }
25             // 當主體區高度大於側邊欄,且下滾高度+窗口高度大於側邊欄高度時,固定側邊欄
26             if (scrollTop + windowHeight > thisHeight) {
27                 $(this).css({
28                     position: 'fixed',
29                     bottom: "50px"
30                     // top: (thisHeight - windowHeight) > 0 ? -(thisHeight - windowHeight) - 30 : settings.baseTop
31                     //  left: (idx*100) +"px"
32                     // 如果當前元素的高度大於窗口高度,則上移 當前元素高度與窗口高度的差值,
33                     // 否則緊貼窗口頂部
34                 });
35             } else {
36                 $(this).css({
37                     position: 'static'
38                 });
39             }
40         });
41     });
42 
43 }

html代碼如下:

  1 <!DOCTYPE html>
  2 <html>
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>fixedsidebar</title>
  6     <style type="text/css">
  7         * {
  8             margin: 0;
  9             padding: 0;
 10         }
 11         .container {
 12             width: 1200px;
 13             margin: 0 auto;
 14             min-height: 500px;
 15             margin-top: 50px;
 16         }
 17         .header {
 18             position: fixed;
 19             width: 100%;
 20             height: 50px;
 21             left: 0;
 22             top: 0;
 23             background-color: #123;
 24             z-index: 999
 25         }
 26         .main {
 27             width: 70%;
 28             height: 2000px;
 29             border: 1px solid gray;
 30             float: left;
 31             display: inline-block;
 32             background-image: url('006.jpg');
 33         }
 34         .side {
 35             width: 100px;
 36             height: 900px;
 37             float: left;
 38             display: inline-block;
 39             background-image: url('018.jpg');
 40         }
 41     </style>
 42 </head>
 43 <body>
 44 <div class="header"></div>
 45 <div class="container">
 46     <div class="main"></div>
 47     <div class="side">
 48          <pre>
 49             aaaa    1
 50             bbbb    2
 51             aaaa    3
 52             aaaa    4
 53             aaaa    5
 54             aaaa    6
 55             aaaa    7
 56             aaaa    8
 57             aaaa    9
 58             aaaa    10
 59             aaaa    11
 60             aaaa    12
 61             aaaa    13
 62             aaaa    14
 63             aaaa    15
 64             aaaa    16
 65             cccc    17
 66             aaaa    18
 67             aaaa    19
 68             aaaa    20
 69             aaaa    21
 70             aaaa    22
 71             aaaa    23
 72             aaaa    24
 73             aaaa    25
 74             aaaa    26
 75             aaaa    27
 76             aaaa    28
 77             aaaa    29
 78             aaaa    30
 79             aaaa    31
 80             aaaa    32
 81             aaaa    33
 82             aaaa    34
 83             aaaa    35
 84             aaaa    36
 85             aaaa    37
 86             aaaa    38
 87             aaaa    39
 88             aaaa    40
 89             aaaa    41
 90             aaaa    42
 91             aaaa    43
 92             aaaa    44
 93             aaaa    45
 94             aaaa    46
 95             aaaa    47
 96             aaaa    48
 97             aaaa    49
 98             aaaa    50
 99             aaaa    51
100             aaaa    52
101             aaaa    53
102             aaaa    54
103             aaaa    55
104             aaaa    56
105             aaaa    57
106             eeee    58
107             aaaa    59
108             aaaa    60
109             aaaa    61
110             cddd    62
111         </pre>
112     </div>
113 </div>
114 <script type="text/javascript" src="jquery.js"></script>
115 <script type="text/javascript" src="scrollFix.js"></script>
116 <script type="text/javascript">
117     $(".side").scrollFix( {
118         baseTop: 50, // 初始top值
119         main: ".main"  // 主體區選擇器
120     });
121 </script>
122 </body>
123 </html>

 


免責聲明!

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



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