jQueryを使用したインライン要素のアニメーション化
-
04-07-2019 - |
質問
jQueryを使用してインライン要素(スパンなど)を表示および非表示にしようとしています。
toggle()を使用するだけで期待どおりに動作しますが、toggle(" slow")を使用してアニメーションを与えると、スパンをブロック要素に変換するため、ブレークを挿入します。
インライン要素でアニメーションは可能ですか?可能であれば、フェードインよりもスムーズなスライドを好むでしょう。
<script type="text/javascript">
$(function(){
$('.toggle').click(function() { $('.hide').toggle("slow") });
});
</script>
<p>Hello <span class="hide">there</span> jquery</p>
<button class="toggle">Toggle</button>
解決
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:
<p>Hello <span class="hide">there</span> <span class="slide">jquery</span></p>
<button class="toggle">Toggle</button>
他のヒント
1つの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})
;
});
他の回答が示しているように、フェードは可能です。ただし、「スムーズなスライド」とは思いません。なります。簡単に言えば、要素の特定のプロパティをアニメーション化する必要があります。あなたが言及したようなインラインスパンには、特定の高さや幅はありませんが、不透明度はあります。
display:inline-blockがブラウザ間で十分にサポートされるまで、あなたがやりたいことは可能だとは思いません。今のところ、背景を赤にフェードし、要素を非表示にします。
display:inline-blockが十分にサポートされている場合、スタイルをinline-blockに変更してから幅または高さをアニメーション化できますが、残念ながら最近ではうまく機能しません。 2010年かもしれません:)
「アニメーション」がブロック要素にアニメーション化するものを変更するという事実は、左または右にスライドしようとしているものがfloat:leftで配置され、その隣のものもfloatで配置されている場合は問題ではありません:左
$('#pnlPopup #btnUpdateButton').assertOne().animate({ width: "toggle" });
#btnUpdateButtonが次のようにスタイル設定されている場合、非常にうまくスライドし、コンテンツを右にプッシュします。
#btnUpdateButton {
float: left;
margin-right: 5px;
}