2012-03-25 3 views
13

그래서 저는 Javascript와 Jquery를 처음 접했습니다. 내가 만들고자하는 것은 왼쪽 열에있는 링크가 오른쪽에있는 div를 왼쪽에서 오른쪽으로 수평으로 미끄러지게하고, 다시 클릭하면 보이지 않게 슬라이드하는 두 개의 열 페이지입니다. 나는 슬라이드 토글 효과를 사용해야하지만 각 개별 링크가 다른 div를 슬라이드시키는 방식으로 구현하는 데 문제가 있다는 것을 알고있다 ... 나는 Google 검색을 통해 찾은 몇 개의 jsfiddles를 조정하려고 시도했지만 나는 자바 스크립트에 관해서 꽤 길을 잃었다.JQuery로 divs를 수평으로 자르기

는 지금까지 내가 성공적으로 조정할 수있었습니다 유일한 바이올린 ... http://jsfiddle.net/bridget_kilgallon/HAQyK/
하지만 수직으로 그 슬라이드, 그리고 클릭하면 모든 div의로드.

여기에 내가 어떤 자바 스크립트없이하고자하는 페이지 레이아웃을 위해 만든 바이올린은 ... http://jsfiddle.net/bridget_kilgallon/NhanG/

도와주세요! :) - 브리짓

답변

34

불행히도 jQuery에는 준비된 '가로형'슬라이드 애니메이션이 없습니다. jQuery UI와 같은 더 큰 패키지를 사용하지 않는 한. 그러나 나는 그것이 필요하다고 생각하지 않는다.

jQuery에서 animate() 함수를 창의적으로 사용하면 효과를 얻을 수 있습니다.

난 당신이 설명은 막연한 그래서 난 패널 전환에 약간의 효과를 두 사례를 만든 이후에 가고 싶어 어느 몰랐

:

http://jsfiddle.net/sg3s/rs2QK/ - 왼쪽이 하나 개의 슬라이드 패널을 열고 오른쪽으로 가까이

http://jsfiddle.net/sg3s/RZpbK/ - 패널이 왼쪽에서 오른쪽으로 열리고 새 것으로 열려면 왼쪽으로 밀면 열립니다.

자료 :

당신은 아직 어쨌든, 순수 CSS와 함께이 작업을 수행 할 수 없습니다. 전환에 대한 지원은 기본이며 웹킷 기반 브라우저에 국한됩니다. 따라서 jQuery가 현명한 사용을 필요로하기 때문에 JS를 사용하기 전에 CSS로 가능한 한 많이 스타일을 지정해야합니다. 내 JS에서는 시각적 스타일/조작을 사용하지 않습니다.

+0

첫 번째 바이올린은 옳습니다. 당신이 제안한대로 스크립트를 추가하기 전에 내 CSS를 만들어야합니다. 이것은 방금 내 인생을 훨씬 쉽게 만들어주었습니다. 정말 고마워요! : D –

+0

당신이하고 싶은 일에 대해 생각하고 필요하다면 바로 시작할 수 있도록 CSS에 요소를 배치하십시오. – sg3s

+0

여기에 내가 지금까지 CSS를 현명하게 가지고있는 바이올린이 있습니다. http://jsfiddle.net/bridget_kilgallon/sMDyB/4/ 바이올린은 잘 작동하지만 전환은 드림위버에서 작동하지 않습니다. 어떤 아이디어입니까? 다시 한 번 감사드립니다 -BK –

1

jQuery UI의 effects 모듈을 사용하고 show('slide')을 사용할 수 있습니다. 보기 http://jsfiddle.net/HAQyK/1/

+0

를 포함하는 사업부 것은 또 다른 바이올린의 : http://jsfiddle.net/bridget_kilgallon/6eKGj/이 거의 정확히 내가 제외한 찾고 있어요 것입니다. .. 1. 링크가 클릭되면 모든 div가 나타납니다 - 개별 div에 어떻게 연결할 수 있습니까? 2. 링크를 두 번 클릭했을 때 div가 반대 방향으로 미끄러지도록 할 수있는 방법이 있습니까? (즉, 클릭 1에서 슬라이드를 클릭 2에서 화면 왼쪽으로 슬라이드) –

2

JavaScript를 사용하지 않으면 CSS 전환을 사용할 수있는 경우에만 사용할 수 있습니다. 그리고 이것들은 꽤 인상적이지만, 조건 애니메이션과 관련해서는 아직 발견하지 못했습니다. 기본적으로 시작 지점에서 다른 지점으로 이동 한 다음 다시 돌아올 수 있습니다 (브라우저 자체에서 사용할 수있는 기본 브라우저 이벤트를 기반으로). JS를 사용하면 추가 클래스를 추가/제거하고 div 요소를 마음 속으로 옮길 수 있습니다. 'just'CSS가 아니다. (나는 이것에 대해서 틀리게 입증되고 싶다.)

내가 지금까지 가지고 올 수있었습니다 최고입니다 :

#left { 
    float:left; 
    width:200px; 
} 
.right { 
    height: 0; 
    background-color: #fff; 
    margin-left: 205px; 
    overflow: hidden; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
} 
.right:target { 
    display: block; 
    height: 5em; 
    background-color: #ffa; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
}​ 

JS Fiddle demo.

그리고 요소의 너비가 변경 될 때 발생하는 콘텐츠 리플 로우를 고려하면 모양이 좋지 않으므로 측면에서 벗어나지 않습니다 (원할 경우 가능).

내가 어떤 자바 스크립트

없이하고자하는 경우 인 그건 ... : 나는 원래의 질문의 일부를 잘못 해석했을 수 있습니다 생각하기 때문에


을 편집 , 그리고 주석 (아래)은 jQuery가 괜찮은 옵션임을 암시하는 것처럼 보입니다. 이것은 데모로서 보람있는 것일 수 있습니다 :

​$('#left a').click(
    function(){ 
     var div = $('div').not('#left').eq($(this).index('#left a')); 
     var others = $('div[data-visible="true"]'); 
     others.each(
      function(){ 
       $(this).animate({ 
        'left' : '2000px' 
       },1000,function(){ 
        $(this).removeAttr('style data-visible'); 
       }); 
      }); 
     if (div.attr('data-visible')) { 
      div.animate({ 
       'left' : '2000px' 
      },1000,function(){ 
       $(this).removeAttr('style data-visible'); 
      }); 
     } 
     else { 
      div.animate({ 
       'left' : '210px' 
      },1000).attr('data-visible',true); 
     } 
    });​​​​​​​​ 

JS Fiddle demo.

참고 :

+0

응답에 대해 매우 감사드립니다. 이 작업을 수행하는 데 스크립트가 필요 없다고 인상 깊었습니다. div의 너비를 변경하여 가로 슬라이드를 만들 수있는 애니메이션 기능을 사용할 수 있지만 너비가 변경되는 내용에 미치지는 않았다는 것을 알고 있습니다. (내가 생각하기에 다시 흐름이라고 생각합니다). 슬라이드를 만들 때 jquery를 사용하는 것에 반대하지 않습니다. 이 효과를 창출 할 스크립트를 우연히 알고 있습니까? –

+0

예. 나는 "나는 자바 스크립트없이하고 싶다."라고했을 때 당신이 의미하는 것을 오해했다고 생각합니다. ... 긴 하루였습니다. =/나는 기존의 스크립트에 대해 모르지만 (많은 사람들이 있다고 생각하지만), 작동하는 것으로 보인다. '


'=) –

+0

rad 다음에 수정 사항이 표시됩니다. 그건 달아! 유일한 문제는 div를 두 번 슬라이드하는 동일한 링크를 클릭 할 때 발생합니다. –

0

다음은 원하는 코드입니다. IE, Safari, Chrome, Firefox 등에서 작동하는 것으로 입증되었습니다.

다음은 HTML 부분입니다.

<div id="slide-wrap" style="width:1000px; height:200px; overflow:hidden; padding:0 auto;"> 
     <div id="inner-wrap" style="float:left;"> 
      <!-- 'Put Inline contains here like below.' --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- ... --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- 'Put Inline contains here like above.' --> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:0px; margin-top:40px"> 
      <img id='scroll_L_Arrow' src='../assets/img/l-arrow.png' onclick="scrollThumb('Go_L')"/> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:960px; margin-top:40px"> 
      <img id='scroll_R_Arrow' src='../assets/img/r-arrow.png' onclick="scrollThumb('Go_R')"/> 
     </div> 
    </div> 

여기 JavaScript 기능의 jQuery 부분이 있습니다.

 function scrollThumb(direction) { 
     if (direction=='Go_L') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "-=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     }else 
     if (direction=='Go_R') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "+=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     } 
     } 

화살표를 숨기려면 여기를 참조하십시오. * // 마법사 Detect end of horizontal scrolling div with jQuery

0
$(function() { 
$("#wizardV").steps({ 
    headerTag: "h2", 
    bodyTag: "section", 
    transitionEffect: "slideLeft", 
    stepsOrientation: "vertical" 
}); 
}); 

여기 모든 콘텐츠