我如何使那些由于附近的其他元素调用$. fadein()而移动的元素产生动画?
How can I animate elements that move due to other nearby elements having $.fadeIn() called on them?
想象一个项目的水平ul
:
Item 1 | Item 2 | Item 4
我希望将Item 3
插入到适当的位置。如果我假设它已经在那里,但只有display: none;
,我可以调用$('.item3').fadeIn()
使用jQuery使其淡入。
不幸的是,这样做会使Item 4
在Item 3
淡入之前向左/向右捕捉。是否有一种方法可以使Item 4
平滑地动画为新项目腾出空间?
我已经尝试使用jQuery的show('slide')
为此,但它似乎不能很好地发挥水平ul
。我对这个问题也很好奇;是否有一些方法可以应用transition
属性来使元素的任何运动平滑?
最小工作示例http://jsfiddle.net/L2uh36rc/
注意,当Item 3
淡入淡出时,Item 4
会向左或向右调整以适应这种变化。我想让它平滑地向左或向右移动。
一个可能的解决方案:
$(
function() {
$('#toggle').on('click', function() {
var target = $('.target');
var w = target.data('originalWidth');
var curWidth = target.width();
if( target.css('display') === 'none'){
if( ! w ) {
w = curWidth;
target.data('originalWidth' , w);
}
target.css({width:0,opacity : 0}).show().animate(
{ opacity : 1 , width : w + 'px'} ,
777 ,
function(){
$('.target').show(0);
}
);
}else{
target.animate(
{ opacity : 0 , width : 0 + 'px'} ,
777 ,
function(){
$('.target').hide(0);
}
);
};
});
}
);
ul li {
display: inline-block;
overflow : hidden;
white-space : nowrap;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li class="target" style="display: none;">Item 3</li>
<li>Item 4</li>
</ul>
<button id="toggle">Toggle Item</button>
<div></div>
相关文章:
- jQuery-将列表项的一个元素移动到同一项的另一个元素中+对我的列表中的每个项执行此操作
- 将元素移动到右侧,然后返回到左侧
- 将jQuery draggable()元素移动到新的父元素
- Jquery-将图像从一个元素移动到另一个元素
- Css-是否可以在调整屏幕大小时使元素移动,以使其适合屏幕
- 制作元素移动的动画
- 如何将较低的z级元素移动到透明png下方
- SVG文本锚点设置使文本元素移动
- 如何将元素移动到鼠标位置
- d3:应用 scale() 变换时元素移动
- jQuery UI 工具提示在源 DOM 元素移动时卡住打开
- 如何在页面上选择文本块,然后将元素移动到其前面
- 下拉列表使元素移动
- 将一个元素移动到另一个元素中,其余元素将转到第三个位置
- 将最后一个元素移动到数组中的第二个项目的最快方法
- Javascript以可变的角度和速度为元素移动制作动画
- 在 JavaScript 中将数组元素移动到变量
- 使用jQuery单击时将元素移动/复制到另一个位置
- 将排序数组的数组元素移动到具有特殊逻辑的另一个位置
- 如何跟踪元素移动和特定位置的触发功能