• js-获取DOM尺寸、位置


    获取DOM尺寸、位置

    查看滚动条的滚动位置

    • window.pageXOffset / window.pageYOffset(IE8及其以下版本不支持)
    • document.body/documentElement.scrollLeft/scrollTop
      • 兼容性比较混乱,使用时通常取两个属性值相加,因为不可能存在两个同时有值。
    • 封装兼容性方法getScrollOffset():
    function getScrollOffset(){
    		if(window.pageXOffset){
    			return{
    				x:window.pageXOffset,
    				y:window.pageYOffset
    			}
    		}else{
    			return{
    				x:document.documentElement.scrollLeft,
    				y:document.documentElement.scrollTop
    			}
    		}
    	}
    

    查看可视化窗口的尺寸

    • window.innerWidth/innerHeight
      • IE8及其以下版本不兼容
    • document.documentElement.clientWidth/clientHeight
      • 标准模式下,任意浏览器兼容
    • document.body.clientWidth/clientHeight
      • 适合怪异(混杂)模式下浏览器
    • 封装兼容性方法,getViewportOffset:
    function getViewportOffset(){
    		if(window.innerHeight){
    			return{
    				window.innerWidth,
    				height:window.innerHeight
    			}
    		}else{
    			if(document.compatMode == 1){
    				return{
    					document.documentElement.clientWidth,
    					height:document.documentElement.clientHeght
    				}
    			}else{
    				return{
    					document.body.clientWidth,
    					height:document.body.clientHeght
    				}
    			}
    		}
    	}
    
    PS:
    • 限定了浏览器的渲染模式为标准模式,如果在Html文件删去这一句代码,则采用怪异(混杂)模式。
    • 标准模式下,网页按照现行的浏览器版本渲染;
    • 怪异模式下,网页会选择浏览器版本向后兼容的方式渲染。

    查看元素的几何尺寸

    • domEle.getBoundingClientRect();
      • 兼容性很好。
      • 返回的是一个对象,里面包括该元素的bottom,left,top right(bottom,left表示元素左下角坐标X,y值);width,height(在老版本IE浏览器中不兼容)。
      • 返回的结果并不是实时的。

    查看元素的尺寸

    • domEle.offsetWidth, domELe.offHeight

    查看元素的位置

    • domEle.offsetLeft,domEle.offTop
      • 对于无定位父级的元素,返回相对于文档的位置;对于有定位父级的元素,返回相对于最近的有定位父级元素的位置。
    • domEle.offsetPerent
      • 返回最近的有定位的父级元素,如果没有就返回body;body.offsetParent为null.

    让滚动条滚动

    • window上有三个方法:scroll(),scrollTo(); scrollBy()
    • 三个方法的功能类似,都是在括号里面传入x,y的值。
    • 区别:前两个都是滚动到x,y坐标;scrollBy(),是在之前的基本数据上做累加。
  • 相关阅读:
    面试40-一个数组,有2个数字出现奇数次,其余都是偶数次,求这两个数字O(n) O(1)
    面试38-数字在排序数组中出现的个数
    面试35-删除字符串重复字符-删除出现在第二个字符串中的字符-第一个只出现一次的字符-hash表计数
    意外get接近完美的黑苹果 (UEFI + GPT)
    Windows 启用/禁用内置管理员 Administrator
    出去走走
    【搬运】Wget 命令详解
    C语言学习之插入排序
    由 UWP 版网易云音乐闪退引发的博文
    gets() 与 scanf() 的小尴尬
  • 原文地址:https://www.cnblogs.com/1549983239yifeng/p/14431086.html
Copyright © 2020-2023  润新知