右から左にスライドしますか?


390

divを折りたたみから展開(およびその逆)にするにはどうすればよいですか?

私が目にするほとんどすべては常に左から右です。




回答:


378
$("#slide").animate({width:'toggle'},350);

リファレンス:https : //api.jquery.com/animate/


paddingLeft: 'toggle', paddingRight: 'toggle'要素に内部パディングがある場合にも追加できます。
piotr_cz 2016年

17
うまく機能しますが、試してみると左から右にスライドするだけです。逆にアニメーション化することは可能ですか?
2016年

2
唯一の問題は、内部にコンテンツがある場合、コンテンツを水平方向に「押しつぶし」、コントロールが移動/サイズ変更/折り返しなどを引き起こすことです。そのための良い解決策はありますか?
Neil Barnwell、

1
あなたのコードはCSS、本当のスライドのように見えるためにもっと必要です
AmerllicA '23

1
@NeilBarnwell可能な場合は、コンテンツを固定幅のラッパーに入れ、コンテナのを用意しますoverflow: hidden
ベンフィリップ

239

これは、jQueryUIの非表示/表示メソッドを使用してネイティブに実現できます。例えば。

    // To slide something leftwards into view,
    // with a delay of 1000 msec
    $("div").click(function () {
          $(this).show("slide", { direction: "left" }, 1000);
    });

リファレンス:http : //docs.jquery.com/UI/Effects/Slide


141
@ekerner-これには、大規模なライブラリであるJQueryUIが必要です。必要なのが単純なスライド遷移だけの場合、これはおそらく答えではありません;)
Jesse

9
これは、jQueryUIがインストールされている場合に最適な方法です。
蒸気機関車

5
明確にするために-minファイルは少なくとも235kbです!! これは良いことですが、@ Jesseが指摘するように、ページにかなり追加されます
Ukuser32

1
カスタムビルダーを使用して、スライドアニメーション以外のすべてを削除すると、縮小されたJSを20KB未満にすることができます。
Skylar Ittner 2017年

JQuery UIのドキュメントに次のような例が必要です。ありがとう
andreszs 2018

76

これを使って:

$('#pollSlider-button').animate({"margin-right": '+=200'});

ライブデモ

改良版

ダブルクリックでの二重マージンを防ぐために、いくつかのコードがデモに追加されました。 http //jsfiddle.net/XNnHC/942/

イージングで使用してください;)

http://jsfiddle.net/XNnHC/1591/

  • 余分なJavaScriptコードが削除されました。

  • クラス名と一部のCSSコードが変更されました

  • 展開されているか折りたたまれているかを見つける機能を追加

  • イージング効果を使用するかどうかを変更

  • アニメーション速度を変更

http://jsfiddle.net/XNnHC/1808/


2
値を「px」で計算するため、「%」では実行できません
Faisal Ashfaq

クリックするたびに左に移動します。
Elyor

外幅を確認し、それを使用して右マージンを追加できます
Tofandel

22

jiddle UIを使用するFiddleのこの実用的な例を見てください。これは元々左から右に使用したソリューションですが、右から左に機能するように変更しました。

これにより、ユーザーは、使用可能なパネル間でアニメーションを壊すことなく、リンクをすばやくクリックできます。

JavaScriptコードは単純です:

$(document).ready(function(){
    // Mostra e nascondi view-news
    var active = "europa-view";
    $('a.view-list-item').click(function () {
        var divname= this.name;
        $("#"+active ).hide("slide", { direction: "right" }, 1200);
        $("#"+divname).delay(400).show("slide", { direction: "right" }, 1200);
        active = divname;
    });
});

FiddleリンクでHTMLとCSSを入手してください。

より良い効果のプレゼンテーションのために、白い背景と左パディングを追加しました。


8
jQuery UIが必要
Jeroen K 2013

はい。提供されているサンプルリンク[ jsfiddle.net/erwinjulius/az4JL/]に
Erwin Julius


10
$(function() {
  $('.button').click(function() {
    $(this).toggleClass('active');
    $('.yourclass').toggle("slide", {direction: "right"}, 1000);
  });
});

11
私はすべてコメントを求めていますが、このコードは自明です。
2017

7

私はこのようにしてやった:

var btn_width = btn.width();
btn.width(0);
btn.show().animate({width: btn_width}, {duration: 500});

ノード "btn"はアニメーションの前に非表示にする必要があることに注意してください。また、 "position:absolute"を設定する必要がある場合もあります。


なぜ使用しないのwidth: 'toggle'ですか?btn.show().animate({width: 'toggle'}, {duration: 500});必要なのはすべてだと思います。
Aart den Brabre

6

言及する価値のあるもう1つのライブラリはanimate.cssです。jQueryとの相性が良く、CSSクラスを切り替えるだけで、多くの興味深いアニメーションを作成できます。

お気に入り..

$( "#slide")。toggle()。toggleClass( 'animated bounceInLeft');


5

GreenSock Animation Platform(GSAP)TweenLite/TweenMaxは、jQueryやCSS3のトランジションよりもはるかにカスタマイズがはるかにスムーズなトランジションを提供します。TweenLite / TweenMaxでCSSプロパティをアニメーション化するには、「CSSPlugin」というプラグインも必要です。TweenMaxはこれを自動的に含めます。

まず、TweenMaxライブラリをロードします。

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenMax.min.js"></script>

または軽量バージョンのTweenLite:

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/plugins/CSSPlugin.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/easing/EasePack.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenLite.min.js"></script>

次に、アニメーションを呼び出します。

 var myObj= document.getElementById("myDiv");

// Syntax: (target, speed, {distance, ease})
 TweenLite.to(myObj, .7, { x: 500, ease: Power3.easeOut});

IDセレクターで呼び出すこともできます。

 TweenLite.to("#myID", .7, { x: 500, ease: Power3.easeOut});

jQueryをロードしている場合は、特定のクラスを含むすべての要素のように、より高度な広範なセレクターを使用できます。

 // This will parse the selectors using jQuery's engine.
TweenLite.to(".myClass", .7, { x: 500, ease: Power3.easeOut});

詳細については、TweenLiteのドキュメントを参照してください。

彼らのウェブサイトによると: 「TweenLiteは、GreenSock Animation Platform(GSAP)の基盤として機能する、非常に高速で軽量で柔軟なアニメーションツールです。」


4

最初に要素の幅を0に定義し、右にフロートさせ、次に表示しようとしているイベントでそれを定義できます。

$('#the_element_to_slide_from_right_left').animate({ width:'your desired width' }, 600);

そのような単純な。


4

jQuery UIを使用せず、jQueryを使用した右から左へのアニメーションの例(任意のバージョン、https://api.jquery.com/animate/を参照)。

$(document).ready(function() {
  var contentLastMarginLeft = 0;
  $(".wrap").click(function() {
    var box = $(".content");
    var newValue = contentLastMarginLeft;
    contentLastMarginLeft = box.css("margin-left");
    box.animate({
      "margin-left": newValue
    }, 500);
  });
});
.wrap {
  background-color: #999;
  width: 200px;
  overflow: hidden;
}
.content {
  width: 100%;
  margin-left: 100%;
  background-color: #eee;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrap">
  click here
  <div class="content">
    I would like to have a div go from collapsed to expanded (and vice versa), but do so from right to left. Most everything I see out there is always left to right.
  </div>
</div>



3

またはあなたが使うことができます

$('#myDiv').toggle("slide:right");

4
他の14の既存の回答で10年前の質問に答えるとき、あなたの回答がもたらす新しいアプローチ、および質問が尋ねられたときにそれが有効であったか、またはそれらの10年間に利用可能になった手法を使用しているかを説明するのに役立ちます。
Jason Aller

1

私がスクロールを使用して行った例(HTML、CSS、JSのみ、jqueryライブラリのみ)。下にスクロールすると、ボタンが左にスライドします。

また、必要なのがこの効果だけである場合は、jQuery UIを使用しないでください。重すぎるためです(そのためだけに使用したい場合)。

$(window).scroll(function(){
  if ($(this).scrollTop() > 100) {
          event.preventDefault();
          $(".scrollToTop").css({'transform': 'translate(0px, 0px)'});
      } else {
          $(".scrollToTop").css({'transform': 'translate(40px, 0px)'});
      }
  });

この例を確認してください


1
はい、CSSの移行は、これを実現するための最良の方法の1つです。
トムトム

1

あなたdivが絶対的に配置されていて、幅がわかっている場合は、次のように使用できます:

#myDiv{
position:absolute;
left: 0;
width: 200px;
}

$('#myDiv').animate({left:'-200'},1000);

画面からスライドさせます。

または、コンテナにラップすることもできます div

#myContainer{
position:relative;
width: 200px;
overflow: hidden;
}

#myDiv{
position:absolute;
top: 0;
left: 0;
width: 200px;
}

<div id="myContainer">

<div id="myDiv">Wheee!</div>

</div>

$('#myDiv').animate({left:'-200'},1000);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.