zoukankan      html  css  js  c++  java
  • Javascript之常用尺寸、位置获取

    标签: js


    缘起

    平时在开发中或多或少需要去获取元素尺寸,特此记录常用的尺寸获取方案。

    常用相关尺寸

    /**
     * 获取窗口可视尺寸
     */
    function getWindowClientSize(){
        var docElem = document.documentElement;
        var docBd = document.body;
        return {
          w: docElem.clientWidth || docBd.clientWidth,
          h: docElem.clientHeight || docBd.clientHeight
        }
    }
    
    /**
     * 获取窗口真实尺寸,包括滚动条隐藏的内容
     */
    function getWindowSize() {
      var docElem = document.documentElement;
      var docBd = document.body;
      return {
        w: docElem.scrollWidth || docBd.scrollWidth,
        h: docElem.scrollHeight || docBd.scrollHeight
      }
    }
    
    /**
     * 获取元素的可视尺寸
     * @param {Dom} elem  要获取的元素
     * 注:行内元素总为0,隐藏元素也为0
     */
    function getElementClientSize(elem) {
        return {
            pw: elem.clientWidth,    // width + padding(左右)
            ph: elem.clientHeight,   // height + padding(上下)
            pdw: elem.offsetWidth,   // width + padding(左右) + border(左右)
            pdh: elem.offsetHeight   // height + padding(上下) + border(上下)
        }
    }
    
    /**
     * 获取元素的真实尺寸
     * @param {Dom} elem  要获取的元素
     * 注:此宽度包括滚动隐藏内容,可视内容,内边距,会减少滚动条所占的大小
     */
    function getElementSize(elem) {
        return {
            w: elem.scrollWidth,
            h: elem.scrollHeight
        }
    }
    
    /**
     * 获取滚动条已滚动的尺寸
     */
    function getScrollSize() {
        var docElem = document.documentElement;
        var docBd = document.body;
        return {
            t: docElem.scrollTop || docBd.scrollTop,
            l: docElem.scrollLeft || docBd.scrollLeft
        }
    }
    

    常用相关位置

    • 获取元素基于可视区左上角的位置 测试地址
    /**
     * 获取元素基于可视区左上角的位置
     * @param {Dom} elem 
     * 注:获取元素4条边相对于窗口左上角的偏移值,平时做按需加载和滚屏动画经常用到它
     */
    function getElementClientPos(elem) {
        var pos = elem.getBoundingClientRect();
        return {
            left: pos.left,
            top: pos.top,
            right: pos.right,
            bottom: pos.bottom
        }
    }
    
    /**
     * 获取元素相对窗口左上角的偏移
     * @param {Dom} elem
     * 注:默认会忽略元素offsetParent的边框
     */
    function getElementOffsetPos(elem){
        var top = 0,
            left = 0;
        while(elem) {
            top += elem.offsetTop;
            left += elem.offsetLeft;
            elem = elem.offsetParent;
        }
        return {
            top: top,
            left: left
        }
    }
    
  • 相关阅读:
    blocksit.js插件瀑布流
    防止点浏览器返回按钮,返回上一页的JS方法
    jquery 换肤功能
    HTML5获取地理位置
    百度api定位
    网站如何做到完全不需要使用jQuery
    让网页变成灰色代码
    利用html标签限制搜索引擎对网站的抓取收录
    高清ICON SVG解决方案
    加载动画
  • 原文地址:https://www.cnblogs.com/xwwin/p/13493984.html
Copyright © 2011-2022 走看看