相对“位置:绝对”坐标之间的动画对象

Posted

技术标签:

【中文标题】相对“位置:绝对”坐标之间的动画对象【英文标题】:Animate object between relative "position:absolute" coordinence 【发布时间】:2015-09-21 21:52:17 【问题描述】:

我有一个盒子在这个位置

position:absolute;
right:20px;
top:10px;
cursor:pointer;

当我点击它时,我希望它在这个位置

position:absolute;
right:unset;
left:500px;
top:10px;
cursor:pointer;

如此处所示: http://jsfiddle.net/syogua8o/1/

这部分很简单,困难的部分是让它在这些位置之间设置动画。我希望对象在这两点之间获得缓动。我不知道该怎么做。只要我在动画时可以在视口边缘左侧 20 像素和右侧 500 像素,任何东西都可以工作。我需要它相对于视口边缘。

【问题讨论】:

【参考方案1】:

您可以在计算出css 之后设置leftwidth,并添加一个css 过渡。不会处理窗口调整大小,但您可以添加一个重做计算的函数。

$("box").css('left', $('box').position().left+'px')
$("box").css('width', $("box").width()+1)

$("box").click(function () 
    $("box").toggleClass("newpos");

);

box 
    position:absolute;
    background:red;
    right:20px;
    top:10px;
    cursor:pointer;
    transition: left 2s ease-out;

box.newpos 
    right:unset;
    left:500px !important;

http://jsfiddle.net/q8a1sjtx/1/

【讨论】:

【参考方案2】:

我现在正在使用动画听,你可以看到我提供了正确的 0px,因为如果你提供 500px 和 position:absolute;那么它仍然会在那个位置这只是一个如何动画的例子,现在你可以在这个动画函数中提供左或任何你想要的样式。

即使你也可以提供 css 然后动画 using jQuery .animate to animate a div from right to left?

请参阅上面的动画链接。

或者你也可以使用 jquery ui

为此,请参阅此链接http://jsfiddle.net/kevalbhatt18/oxL8vanw/

这些都是您如何使用不同模式制作动画的参考,您可以看到 Julien Grégoire 为您提供的 css 解决方案也不错


见这个例子:http://jsfiddle.net/kevalbhatt18/syogua8o/3/

   $("box").click(function () 

    $("box").animate(
        right: "0px"
    ,'slow');
);

【讨论】:

以上是关于相对“位置:绝对”坐标之间的动画对象的主要内容,如果未能解决你的问题,请参考以下文章

QT中的相对位置,绝对位置之间的转换(maptoglobal,mapfromglobal)

相对定位和绝对定位的用法及区别

有没有办法让“位置:绝对” div 保持相对宽度?

滑动的导航条

CSS:如何在一个位置中有位置:绝对 div:相对 div 不会被溢出裁剪:隐藏在容器上

ConstraintLayout2.0一篇写不完之极坐标布局与动画