zoukankan      html  css  js  c++  java
  • javascript之窗口属性和dom尺寸

    DOM基本操作
    查看滚动条的滚动距离
    window.pageXOffset / window.pageYOffset
    IE8及IE8以下不兼容

    document.body/document.documentElement.scrollLeft / scrollTop
    兼容性比较混乱,用时取两个值相加,因为不可能存在两个同时有值

    兼容封装,求滚动轮滚动距离 getrScrollOffset()

    function getrScrollOffset() {
      if(window.pageXOffset) {
        return {
          x: window.pageXOffset,
          y: window.pageYOffset
        }
      }else {
        return {
          x: document.body.scrollLeft + document.documentElement.scrollLeft,
          y: document.body.scrollTop + document.documentElement.scrollTop
        }
      }
    }

    查看窗口可视区尺寸
    window.innerWidth/innerHeight
    IE8及IE8以下不兼容

    document.documentElement.clientWidth/clientHeight
    标准模式下,任意浏览器都兼容

    document.body.clientWidth/clientHeight
    适用于怪异模式下的浏览器(怪异模式,即向下兼容。 去掉 <!DOCTYPE html> 就变成怪异模式)

    兼容封装,返回浏览器可视尺寸 getViewportOffset()

    function getViewportOffset() {
      if(window.innerWidth) {
        return {
          x: window.innerWidth,
          y: window.innerHeight
        }
      }else {
        if(document.compatMode === 'BackCompat') {
          return {
            x: document.body.clientWidth,         y: document.body.clientHeight       }     }
    else {       return {         x: document.documentElement.clientWidth,         y: document.documentElement.clientHeight       }     }   } }

    另外还有一些方法

    查看元素的几何尺寸
    domEle.getBoundingClientRect()
    兼容性很好
    该方法返回一个对象,对象里有left,top,right,bottom,width,height属性。left,top指元素左上角的x和y坐标,right,bottom指的是元素右下角的x和y坐标、
    width和height属性老IE未实现
    返回的结果并不是‘实时的’

    查看元素尺寸(视觉尺寸,content+padding+border)
    dom.offsetWidth/offsetHeight

    查看元素位置
    dom.offsetLeft/offsetTop
    对于无定位父级的元素,返回相对文档的坐标。对于有父级定位的,返回相对于最近的有定位的父级的坐标

    dom.offsetParent
    返回最近的有定位的父级,如无,返回body, body.offsetParent返回null

    让滚动条滚动方法

    window上有三个方法
    scroll(),scrollTo()这两一样 scrollBy()
    三个方法功能类似,用法都是将x,y坐标传入,即实现让滚动轮滚动到当前位置
    区别: scrollBy()会在之前数据基础上累加

    end !!!

  • 相关阅读:
    shell脚本进阶
    sort与uniq命令
    sed命令
    DNS与CDN
    nginx
    Docker Private Registry
    docker存储卷
    docker容器网络配置
    docker容器网络
    docker容器虚拟化
  • 原文地址:https://www.cnblogs.com/lyjfight/p/13830307.html
Copyright © 2011-2022 走看看