标签: 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
}
}

Javascript之常用尺寸、位置获取的更多相关文章

  1. javascript控制滚动条的位置,获取控件的位置

    一.如下是定位鼠标在视窗中的位置,先定位视窗和页面直接的距离. function getMousePoint() { var point = {x:0,y:0}; // 如果浏览器支持 pageYOf ...

  2. javascript中常用坐标属性offset、scroll、client

    原文:javascript中常用坐标属性offset.scroll.client 今天在学习js的时候觉得这个问题比较容易搞混,所以自己画了一个简单的图,并且用js控制台里面输出测试了下,便于理解. ...

  3. Android View各种尺寸位置相关的方法探究

    Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...

  4. JS-009-屏幕分辨率、浏览器显示区域、元素位置获取

    此文简略讲述有关屏幕大小.元素位置及大小获取. 执行文中脚本时,请先打开 Chrome 浏览器,并切换至开发者工具的控制台,并打开网址:http://www.yixun.com/,文中元素事例为页面元 ...

  5. jquery】常用的jquery获取表单对象的属性与值

    [jquery]常用的jquery获取表单对象的属性与值 1.JQuery的概念 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用一些简单的代码实现一些复杂的 ...

  6. Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等)

    当前位置: 首页 > 编程社区 > Swift > Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等) Swift - 常用文件目录路径获取(Home目录,文 ...

  7. javascript数组常用的遍历方法

    本篇文章给大家带来的内容是关于javascript数组常用的遍历方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 本文主要介绍数组常见遍历方法:forEach.m ...

  8. Javascript中常用事件集合和事件使用方法

    Javascript中常用事件集合和事件使用方法 一.事件绑定 格式: 事件源 . on事件类型=事件处理函数 事件绑定三要素 1.事件源:和谁绑定 2.事件类型:什么事件 3.事件处理函数:触发了要 ...

  9. 如何理解JavaScript中常用的4种排序算法?

      如何理解JavaScript中常用的4种排序算法? 冒泡排序 冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习. 算法介绍: ...

  10. 一个分门别列介绍JavaScript各种常用工具的脑图

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:一个分门别列介绍JavaScript各种常用工具的脑图.

随机推荐

  1. HTML – Naming Conversion

    有些是市场的规范, 有些是我的规范 Tag Name Lower Case 参考: W3Schools Attributes Name Lower Case 参考: W3Schools Always ...

  2. C++中对象的延迟构造

    本文并不讨论"延迟初始化"或者是"懒加载的单例"那样的东西,本文要讨论的是分配某一类型所需的空间后不对类型进行构造(即对象的lifetime没有开始),更通俗点 ...

  3. ChatGPT中Java相关问答(包括Java基础知识和一些面试题)

    分享一个自己学习Java时的记录ChatGPT中的对话:https://chatgpt.com/share/66e8f009-0fd0-8000-b458-8c5812d0b631 包括如下问题 Ho ...

  4. C#爬取动态网页上的信息:B站主页

    目录 简介 获取 HTML 文档 解析 HTML 文档 测试 参考文章 简介 动态内容网站使用 JavaScript 脚本动态检索和渲染数据,爬取信息时需要模拟浏览器行为,否则获取到的源码基本是空的. ...

  5. LeetCode 1316. Distinct Echo Substrings (RK哈希)

    题意: 给一个字符串 寻找字符串为(a+a)格式的子串有多少.a+a 格式字符串比如 abcabc, ee 等. 首先O(N^2)枚举子串,然后通过哈希在O(1)复杂度判断子串是否符合要求. RK哈希 ...

  6. SpringCloud入门(四)Ribbon负载均衡

    一.Ribbon负载均衡原理SpringCloud底层其实是利用了一个名为Ribbon的组件,来实现负载均衡功能的. SpringCloudRibbon的底层采用了一个拦截器,拦截了RestTempl ...

  7. /proc/zoneinfo

    root@pita2_mr813_tina35:/# cat /proc/zoneinfo Node 0, zone DMA per-node stats nr_inactive_anon 4749 ...

  8. 3.flask 源码解析:路由

    目录 一.flask 源码解析:路由 1.1 构建路由规则 1.2 werkzeug 路由逻辑 1.3 flask 路由实现 1.4 match 实现 Flask 源码分析完整教程目录:https:/ ...

  9. 「模拟赛」CSP-S 模拟 11(T2 超详细)

    比赛链接 A.玩水 (water) 签到.发现如果要找两条路径的话,能找到的充要条件是存在一个点的上方和左方的字母相同.(即使两条走过的点截然不同的路径也符合,这时终点会成为这个点). 即存在一个位置 ...

  10. 新东方在有状态服务 In K8s 的实践

    作者|周培,新东方架构部容器组专家 有状态服务建设一直以来都是 K8s 中非常具有挑战性的工作,新东方在有状态服务云化过程中,采用定制化 Operator 与自研本地存储服务结合的模式,增强了 K8s ...