오른쪽에서 왼쪽으로 슬라이드 하시겠습니까?


390

div를 축소에서 확장으로 또는 그 반대로 변경하려면 어떻게해야합니까? 오른쪽에서 왼쪽으로합니까?

내가 보는 모든 것은 항상 왼쪽에서 오른쪽입니다.




답변:


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

참조 : https://api.jquery.com/animate/


paddingLeft: 'toggle', paddingRight: 'toggle'요소에 내부 패딩이있는 경우 추가 할 수도 있습니다 .
piotr_cz

17
잘 작동하지만 시도 할 때 왼쪽에서 오른쪽으로 만 미끄러집니다. 다른 방법으로 애니메이션을 만들 수 있습니까?
twan

2
유일한 문제는 내부에 내용이 있으면 가로로 "분쇄"하여 컨트롤을 움직이거나 크기를 조정하거나 줄 바꿈하는 등의 문제가 발생한다는 것입니다. 좋은 해결책이 있습니까?
Neil Barnwell

1
코드 CSS는 실제 슬라이드 왼쪽처럼 보이게 해야합니다.
AmerllicA

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를 설치 한 경우 가장 좋은 방법입니다.
steampowered

5
명확히하기 위해-최소 파일은 235kb 이상입니다! 이것은 좋지만 @Jesse가 지적한 것처럼 페이지에 상당히 추가 될 것입니다
Ukuser32

1
사용자 정의 빌더를 사용하고 슬라이드 애니메이션을 제외한 모든 것을 제거하면 축소 된 JS를 20KB 미만으로 가져올 수 있습니다.
Skylar Ittner 2016 년

JQuery UI 문서에 이와 같은 예제가 있기를 바랍니다. 감사합니다
andreszs

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

jQuery 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


19

이것을 사용하십시오

<script src="jquery.min.js"></script>
<script src="jquery-ui.min.js"></script>
<script>
    $(document).ready(function(){
        $("#flip").click(function () {
            $("#left_panel").toggle("slide", { direction: "left" }, 1000);
        });
    });
</script>


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

11
나는 모두 의견을 제시하지만이 코드는 매우 자명하다.
Jon

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 Braber

6

라이브러리를 언급 할만한 또 다른 가치는 animate.css 입니다. jQuery와 잘 작동하며 CSS 클래스를 토글하여 많은 재미있는 애니메이션을 수행 할 수 있습니다.

처럼..

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


5

GreenSock 애니메이션 플랫폼 (GSAP) 와 함께TweenLite/TweenMaxjQuery를 또는 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는 GSAP (GreenSock Animation Platform)의 기반이되는 매우 빠르고 가볍고 유연한 애니메이션 도구입니다."


4

먼저 요소의 너비를 0으로 정의하고 오른쪽으로 부동 한 다음 표시하려고하는 이벤트에서 정의 할 수 있습니다.

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

그렇게 간단합니다.


4

jQuery를 사용하는 jQuery UI없이 오른쪽에서 왼쪽으로 움직이는 애니메이션의 예 (모든 버전은 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 년 동안 이용 가능한 기술을 사용하고 있는지 설명하는 데 도움이 될 것입니다 .
Jason Aller

1

스크롤을 사용하여 수행 한 예 (jquery 라이브러리와 함께 HTML, CSS 및 JS 만). 아래로 스크롤하면 버튼이 왼쪽으로 미끄러집니다.

또한 원하는 유일한 효과 가이 효과라면 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 전환은 오늘날 이것을 달성하는 가장 좋은 방법 중 하나입니다.
Tom Tom

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.