滚动轮加载的两种js方法及模态框拖拽归总

滚动轮加载的两种方法:

公共部分css及HTML:

*{
				padding: 0px;
				margin: 0px;
			}
			div{
				width: 300px;
				height: 300px;
				overflow-y: scroll;
				padding: 10px;
				border: 10px solid red;
			}
<div class="box">
			<p>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br></p>
			<p>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br></p>
			<p>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br></p>
			<p>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br></p>
			<p>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br>我是内容<br></p>
		</div>

滚动轮加载的第一种js方法:

//获取元素
            var box = document.querySelector('.box');
            //运用监听 滚动事件
            box.addEventListener('scroll',function(){
                //此相加必须放置内部,因为每执行一次便相加
                var het=Math.ceil(box.scrollTop)+box.clientHeight;
                if(het>=box.scrollHeight){
                    //内部创建及添加指定内容
                    var p = document.createElement('p');
                    p.innerHTML = '您好';
                    box.appendChild(p);
                }
            })

         

滚动轮加载的第二种js方法:

//获取元素
            var box = document.querySelector('.box');
            //运用监听 滚动事件
            box.addEventListener('scroll', function() {
                if (box.offsetHeight + box.scrollTop > 1000) {
                    alert('已经到底');
                } else if (box.offsetHeight + box.scrollTop >= box.scrollHeight) {
                    var p = document.createElement('p');
                    p.innerHTML = '您好';
                    box.appendChild(p);
                }
            })

:以上第二个方法的首个if语句中可以不适用aler,(提示:可以给出指定的p标签设置字体或者背景颜色,不用创建p标签,当大于1000时,直接显示,已经到底了,即可),如有粉丝不明,可以关注私信我,为您解答;

效果展示区:

模态框拖拽归总 :

offset 偏移量
            offset 翻译过来就是偏移量, 我们使用 offset系列相关属性可以动态的得到该元素的位置( 偏移)、 大小等
            offset 可以得到任意样式表中的样式值
            offset 系列获得的数值是没有单位的
            offsetWidth 包含padding + border + width
            offsetWidth 等属性是只读属性, 只能获取不能赋值
            offsetLeft 返回相对于父元素左边框的距离, 动态的
            offsetTop 返回相对于父元素上方的举例

            
 offset 与 style 区别 
            offsetWidth 数值是没有单位的
            offsetWidth 包含padding+border+width
            offsetWidth 只读属性,只能获取不能赋值
            
            style.width 获得的是带有单位的字符串,只获取行内样式。
            style.width 获得不包含padding和border 的值
            style.width 是可读写属性,可以获取也可以赋值
            总结:获取元素位置用offset ,修改元素属性值用style

拖拽原理
            1:mousedown 鼠标按压获取鼠标在登录框的宽度。
            2:mousemove 鼠标移动的时获取最新的pageX减去鼠标在登录框的X距离,就是模态框的left与top值。
            3:mouseup 鼠标松开时,移除mousemove 事件
          

 client概述
            通过 client系列的相关属性可以动态的得到该元素的边框大小、元素大小等。
            clientTop  :元素上边框大小
            clientLeft  :元素左边框大小
            clientWidth:包括padding,不包括边框。
            clientHeight:包括padding,不包括边框。
            // client 宽度 和我们offsetWidth 最大的区别就是 不包含边框
            var div = document.querySelector('div');
            console.log(div.clientWidth);

scroll 概述
            我们使用 scroll 的相关属性可以动态的得到该元素的大小、滚动距离等。
            scrollTop:被滚动的上侧距离,返回数值,不带单位;
            scrollLeft:被滚动的左侧距离,返回数值,不带单位;
            scrollWidth:返回元素实际宽度,包括滚动的距离,不含边框,返回数值不带单位。
            scrollHeight:返回元素实际高度,包括滚动的距离,不含边框,不带单位。

归总:

1.offset系列 经常用于获得元素位置    offsetLeft  offsetTop 
2.client经常用于获取元素大小  clientWidth clientHeight
3.scroll 经常用于获取滚动距离 scrollTop  scrollLeft  
4.注意页面滚动的距离通过 window.pageXOffset  获得
核心原理:通过定时器 setInterval() 不断对容器进行处理。

注:以上归纳需要案例的朋友,点击关注,可以私信我哟!!!!

参数说明 listLoadingMore({id:"",id2:function(){},action:function(){},pageNum:10,getNew:undefined,funcArg:undefined,func:function(){},loadingMustTime:0,loadingDom:function(){},loadedDom:function(){},nullDataFunc:function(){},endFunc:function(){},errorFunc:function(){}}); id:滚动条id,不可以是body; id2:滚动列表的id,通过function自行根据情况返回; action:数据来源的ajax地址,插件会自动加上page和length(分别表示请求页数和当前已有记录数),返回格式统一是[{},{}...],此类jsonArray; ajaxType:ajax提交方式,将更改传递数据的方式,默认post; pageNum:每页加载数量,将会根据这个数量判断是否全部加载完成; getNew:自定义获取数据方法; funcArg:自定义获取数据时传递的参数,类型为函数,返回所需参数; childrenTag:列表子项的标签,默认LI; func:非自定义获取数据时,创建每行数据的方法; loadingMustTime:强制最小加载时间,默认0; loadingDom:加载中动画自定义,返回Dom或者HTML代码; loadedDom:完全加载完成动画自定义,返回Dom或者HTML代码; nullDataFunc:数据列表为空时执行的方法; endFunc:每页数据加载完成时执行的方法; errorFunc:ajax获取数据失败时调用的方法。 回调方法 调用本方法初始化后将会得到一个专属的方法集: Object {getNew:function,isFull:function,isRunning:function,isStop:function,loading:function,show:function}; getNew():忽略判断条件,强制执行加载操作。此时数据传递中,page值可能出错,但length值一定正确,请谨慎判断后在执行该方法; isFull(boolean):修改列表加载完成标志。true为全部加载完成,false则相反; isRunning(boolean):修改列表当前是否正在加载中标志。几乎没有使用的机会; isStop(boolean):设置是否停止加载,设置为true时将会阻止未来的所有加载操作; loading():根据当前滚动条的位置,自动判断是否需要加载新数据; show(boolean,boolean):强制设置加载中和加载完成dom的显示或隐藏,true表示显示,false相对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

共创splendid--与您携手

鼓励会让我为您创造出更优质作品

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值