Js代码
1.获取dom元素的位置
利用offsetParent属性,获得元素相对于offsetParent的位置,再继续获取offsetParent元素的位置,两个位置叠加起来便是要求的值了。获取offsetParent的位置时使用的是同一方法,这样便形成递归。
Js代码
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等属性了,代码如下:
Js代码
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。
Js代码
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);
考虑第二种情况:元素被隐藏了,直接获取高宽是不行的,所以需要,显示元素,再获取高宽,然后再隐藏元素,恢复之前的状态。
先定义两个方法,显示元素和恢复元素状态:
Js代码
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 );
这样,便可以编写一个获得元素宽度的方法了:
Js代码
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.获取窗口高宽
Js代码
function getWindowWidth(){
var de = document.documentElement;
return self.innerWidth || ( de && de.clientWidth ) || document.body.clientWidth;
}
高度类推
5.获得页面高宽
这个可以利用body.scrollWidth属性就行了。
Js代码
function getPageWidth(){
return document.body.scrollWidth;
}
高度类推
6.获取滚动条的位置
Js代码
var scrollX=function() {
var de = document.documentElement;
return self.pageXOffset || ( de && de.scrollLeft ) || document.body.scrollLeft;
}
竖向位置类推
分享到:
相关推荐
Javascript 元素位置、大小、鼠标定位操作 本文将详细介绍 Javascript 中元素位置、大小、鼠标定位操作相关的知识点,包括事件对象、DOM 对象、Style 对象等提供的相关属性和方法。 一、事件对象 Event 事件对象 ...
这个名为"js监听滚动条改变导航元素位置和样式.rar"的压缩包文件提供了一个实例,教你如何利用原生JavaScript来实现这一功能,特别适合初学者学习。以下是关于这个主题的详细讲解。 首先,我们需要理解滚动条事件。...
6. `selectUser.js`: 主要的JavaScript源码,实现了跨框架获取元素位置的功能。 在`selectUser.js`中,开发者可能使用了递归方法来遍历所有框架,查找目标元素并计算其位置。递归的关键在于,每次进入一个iframe,...
总的来说,理解和掌握这些JavaScript获取元素位置的方法对于前端开发是至关重要的。通过结合使用`getBoundingClientRect()`、`scrollLeft`、`scrollTop`和`offsetHeight`等属性,我们可以精确地定位页面上的任何元素...
在JavaScript(JS)中实现元素拖拽效果是一项常见的交互设计技术,它允许用户通过鼠标或触摸设备移动页面上的元素,从而提升用户体验。本教程将详细解释如何创建一个基本的元素拖拽功能,并演示如何将拖动的元素放入...
- **更新元素位置**: 在定时器的回调函数中,根据步长更新元素的位置(`left`属性),并检查边界条件以实现往返运动。 ##### 3. 示例代码分析 ```javascript var Button = document.getElementById("Button"); var ...
例如,平滑地改变元素位置: ```javascript var position = 0; function animate() { if (position ) { element.style.left = position + 'px'; position += 10; requestAnimationFrame(animate); } } ...
**JavaScript 固定元素插件:Sticky-js详解** 在网页设计中,有时我们需要让某些元素在用户滚动页面时始终保持在屏幕的特定位置,比如导航栏、侧边栏或者广告等。这种效果被称为“粘性”或“固定”效果。为实现这一...
JavaScript 提供了这样的功能,可以让我们控制网页平滑地滚动到指定的元素位置。本文将详细讲解如何利用 JavaScript 实现这个功能。 首先,我们要了解 JavaScript 中获取元素位置的基本方法。在提供的代码中,`...
总之,理解和掌握JavaScript中的DOM元素位置和尺寸获取方法是Web开发中的基本技能,这对于创建交互式、响应式的网页至关重要。通过熟练运用这些属性和方法,开发者可以实现各种创新的效果,提升用户体验。
本篇文章将详细介绍几种在JavaScript中删除数组元素的方法,帮助开发者更好地理解和应用这些技巧。 1. **pop() 方法** `pop()` 方法用于删除并返回数组的最后一个元素。如果数组为空,它将不执行任何操作并返回 `...
【JavaScript DOM位置、大小、鼠标定位...总之,掌握JavaScript中关于DOM元素位置、大小和鼠标定位的相关属性,是提升Web开发技能的重要一步。通过深入理解和实践,开发者可以更加灵活地创建响应式和交互性强的网页。
本文将深入探讨如何使用JavaScript结合Canvas实现指定元素的截图功能,这一技术通常用于网页分享、用户界面快照或者数据分析。我们将讨论以下几个核心知识点: 1. **Canvas API**:Canvas API是HTML5引入的一种新的...
`test.js`可能是实现这种功能的一个脚本文件,其中包含了动态插入HTML元素的JavaScript代码。 在`Noname1.html`这个文件中,很可能展示了一个使用JavaScript动态插入HTML元素的实际例子。你可以打开这个文件查看其...
在网页开发中,JavaScript是一种非常重要的脚本语言,它提供了丰富的功能,其中之一就是实现网页元素的拖拽排序。拖拽排序允许用户通过直观地拖动元素来改变它们在页面上的顺序,增强了用户体验。本文将深入探讨如何...
我们可以遍历元素数据,根据原子序数找到元素在周期表中的位置,并将其添加到对应的`<td>`中。同时,我们还可以为每个元素添加鼠标悬停或点击事件,以显示更详细的信息,如电子配置、化学性质等。 为了实现“动态”...
本篇文章将详细讲解如何使用jQuery实现鼠标拖动元素并改变其位置的功能,这对于构建交互式用户界面至关重要。 首先,我们需要在HTML页面中引入jQuery库。这通常通过在`<head>`标签内添加以下代码来完成: ```html ...
例如,当用户点击某个元素时,JavaScript可以弹出包含该元素详细信息的窗口,或者改变元素在3D空间中的位置和视角,使用户能够从各个角度观察。 为了实现3D效果,开发者通常会利用JavaScript库,如Three.js。Three....
在JavaScript中实现拖动元素并交换位置的效果,通常涉及到事件监听、CSS样式调整以及DOM操作。以下是一个简化的实现步骤: 1. **设置HTML结构**: 首先,你需要创建一个包含多个可拖动元素(如`<li>`)的容器(如`...
本资源涉及的是一个基于jQuery(JQ)、JavaScript(JS)和layui框架的UI组件,特别关注的是元素(尤其是div)的拖动功能。拖动插件是一种常见且实用的增强交互性的工具,它允许用户通过鼠标操作移动页面上的元素,...