标签: 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. java_day3_Scanner,顺序结构,选择结构(if,switch),循环结构(for,while),

    一.Scanner 键盘录入:程序运行过程中,用户可以根据自己的需求输入参与运算的值 实现键盘录入的步骤 1.导包 2.创建键盘录入对象 3.调用方法实现键盘录入 1)输入整数 2)输入字符串 pub ...

  2. Flutter 实现骨架屏

    什么是骨架屏 在客户端开发中,我们总是需要等待拿到服务端的响应后,再将内容呈现到页面上,那么在用户发起请求到客户端成功拿到响应的这段时间内,应该在屏幕上呈现点什么好呢? 答案是:骨架屏 那么什么是骨架 ...

  3. DWC3和XHCI的区别

    DWC3(DesignWare USB 3.0 Controller)和XHCI(eXtensible Host Controller Interface)都是与USB控制器相关的技术,但它们的作用和 ...

  4. flops, params = profile(model, inputs=(x,))计算

    计算量:FLOPs,FLOP时指浮点运算次数,s是指秒,即每秒浮点运算次数的意思,考量一个网络模型的计算量的标准.参数量:Params,是指网络模型中需要训练的参数总数. flops(G) = flo ...

  5. ssr屏幕空间射线追踪

    本轮作业中,我们需要在一个光源为方向光,材质为漫反射 (Diffuse) 的场景 中,完成屏幕空间下的全局光照效果(两次反射). 为了在作业框架中实现上述效果,基于我们需要的信息不同我们会分三阶段 着 ...

  6. Java 面向对象高级

    文章目录 1.静态 1.1 static修饰成员变量 1.2 static修饰成员变量的应用场景 1.3 static修饰成员方法 1.4 工具类 1.5 static的注意事项 1.6 static ...

  7. Lambda表达式、方法引用、算法、正则表达式

    文章目录 1.Lambda表达式 1.1 Lambda表达式基本使用 1.2 Lambda表达式省略规则 2.JDK8新特性(方法引用) 2.1 静态方法引用 2.2 实例方法引用 2.3 特定类型的 ...

  8. 根据字符串,获取实体属性上的annotation,如:createTime” 找到对应实体属性中的 TableField(value = "create_time", fill = FieldFill.INSERT)

    根据字符串,获取实体属性上的annotation,如:createTime" 找到对应实体属性中的 TableField(value = "create_time", f ...

  9. Proteus中单片机IO口外接LED输出低电平时,引脚却一直保持高电平的问题(已解决)

    前言 一个排阻接八个 LED,方便又省事,但出现了P1端口输出低电平后,仿真引脚却一直显示红色保持高电平不变,用电压表测量显示 2V 左右. 这是仿真的问题,在用开发板时是不会遇到的,为了仿真的显示效 ...

  10. Redis工具可视化工具Redis Desktop Manager(附安装包)

    前言 redis工具,我相信每个开发都需要,如果每次查都去client执行指令,我怕查完之后,老大就要发版咯.我之前一直用的Redis可视化工具RedisDesktopManager,总觉得差点意思, ...