jQuery를 사용하여 화면 밖으로 div 슬라이드
이것은 약간의 도전입니다. 내가 찾는 것은 다음과 같습니다.
- 화면에 3div
- Div 1은 페이지 중앙 (가운데)에 있습니다.
- Div 2는 맨 왼쪽의 화면 바로 밖에 있습니다.
- Div 3은 맨 오른쪽 화면 바로 옆에 있습니다.
OnClick
, Div 1은 Div 2가 있던 위치 (왼쪽)로, Div 2는 화면에서 완전히 빠져 나가고, Div 3은 Div 3이 있던 위치 (가운데, 가운데)로 미끄러집니다. 새 div가 오른쪽에 도착합니다.
jQuery 애니메이션과 AddClass를 사용해 보았습니다. jQuery는 div를 화면 밖으로 밀어내는 것을 좋아하지 않습니다.
이견있는 사람?
내가 설명하는 내용의 예를 보려면 Groupon.com을 방문하십시오 . 나는 그것이 멋진 아이디어라고 생각하고 그것을 재현하는 도전을 스스로에게주었습니다. 지금까지는 주사위가 없습니다.
-디
이 같은?
http://jsfiddle.net/jtbowden/ykbgT/embedded/result/
http://jsfiddle.net/jtbowden/ykbgT/
이것이 기본 기능입니다. 더 많은 div 등으로 확장되지는 않지만 시작해야합니다.
핵심은 컨테이너에 요소를 래핑하고 오버플로를 숨기는 것입니다.
업데이트 :
다음은 모든 div (1보다 큼)를 처리하는 약간 더 나은 버전입니다.
http://jsfiddle.net/jtbowden/ykbgT/1/
더 단순화 :
http://jsfiddle.net/jtbowden/ykbgT/2/
코드 스 니펫 :
$('.box').click(function() {
$(this).animate({
left: '-50%'
}, 500, function() {
$(this).css('left', '150%');
$(this).appendTo('#container');
});
$(this).next().animate({
left: '50%'
}, 500);
});
body {
padding: 0px;
}
#container {
position: absolute;
margin: 0px;
padding: 0px;
width: 100%;
height: 100%;
overflow: hidden;
}
.box {
position: absolute;
width: 50%;
height: 300px;
line-height: 300px;
font-size: 50px;
text-align: center;
border: 2px solid black;
left: 150%;
top: 100px;
margin-left: -25%;
}
#box1 {
background-color: green;
left: 50%;
}
#box2 {
background-color: yellow;
}
#box3 {
background-color: red;
}
#box4 {
background-color: orange;
}
#box5 {
background-color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
<div id="box1" class="box">Div #1</div>
<div id="box2" class="box">Div #2</div>
<div id="box3" class="box">Div #3</div>
<div id="box4" class="box">Div #4</div>
<div id="box5" class="box">Div #5</div>
</div>
내가 잘못 해석했을 수도 있습니다. 나는 당신이 연속으로 세 개의 div를 원했고, 끝 부분에만 슬라이딩하고 그 밖의 것을 원했습니다.
(나는 당신이 이것을 위해 jQuery를 사용하고 있다는 것을 알고 있지만, 강제로 작동 시키려고 노력하면서 나를 화나게했다. 당신은 이것을 당신의 목적에 맞게 조정해야 할 것이다.)
Extending Jeff B answer, i've included Hammer.js and made a circular list.
$(function() {
$("#esq").click(function() {
console.log("Esquerda !");
var obj = $(".ativo");
$(obj).animate({
left: '-50%'
}, 500, function() {
$(this).css('left', '+150%');
$(this).appendTo('#container');
});
$(obj).next().animate({
left: '+50%'
}, 500, function() {
$(this).addClass('ativo');
$(obj).removeClass('ativo');
});
});
$("#dir").click(function() {
console.log("Direita !");
var obj = $(".ativo");
var prox = $(obj).siblings(":last");
$(obj).animate({
left: '+150%'
}, 500, function() {
$(prox).prependTo('#container');
});
$(prox).css('left', '-50%');
$(prox).animate({
left: '+50%'
}, 500, function() {
$(this).addClass('ativo');
$(obj).removeClass('ativo');
});
});
var hammertime = new Hammer(document.getElementById("container"));
hammertime.get('swipe').set({direction: Hammer.DIRECTION_HORIZONTAL});
hammertime.on('swipeleft', function() {
$("#esq").trigger("click");
});
hammertime.on('swiperight', function() {
$("#dir").trigger("click");
});
});
Example in: http://jsfiddle.net/tvLt1r9h/2/
And... not a year too late. If you want it to start on the first div, your css needs to look like this.
#box1 { background-color:#333; } #box2 { background-color:#333; left: -50%; } #box3 { background-color:#333; left: 150%; } #box4 { background-color:#333; left: 150%; } #box5 { background-color:#333; left: 150%; }
ReferenceURL : https://stackoverflow.com/questions/4741880/slide-a-div-offscreen-using-jquery
'programing' 카테고리의 다른 글
Xcode에 시스템 헤더 검색 경로 추가 (0) | 2021.01.18 |
---|---|
jquery를 사용하여 CSS를로드하는 방법 (0) | 2021.01.18 |
"IllegalArgumentException : 매개 변수는이 뷰의 하위 항목이어야합니다."오류 방지 / 캐치 (0) | 2021.01.18 |
상자 그림자가있는 CSS 말풍선 (0) | 2021.01.18 |
Python / Pandas-데이터 프레임 또는 매트릭스를보기위한 GUI (0) | 2021.01.18 |