2014-11-28 2 views
0

전체 화면 div와 오버 플로우가 숨겨진 페이지 만들기. 화면의 왼쪽, 아래 및 오른쪽에 각각 3 개의 div가 있으며 해당 div가 페이지 위로 슬라이드되도록하는 해당 버튼이 있습니다 (여백 설정을 사용하여 페이지를 이동하고 숨길 수 있음).여러 개의 버튼으로 슬라이딩 div 제어하기

매우 간단한 코드로 작업했지만이 페이지의 상태를 기억하기 위해 고급 코드가 필요하므로 동일한 버튼으로 div가 다시 이동되지 않거나 각 div가 원래 위치로 되돌아갑니다 다른 버튼을 누르면

내 생각이었다 그것은

설정 초기 pagestate = 1

과 같이 될 수 있다는 경우 pagestate = 1 onlcick에 div1 애니메이션

버튼 1을 (어떤 버튼이 어떤 div의가 표시되지 누르지) page, set pagestate = 2
버튼 2 onlcick 페이지에 div2를 활성화하고, 페이지 설정 = 3으로 설정하십시오.
버튼 3 onlcick 페이지에 애니메이션 div3 설정, pagestate = 4 설정

다른

는 pagestate = 2 인 경우 (버튼 1 가압 DIV 1 개) 정렬

버튼 1 onlcick 아무것도 2 onlcick 페이지에 DIV2 애니메이션
버튼하지 않는다 div1 오프 페이지 설정 pagestate 애니메이션 = 3
버튼 3 onlcick div1 오프 페이지를 애니메이션, 페이지에 div3 애니메이션을 설정 pagestate = 4

나는 아래의 코드를 사용하고 누군가 날이 내가 envisio 방법을 작동하는 데 도움 수 있다면 감사하겠습니다

N

근무 코드 :

$('#button1').click(function() { 
     $('#div1').animate({ 
     'marginLeft' : "+=100%" 
     }); 
    }); 

내가 상상하는 방법이 작동하지 않을 수 있습니다 :이가 표시되지 않습니다

$ (문서) .ready (함수() {

var state = 1; 


$('#button1').click(function() { 


    if (state = 1) {  

    $('#div1').animate({ 
    'marginleft' : "+=100%" 
    }); 


    state = 2; 

    } 

    else if (state = 3) { 

     $('#div1').animate({ 
     'marginLeft' : "+=100%" 
     }); 

      $('#div2').animate({ 
     'marginTop' : "-=100%" 
     });  

     state = 2; 

     } 

     else if (state = 4) { 

     $('#div1').animate({ 
     'marginLeft' : "+=100%" 
     }); 

      $('#div4').animate({ 
     'marginRight' : "-=100%" 
     }); 

     state = 2; 

     } 

continued for each of the other 2 buttons. 

을 나는이 일을 훨씬 더 우아하고 효율적으로 수행 할 수있는 방법이 있다고 확신합니다. 그래서 누군가가 도와 주면 크게 감사 할 것입니다.

+0

개념을 분명히 해 주실 수 있습니까? DIV가 나타나면 버튼이 어떻게됩니까? 만약 내가 맞으면 (아이디어를 묘사하는 그림이 도움이 될 것입니다 : ... |), 초기 상태에서는 당신은'1 2 3'이고 그 아래에는 "2"가 있습니다. '2'가 처음으로 나타납니다. –

+0

답변 해 주셔서 감사합니다. 아래의 코드를 기반으로 여기에서 모형을 만들었습니다. http://jsfiddle.net/andyj/sprrxzgu/ – amj

+0

행복합니까? (추신 : 나는'home' 또는'back'을 무언가 버튼을 상단에 두는 것이 좋습니다. 왜냐하면 처음에는 메인 화면으로 돌아가는 것이 로직이 아니기 때문입니다. 예를 들어 클릭하면됩니다 :'button2' (다시)) think UI를 구축하는 동안 UX에 대해 알아보십시오. –

답변

0

데모 : http://jsfiddle.net/CJ_/k4qyoufo/

이 잘하면 도움이 될 것입니다, 그것에 대해 이동하는 여러 가지 방법 중 하나입니다 (그리고 당신이 찾고있는 약이다!)

이 '의 배열을 정의함으로써 시작하세요

states "-이 예제에서는 명시 적으로 여백 값을 상태로 사용했지만, 0과 1 또는 그에 맞게 수정 된 논리로 설정 될 수도 있습니다. 이것들은 각 시나리오에 대해 1보다는 각 div에 대한 상태를 설정합니다 (이 경우 3 개의 다른 상태 값은 보이는 div의 각 조합에 하나씩있는 경우 8에 반대합니다!

$('#but1').click(function() { 
    states[0]=(states[0]==0)?-100:0; 
    states[1]=100; 
    states[2]=100; 
    update(); 
}); 

$('#but2').click(function() { 
    states[0]=-100; 
    states[1]=(states[1]==100)?0:100; 
    states[2]=100; 
    update(); 
}); 

$('#but3').click(function() { 
    states[0]=-100; 
    states[1]=100; 
    states[2]=(states[2]==0)?100:0; 
    update(); 
}); 
:)

var states = [-100, 100, 100]; 

다음 각 버튼에 대해, 필요에 따라 주 어레이 (화면 오프로 본 DIV의 전환 가치와 다른 설정) 다음 업데이트 함수 호출을 변경하는 함수를 정의

이 기능은 적절한 여백을 버튼을 누르면 주어진 값으로 설정합니다.

function update() { 
    $('#div1').animate({ 
     'marginLeft' : states[0] + "%" 
    }); 
    $('#div2').animate({ 
     'marginTop' : states[1] + "%" 
    }); 
    $('#div3').animate({ 
     'marginLeft' : states[2] + "%" 
    }); 
} 
+0

도움을 주셔서 감사합니다. 이것은 정말 좋은 해결책입니다! 초기 클릭의 경우 div가 화면 상단에서 아래로 내려오고 이후에는 정상적으로 작동합니다. 또한 화면의 div는 해당 버튼이 여전히 활성 상태입니다. : 으악 http://jsfiddle.net/andyj/sprrxzgu/ – amj

+0

I를 (주 여백 기술은 버튼을 3 더 까다 롭습니다, 임은 여전히 ​​작동 그래서 그 위치를하는 방법을 알아 내려고) 너의 jsfiddle을 놓쳤다. 고마워요. 그걸 사용해 봤어요. – amj

+0

@ amj 페인트 나 다른 도구로 빠른 그림을 그리는 것을 반복하면 초기 상태를 더 잘 이해할 수 있습니다. 버튼 상태 등 ... CJ가 정확히했기 때문에 정확히 설명했습니다. 당신의 질문과 내가 아마 그것을 또한 할 방법. –

관련 문제