我有一个元素位于父元素的左上角。如果另一个元素将移动到此元素上,则应将其移动到右上角。如果它移出“目标”区域,则应将其设置回左上角。
所以这就是我所做的:
var css = (top <= 60 && left <= 120) ? { left: 'initial', right: '10px' } : { right: 'initial', left: '10px' };
$target.fadeOut(100, function() {
$target.css(css).fadeIn(100);
});
如果元素移动到左上角(顶部&lt; = 60且左&lt; = 120),则将设置新的css属性。 'old'元素逐渐消失,'new'元素渐渐消失。
我的问题是,此代码将用于元素的每个移动。这就是为什么目标id在元素移动时闪烁的原因。如果位置发生变化,我需要这样做。因此,只有当元素在左上方区域移动时,才会出现褪色 - 而不是(就像现在一样)每次移动。
我的解决方案
if (top <= 60 && left <= 120) {
changed = (position == 'left') ? true : false;
position = 'right';
css = { left: 'initial', right: '10px' };
}
else {
changed = (position == 'right') ? true : false;
position = 'left';
css = { right: 'initial', left: '10px' };
}
if (changed) {
$target.fadeOut(100, function() {
$target.css(css).fadeIn(100);
});
}
也许这可以优化......