JS滚动

  JS滚动页面到某一位置时触发指定事件能够增强用户体验或是提高性能,其中使用最多的场景是加载更多,当鼠标滚动至页面下方时,自动加载下一页的内容。另一个常用的场景是当用户滚动至页面某一地方时,页面会给出提示或是将某些重要信息或按钮显示出来。实现这些效果的关键是要区分clientHeight、scrollHeight、offsetHeight属性的区别。刚好最近项目中有用到过这些概念,今天就抽空整理下关于这几个属性的区别。

1.概念

clientHeight/clientWidth

指元素可见区域的高度,内容的高度,不包括border和滚动条的高度。clientHeight与height值差不多,如果没有边框和滚动条的话,两者值相等,都是指容器的高度。火狐与IE下的值是一样的。

//获得元素的可见区域高度 不传参数表示获取浏览器窗口的可视高度
getClientHeight:function(_elem){
    if(!!_elem){
        return _elem.clientHeight;
    }else{
        return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
    }
}
            

scrollHeight/scrollWidth

指元素内容的高度。不同浏览器下计算不一样,FF显示为元素的内容高度加上边框和滚动条的高度,IE下则还要加上容器margin值。与clientHeight比起来,增加了边框和滚动条的高度。

getScrollHeight:function(_elem){
    if(_elem){
        return _elem.scrollHeight;
    }else{
        return document.documentElement.scrollHeight || document.body.scrollHeight;
    }
}

offsetHeight/offsetWidth

指元素内容的高度,加上边框和滚动条的高度,如果有设置boder和滚动条的话。

getOffsetHeight:function(_elem){
    if(_elem){
        return _elem.offsetHeight;
    }else{
        return document.documentElement.offsetHeight || document.body.offsetHeight;
    }
}

案例:

.box{padding:10px;border:10px solid #ccc;line-height:100px;}

在FF下,.box的clientHeight,scrollHeight,offsetHeight的值为120,120,140
在chrome下,.box的clientHeight,scrollHeight,offsetHeight的值为120,120,140
在IE下,.box的clientHeight,scrollHeight,offsetHeight的值为120,120,140

时间: 2024-10-23 16:04:23

JS滚动的相关文章

js滚动到指定位置导航栏固定顶部

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js滚动到指定位置导航栏固定顶部</title> <style type="text/css"> body{height: 2500px; margin: 0; padding: 0;} .banner{height: 250px; width: 100%; bac

js滚动加载

背景 移动web开发中,为了加快响应速度,通常在服务端输出首屏页面,动态异步加载listview.而对于包含大量图片的listview,一起加载将耗费大量http请求,进而影响响应速度.滚动加载这时就可以成为一种可选的优化方案. 要点 生成的img标签用一个属性存储图片地址而不是用src document.images 获取当前img标签 isInSight: 是否有元素处于当前可视区域内 window.addEventListener('scroll', lazyLoad, false); 监

JS滚动页面操作

1.scrollBy(x,y) scrollBy()方法可把内容滚动指定的像素数. x:必需.把文档向右滚动的像素数. 必需.把文档向下滚动的像素数. 例:window.scrollBy(100,100); 注意: 要使此方法工作 window 滚动条的可见属性必须设置为true! 2.scrollTo(x,y) scrollTo()方法可把内容滚动到指定的像素数. 例:window.scrollTo(10,50); 3.scrollTop,scrollend scrollTop()方法返回或设

js 滚动加载iframe框中内容

var isIE6 = !!window.ActiveXObject&&!window.XMLHttpRequest; //滚动加载 var scrollLoad =function(){ $("#content iframe[_src]").each(function(){ var t = $(this); if( t.offset().top<= $(document).scrollTop() + $(window).height() ) { t.attr(

jquery.jscrollpane.js滚动速度设置

首先找到插件里面的这个函数,改变成下面的样子: function initMousewheel() { container.unbind(mwEvent).bind( mwEvent, function (event, delta, deltaX, deltaY) { if (!horizontalDragPosition) horizontalDragPosition = 0; if (!verticalDragPosition) verticalDragPosition = 0; var d

js滚动分页原理

<!doctype html><html> <head> <!--声明当前页面的编码集:charset=gbk,gb2312(中文编码),utf-8国际编码--> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!--当前页面的三要素--> <title>javaWeb - 导航条</ti

JS 滚动效果

地址: https://github.com/aamirafridi/jQuery.Marquee <script language="JavaScript" src="{DT_STATIC}file/shangqiu/script/jquery.marquee.min.js" type="text/javascript"></script> <script type="text/javascript&qu

js滚动异步加载数据的思路

<body> <div style="width:200px; height:1000px; border:1px solid red;" id="top_div"></div> <script> window.onscroll = function(){ var t = document.documentElement.scrollTop || document.body.scrollTop; //滚动条滚动的长度

js滚动加载小插件

本文实例讲述了jquery滚动加载数据的方法.分享给大家供大家参考.具体分析如下: 少废话直接上代码!!!粗暴,直接,干脆 0//lk-2017-05-04 1(function($, win) { 2 var defaults = { 3 'container': '#container', //容器 4 'sections': '.section', //子容器 5 'searchname': '全部', //搜索名称 6 'url': '', //加载更多数据请求的路径 7 'updata