js获取dom元素位置来定位元素

js获取dom元素位置来定位元素。

DOM的定义如下图

 

获取元素的位置属性可以通过

  • HTMLElement.offsetLeft
  • HTMLElement.offsetTop

但是,这两个属性所储存的数值并不是该元素相对整个浏览器画布的绝对位置,而是相对于其父元素位置的相对位置,也就是说这两个数值得到的是以其 父元素左上角为(0,0)点从而计算出的数值。所以我们要得到她的绝对位置,那么我们必须依次向上获取他的父元素的位置,然后获取它父元素的父元素的offersetLeft和offersetTop,一直递归到浏览器的整个画布横纵距离的时候,例如

/* 获取元素的纵坐标 */
function  getTop(e){
   
var  offset = e.offsetTop;
   
if (e.offsetParent != null ){
     offset
+= getTop(e.offsetParent);
   }         
   
return  offset;
}
/* 获取元素的横坐标 */
function  getLeft(e){
   
var  offset = e.offsetLeft;
   
if (e.offsetParent != null ){
      offset
+= getLeft(e.offsetParent);
   } 
   
return  offset;

 获取元素的绝对位置,无非是根据元素距浏览器左边(left)和顶部(top),我们可以稍稍改变一下得到一方法

function  getElemPos(obj){
        
var  pos  =  { " top " : 0 " left " : 0 };
         
if  (obj.offsetParent){
           
while  (obj.offsetParent){
             pos.top 
+=  obj.offsetTop;
             pos.left 
+=  obj.offsetLeft;
             obj 
=  obj.offsetParent;
           }
         }
else   if (obj.x){
           pos.left 
+=  obj.x;
         }
else   if (obj.x){
           pos.top 
+=  obj.y;
         }
         
return  {x:pos.left, y:pos.top};
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用CSS3的transition属性和transform属性来实现DOM元素位置改变的动画,从而实现从快到慢的动画效果。 具体步骤如下: 1. 首先,需要将要进行动画的DOM元素的初始位置设置为相对定位(position: relative),这样才能让它在页面中移动。 2. 然后,设置transition属性,用来定义动画的过渡效果。可以设置transition-duration(动画持续时间)、transition-timing-function(动画时间函数)、transition-delay(动画延迟时间)等属性,来控制动画的执行方式。 3. 接着,使用transform属性来改变DOM元素位置。可以使用translateX()或translateY()函数来移动元素,也可以使用rotate()函数来旋转元素。同时,也可以设置transform-origin属性来改变元素的旋转中心点。 4. 最后,使用JavaScript来触发动画效果。可以通过改变DOM元素的样式来实现动画效果,比如改变其left、top等属性的值。 下面是一个简单的示例代码: HTML: ``` <div class="box"></div> ``` CSS: ``` .box { width: 100px; height: 100px; background-color: red; position: relative; transition: transform 1s ease-in-out; } .box:hover { transform: translateX(200px); } ``` JavaScript: ``` const box = document.querySelector('.box'); box.addEventListener('mouseenter', () => { box.style.transform = 'translateX(200px)'; }); ``` 在上面的示例中,当鼠标移入.box元素时,会触发动画效果,使元素从左侧移动到右侧。其中,transition属性定义了动画的执行方式,transform属性用来改变元素位置,JavaScript代码用来触发动画效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值