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
}
}
Javascript之常用尺寸、位置获取的更多相关文章
- javascript控制滚动条的位置,获取控件的位置
一.如下是定位鼠标在视窗中的位置,先定位视窗和页面直接的距离. function getMousePoint() { var point = {x:0,y:0}; // 如果浏览器支持 pageYOf ...
- javascript中常用坐标属性offset、scroll、client
原文:javascript中常用坐标属性offset.scroll.client 今天在学习js的时候觉得这个问题比较容易搞混,所以自己画了一个简单的图,并且用js控制台里面输出测试了下,便于理解. ...
- Android View各种尺寸位置相关的方法探究
Android View各种尺寸位置相关的方法探究 本来想做一个View间的碰撞检测之类的. 动手做了才发现不是想象的那么简单. 首先,写好了碰撞检测的工具类如下: package com.mengd ...
- JS-009-屏幕分辨率、浏览器显示区域、元素位置获取
此文简略讲述有关屏幕大小.元素位置及大小获取. 执行文中脚本时,请先打开 Chrome 浏览器,并切换至开发者工具的控制台,并打开网址:http://www.yixun.com/,文中元素事例为页面元 ...
- jquery】常用的jquery获取表单对象的属性与值
[jquery]常用的jquery获取表单对象的属性与值 1.JQuery的概念 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用一些简单的代码实现一些复杂的 ...
- Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等)
当前位置: 首页 > 编程社区 > Swift > Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等) Swift - 常用文件目录路径获取(Home目录,文 ...
- javascript数组常用的遍历方法
本篇文章给大家带来的内容是关于javascript数组常用的遍历方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 前言 本文主要介绍数组常见遍历方法:forEach.m ...
- Javascript中常用事件集合和事件使用方法
Javascript中常用事件集合和事件使用方法 一.事件绑定 格式: 事件源 . on事件类型=事件处理函数 事件绑定三要素 1.事件源:和谁绑定 2.事件类型:什么事件 3.事件处理函数:触发了要 ...
- 如何理解JavaScript中常用的4种排序算法?
如何理解JavaScript中常用的4种排序算法? 冒泡排序 冒泡排序是我们在编程算法中,算是比较常用的排序算法之一,在学习阶段,也是最需要接触理解的算法,所以我们放在第一个来学习. 算法介绍: ...
- 一个分门别列介绍JavaScript各种常用工具的脑图
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:一个分门别列介绍JavaScript各种常用工具的脑图.
随机推荐
- Python—开发工具 PyCharm 使用
一.创建新工程: 第一个工程创建完毕!
- manim边学边做--图形间集合关系
几何图形间的集合关系,是数学和几何学中的一个基本概念, 通过计算不同形状(如圆形.矩形.三角形等)的交集和并集等关系,可以实现复杂的图形处理和视觉效果. manim中提供了4种计算几何形状间集合关系的 ...
- T2回家(home)题解
T2回家(home) 现在啥也不是了,虽然会了逆元,但是对期望概率题还是一窍不通,赛时相当于只推出了 \(n=1\) 的情况,结果运用到所有情况,理所应当只有20分. 题目描述 小Z是个路痴.有一天小 ...
- centos 下安装pip pip3
centos 下安装pip pip3 上一篇说过了如何在centos7 上安装python3 并与python2.7共存. 这篇说一下 安装python2.7 下安装的pip 以及python3 下的 ...
- kotlin函数和Lambda表达式——>高阶函数与lambda表达式
1.高阶函数 高阶函数是将函数用作参数或返回值的函数. 一个不错的示例是集合的函数式⻛格的 fold,它接受一个初始累积值与一个接合函数,并通过将当前 累积值与每个集合元素连续接合起来代入累积值来构建 ...
- Java面试题中高级进阶(JVM篇Java内存)
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Java内存结构?说说对象分配规则?描述一下JVM加载class文件的原理机制?似乎有点模糊了,那就大概看一下面试题吧.好记性不如烂键 ...
- 对背包dp的再探究:以 采药 和 疯狂的采药 为例
题目链接: 01背包:采药 完全背包:疯狂的采药 关于 "总体积刚好是 V " 和 "总体积 \(\le\) V " 正常的背包推导的都是 "总体积刚 ...
- bitset优化传递闭包
bitset优化传递闭包 时间复杂度 \(O(\frac{n^3}{w})\) #include<bits/stdc++.h> #define F(i,l,r) for(int i=l;i ...
- 鸿蒙NEXT开发案例:指尖轮盘
[1]引言 "指尖轮盘"是一个简单而有趣的互动游戏(类似抓阄),这个应用通过触摸屏幕的方式,让玩家参与一个激动人心的游戏,最终选出幸运的赢家.未来可以进一步扩展功能,如增加游戏模式 ...
- (系列十二)Vue3+.Net8实现用户登录(超详细登录文档)
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...