接收元素位于CSS过渡的中间位置
我需要在CSS过渡的中间接收元素left和top属性。 目前我使用jQuery位置方法,它似乎在某种程度上工作。
我做了两个例子来更清楚地表明我的问题:
1)这是非工作示例,其中元素的位置被打印到控制台。 接收到正确的位置,直到元素转换更改为其原始位置。 在转换值第一次更改后,位置不再更新。 jsFiddle链接: http : //jsfiddle.net/PCWDa/8/
2)这是WORKING示例,只向我们报告元素位置的方式不同:位置输入(type = text)元素值。 jsFiddle链接: http : //jsfiddle.net/PCWDa/9/
结论 :当dom元素属性没有收到任何更新(比如更新文本元素的值等)时,jQuerys position()方法似乎没有收到正确的位置。
错误? 这可能是jQuery,css或浏览器本身的错误? 是否有任何变通方法可以让第一个示例工作 – 在任何时候在转换过程中获得正确的位置,而无需像第二个示例中那样更改dom元素属性。
jsFiddle代码:
要获取示例1代码,请将变量设置为false并将示例2更改为true。
CSS
.box{ width: 100px; height: 100px; background-color: red; position: relative; -webkit-transition: all 5000ms ease; } .box_moved{ -webkit-transform: translateX(300px); }
HTML
JavaScript的
var direction = false; var working = false; window.forward = function(){$('.box').addClass('box_moved')} window.backward = function(){$('.box').removeClass('box_moved')} window.swap = function(){ if( direction = !direction ) forward() else backward(); } window.getlocation = function(){ if(working) $('.val').val( $('.box').position().left ); else console.log($('.box').position().left); } window.setInterval("swap()",3000); window.setInterval("getlocation()",200);