height / clientHeight / offsetHeight / scrollTop

height:指元素内容的高度 ,jQuery中的height()方法返回的就是这个高度。
clientHeight:内容高度+padding高度 ,jQuery中的innerHeight()方法返回的就是这个高度。
offsetHeight:内容高度+padding高度+边框宽度 ,jQuery中的outerHeight()方法返回的就是这个高度。
offsetLeft:如果父辈元素中有定位的元素,那么就返回距离当前元素最近的定位元素边缘的距离。
如果父辈元素中没有定位元素,那么就返回相对于body左边缘距离

scrollTop :元素里面内容滚出的距离
  //onscroll滚动事件
    demo.onscroll = function () {
        console.log(demo.scrollTop);
    };
封装方法页面滚出的距离
 function scroll() {
        return {
            top: window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0,
            left: window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0
        };
    }
  window.onscroll = function () {
        //console.log(scroll().top);//输出页面被卷去的高度
        console.log(scroll().top);
    };

封装方法页面可视区域的大小
 function client() {
        return {
            width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0,
            height: window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0
        };
    }
  //窗体大小发生改变的事件 onresize
    window.onresize = function () {
        var clientWidth = client().width;
        console.log(clientWidth);
    };
封装缓动动画
   //让 任意对象 的 任意属性 变为任意的目标值
    function animate(obj, json, fn) {//json attr, target
        clearInterval(obj.timer);
        obj.timer = setInterval(function () {
            var flag = true;
            for (var k in json) {//json 属性名:属性值 k:json[k]
                if (k === "opacity") {
                    var leader = getStyle(obj, k) * 100;
                    var target = json[k] * 100;
                    var step = (target - leader) / 10;
                    step = step > 0 ? Math.ceil(step) : Math.floor(step);
                    leader = leader + step;
                    obj.style[k] = leader / 100;
                } else if (k === "zIndex") {
                    obj.style.zIndex = json[k];
                } else {
                    var leader = parseInt(getStyle(obj, k)) || 0;
                    var target = json[k];
                    var step = (target - leader) / 10;
                    step = step > 0 ? Math.ceil(step) : Math.floor(step);
                    leader = leader + step;
                    obj.style[k] = leader + "px";
                }

                if (leader != target) {
                    flag = false;
                }
            }
            if (flag) {
                clearInterval(obj.timer);
                if (fn) {
                    fn();
                }
            }
        }, 15);
    }

    function getStyle(obj, attr) {
        if (window.getComputedStyle) {
            return window.getComputedStyle(obj, null)[attr];
        } else {
            return obj.currentStyle[attr];
        }
    }
封装匀速动画
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,348评论 1赞 92
  • 通过jQuery,您可以选取(查询,query)HTML元素,并对它们执行“操作”(actions)。 jQuer...
    枇杷树8824阅读 744评论 0赞 3
  • 前言 CSSOM全称CSS对象模型,涉及两部分内容,第一部分和操作样式表相关,第二部分和元素尺寸相关,本文介绍第二...
    江枫阅读 3,152评论 1赞 10
  • oDiv.clientWidth, oDiv.clientHeight 兼容性:全兼容内容区域的宽度、高度,不包括...
    桃花島主阅读 430评论 0赞 0
  • 情敌的出现 夜深人静的时候,乱七八糟的思绪涌上心头。剥开厚重的保护壳,我承认自己也有一颗敏感而自卑的心,我承认从小...
    栀子茶与花姑娘阅读 539评论 0赞 0

友情链接更多精彩内容