1.获取dom元素的位置
利用offsetParent属性,获得元素相对于offsetParent的位置,再继续获取offsetParent元素的位置,两个位置叠加起来便是要求的值了。获取offsetParent的位置时使用的是同一方法,这样便形成递归。
function pageX(elem){
return elem.offsetParent ?elem.offsetLeft + pageX( elem.offsetParent ) : elem.offsetLeft;
}
function pageY(elem){
return elem.offsetParent?elem.offsetTop + pageY(elem.offsetParent):elem.offsetTop;
}
2.获取dom元素相对于父节点的位置
不同浏览器对offsetParent的解释不一样,所以不能单纯用offsetTop和offsetLeft来获取。可以利用第一个方法,将父节点的位置减去本身节点的位置,这样便得到相对于父节点的编移量了。但如果浏览器将offsetParent解释成父节点,就可以直接使用offsetTop等属性了,代码如下:
function parentX(elem){
return elem.parentNode==elem.offsetParent?elem.offsetLeft : pageX(elem)-pageX(elem.parentNode);
}
parentY方法类似。
3.获取dom元素本身的高和宽
这个稍微有点复杂,需要考虑到不同情况。
第一种情况:元素是显示的,即elem.style.display!="none"
可以利用offsetWidth属性,如果没有该属性,则可以计算出元素在css在的高宽,利用document.defaultView.getComputedStyle和elem.currentStyle.width。
function cssX(elem){
if(elem.style.width)return elem.style.width;
if(elem.currentStyle)return elem.currentStyle.width;
if(document.defaultView && document.defaultView.getComputedStyle)
return document.defaultView.getComputedStyle(elem,"").getPropertyValue("width");
}
var w = offsetWidth || cssX(elem);
考虑第二种情况:元素被隐藏了,直接获取高宽是不行的,所以需要,显示元素,再获取高宽,然后再隐藏元素,恢复之前的状态。
先定义两个方法,显示元素和恢复元素状态:
var resetCSS=function( elem, prop ) {
var old = {};
for ( var i in prop ) {
old[ i ] = elem.style[ i ];
elem.style[ i ] = prop[i];
}
return old;
}
var restoreCSS=function( elem, prop ) {
for ( var i in prop )
elem.style[ i ] = prop[ i ];
}
//保存元素的css值,并显示元素
var old = resetCSS( elem, {
display: '',
visibility: 'hidden',
position: 'absolute'
});
//获得元素高宽
var w = elem.clientWidth || cssX(elem);
//恢复元素样式
restoreCSS( elem, old );
这样,便可以编写一个获得元素宽度的方法了:
function getWidth(elem){
if(elem.style.display!="none"){
return elem.offsetWidth || parseInt(cssX(elem));
}
var old = resetCSS( elem, {
display: '',
visibility: 'hidden',
position: 'absolute'
});
var w = elem.clientWidth || parseInt(cssX(elem));
restoreCSS( elem, old );
return w;
}
要获取元素的高度类推。
4.获取窗口高宽
function getWindowWidth(){
var de = document.documentElement;
return self.innerWidth || ( de && de.clientWidth ) || document.body.clientWidth;
}
高度类推
5.获得页面高宽
这个可以利用body.scrollWidth属性就行了。
function getPageWidth(){
return document.body.scrollWidth;
}
高度类推
6.获取滚动条的位置
var scrollX=function() {
var de = document.documentElement;
return self.pageXOffset || ( de && de.scrollLeft ) || document.body.scrollLeft;
}
竖向位置类推
分享到:
相关推荐
### JavaScript 获取网页各种高宽及位置的方法总结 #### 屏幕尺寸相关属性 - **`screen.width`**:表示屏幕的宽度(以像素为单位)。 - **`screen.height`**:表示屏幕的高度(以像素为单位)。 - **`screen....
在JavaScript中,获取网页的各种高宽与位置是前端开发中常见的需求,这涉及到对不同对象属性的使用。本文将详细阐述这些方法。 首先,我们关注`screen`对象,它提供了关于用户屏幕的基本信息。`screen.width`和`...
JavaScript中的DOM操作是Web开发中的核心技能之一,它允许开发者动态地操纵网页内容。DOM(Document Object Model)是一个树状结构,将HTML或XML文档解析为一系列可编程的对象。通过DOM,JavaScript可以轻松地找到、...
根据给出的文件信息,本文将详细...以上代码段展示了如何用JavaScript获取屏幕、浏览器窗口以及具体HTML元素的尺寸和位置信息,通过这些属性,开发者可以在前端开发中灵活地控制和布局页面元素,实现良好的用户体验。
这两个方法可以获取元素在屏幕上显示的实际尺寸值,不包括padding和border。例如: ```javascript var computedStyle = window.getComputedStyle(img); var imgWidth = computedStyle.width; var imgHeight = ...
在探讨如何使用Java和JavaScript获取Flash文件的尺寸信息之前,有必要了解Flash文件的基本结构和类型。Flash文件,通常以SWF(Small Web Format)格式存在,用于存储矢量图形和动画数据。SWF文件可分为FWS(Frame-...
在描述中提到,当重置数据后直接通过`this.$refs.editor[0].offsetHeight`来获取DOM元素的高宽时,由于Vue的数据绑定是异步的,DOM更新可能还在队列中等待执行。Vue的`$nextTick`函数正是为了解决这个问题而设计的。...
图片加载涉及到从服务器获取图片数据并展示在网页上。服务器端可以通过Servlet或Controller响应HTTP GET请求,读取已保存的图片文件并将其作为HTTP响应的二进制流返回。客户端(浏览器)接收到数据后,自动解析为...
Jcrop是一款广泛应用于Web开发中的JavaScript图片裁剪插件,它允许用户在网页上选择并裁剪图片,常用于头像上传、图片编辑等场景。本文将深入探讨Jcrop插件如何实现高宽比例固定的裁剪功能以及效果预览。 Jcrop的...
值得注意的是,虽然上面提到的是在网页整体环境中居中,但JavaScript同样可以用来在父容器元素内部实现元素的居中。这只需要将计算`top`和`left`值时参照的对象从`document.body`改为父容器元素即可。 使用...
在现代网页设计中,实现页面布局的高宽自适应是一个常见需求。尤其是在响应式网页设计中,高宽自适应的实现尤为关键,以确保网站能够在不同尺寸的设备和屏幕上保持良好的布局和可读性。 文章首先提到了利用div和css...
在网页开发中,jQuery是一个非常流行的JavaScript库,它极大地简化了DOM操作,包括设置和获取网页元素的宽度和高度。本篇文章将详细讲解如何利用jQuery的`width()`和`height()`方法来改变指定网页元素的尺寸。 首先...
在JavaScript中,`iframe`元素经常用于嵌入外部网页或者实现页面内联框架。当我们需要在页面中使用`iframe`并希望它能自动调整大小以适应其内容时,就需要使用到一些特定的技术。本示例主要讲解如何在Firefox和IE...
在网页开发中,表格(table)是一种非常常见的用于展示结构化数据的HTML元素。调整表格单元格(cell)的宽度(width)和高度(height)在不同的浏览器中可能会遇到兼容性问题,尤其是早期的IE浏览器版本(IE6, IE7, ...
在JavaScript和jQuery中,动态获取屏幕的高宽是常见的需求,尤其在响应式设计和移动端开发中至关重要。本文将深入探讨如何使用jQuery有效地获取手机屏幕的宽度和高度,并解决可能出现的问题。 首先,jQuery提供了`$...
4. JavaScript库和函数定义:在描述中出现了函数$(),这通常表示一个用于获取DOM元素的函数。这里可能是对原生JavaScript的封装,提供一种简洁的方式来选取页面上的元素。 - 函数XCreateElement可能用于创建新的DOM...
在WEB开发中,文本处理和元素尺寸的获取是常见的任务,尤其在构建用户界面时显得尤为重要。本文将详细探讨CSS中与文本相关的样式以及如何使用jQuery来获取DOM对象的高宽。 首先,我们关注CSS中关于文本的样式控制:...