使用jQuery动画内联元素

我试图使用jQuery显示和隐藏内联元素(例如跨度)。

如果我只使用toggle(),它按预期工作,但如果我使用toggle(“slow”)给它一个动画,它会将span转换为一个块元素,因此插入中断。

内联元素是否可以动画? 如果可能的话,我宁愿顺利滑动,而不是淡入淡出。

 $(function(){ $('.toggle').click(function() { $('.hide').toggle("slow") }); });  

Hello there jquery

toggle()有很多奇怪的东西,包括有时隐藏或转换奇数元素。 这是一个类似的解决方案:

 $('.toggle').click(function() { $('.hide').animate({ 'opacity' : 'toggle', }); }); 

编辑 :这是一种添加平滑滑动的方法,只需要额外的HTML标记:

 var hidepos = $('.hide').offset().left; var slidepos = $('.slide').offset().left; $('.toggle').click(function() { var goto = ($('.slide').offset().left < slidepos) ? slidepos : hidepos; $('.slide').css({ 'left' : $('.slide').offset().left, 'position' : 'fixed', }).animate({ 'left' : goto, }, function() { $(this).css('position', 'static'); }); $('.hide').animate({ 'opacity' : 'toggle', }); }); 

HTML:

 

Hello there jquery

只有一个CSS属性会让你开心: http : //terion-fallen.livejournal.com/332945.html

 #animated-element { display: inline-block!important } 

我不认为这样可能。 我能想到的唯一方法是在0和1之间设置不透明度的动画,并在动画上使用回调,然后打开或关闭它。

 $('.toggle').click(function() { $('.hide:visible').animate( {opacity : 0}, function() { $(this).hide(); } ); $('.hide:hidden') .show() .animate({opacity : 1}) ; }); 

正如其他答案所示,衰落是可能的。 但是,我不认为“顺畅滑动”。 简而言之,元素的特定属性必须是动画的。 您提到的内联跨度没有特定的高度或宽度,但它确实具有不透明度。

在显示之前我不认为你想做什么:跨浏览器很好地支持inline-block。 现在,我想我会将背景淡化为红色,然后隐藏元素。

如果显示:inline-block得到了很好的支持,你可以将样式更改为inline-block,然后设置宽度或高度的动画,但不幸的是,这些天不能很好地工作。 也许在2010年:)

如果你试图向左或向右滑动的东西是浮动的,那么’animate’改变它对块元素的动画的事实不是问题:左边和它旁边的任何东西也用float定位:left

  $('#pnlPopup #btnUpdateButton').assertOne().animate({ width: "toggle" }); 

如果使用以下内容对#btnUpdateButton进行样式设置,那么它会很好地滑动并将内容推向右侧。

 #btnUpdateButton { float: left; margin-right: 5px; }