zoukankan      html  css  js  c++  java
  • JS固定边栏滚动

    JS固定边栏滚动

    实现关键点

    1、 CSS position fixed:作用把边栏做一个固定

      还要在设置一下位置,因为脱离文档流之后,会向左侧浮动,所以要设置相对浏览器右侧的距离。

    2、监听window上的滚动事件

    3、设置fixed条件判断的依据:滚动高度 + 屏幕高度 > 边栏高度

     

    使用jquery实现

     1 <script src="https://code.jquery.com/jquery.js"></script><!--引入这种格式的js文件是引入的外部的js文件,就是绝对引用。只是存储的位置是互联网-->
     2 
     3 <script>
     4 
     5   var jWindow = $(window);//获取window窗体
     6 
     7   jWindow.scroll(functoin) {//实现业务逻辑操作
     8 
     9     var scrollHeight = jWindow.scrollTop();
    10 
    11     var screeHeight = jWindow.height();
    12 
    13     var sideHeight = $('#J_BdSide').Height();
    14 
    15     if(scrollHeight + screeHeight > sideHeight) {
    16 
    17       $('#J_BdSide').css({
    18 
    19         'position':'fixed',
    20 
    21         'top':-(sideHeight-screenHeight),//top取负值
    22 
    23         'right':0
    24 
    25       });
    26 
    27     }else {
    28 
    29         $('#J_BdSide').css({
    30 
    31           'position':'static'
    32 
    33         });
    34 
    35       }
    36 
    37   });
    38 
    39   window.onload(function() {//刷新页面不变
    40 
    41     jWindow.trigger('scroll');//使用trigger触发scroll事件
    42 
    43   });//监听window的onload事件
    44 
    45   jWindow.resize(function(){//改变窗口大小不变
    46 
    47     jWindow.trigger('scroll');
    48 
    49   });//监听resize事件
    50 
    51 </script>

    另一种方法js

     1 <script>
     2 
     3   var $ = function(id) {
     4 
     5     return document.getElementById(id);
     6 
     7   }
     8 
     9   var addEvent = function(obj,event,fn) {//元素对象名字,绑定事件,触发的回调函数
    10 
    11    if(obj.addEventListener) {
    12 
    13      obj.addEventListener(event,fn,false);
    14 
    15    }else if(obj.attachEvent) {
    16 
    17       obj.attachEvent('on'+event,fn);
    18 
    19    }
    20 
    21   }//事件绑定元素
    22 
    23   var domSide = $('J_BdSide');
    24 
    25   var scrollEvent = function() {
    26 
    27     var sideHeight = domSider.offsetHeight;//获取边栏高度
    28 
    29     var screeHeight = document.documentElement.clientHeight || document.body.clientHeight;//获取可见屏幕高度
    30 
    31     var scrollHeight = document.documentElement.scrollTop || document.body.scrollTop;//屏幕滚动高度
    32 
    33     if(scrollHeight + screeHeight > sideHeight) {
    34 
    35       domSider.style.cssText = 'position:fixed;right:0px;top:'+(-(sideHeight-screenHeigh))+'px' ';<!--/*dom操作必须加上px和top取反*/-->
    36 
    37     }else {
    38 
    39       domSider.style.position='static',
    40 
    41     }
    42 
    43   }//scroll事件做一次封装
    44 
    45   addEvent(window,'scroll',function(){
    46 
    47     scrollEvent();
    48 
    49   });
    50 
    51   addEvent(window,'resize'function(){<!--把scroll事件做一次封装-->
    52 
    53     scrollEvent();
    54 
    55   });
    56 
    57   
    58 
    59 </script>

     HTML DOM addEventListener() 方法

    测试能不能调用函数

  • 相关阅读:
    GIS重要概念与术语——矢量数据分析
    后台获取存储过程返回的数据(转)
    java集合map,set,list区别
    安装jdk配置环境变量并测试java
    使用JAVA读写Properties属性文件
    对象(含有java.util.Date),集合等转换成json
    SSH自我理解实质
    Hibernate中createCriteria即QBC查询的详细用法
    用Java递归来求N的阶层
    java this的使用
  • 原文地址:https://www.cnblogs.com/CiMing/p/8365535.html
Copyright © 2011-2022 走看看