我正在尝试使用两个元素。只需单击一下即可显示幻灯片。我想要从左边滑入的第一个元素(img)和另一个元素(div)在点击按钮(div)时从右边滑入。然后,当点击另一个按钮时,我希望前两个元素逐渐消失,接下来的两个元素(对应于单击的按钮)会滑入。
任何人都知道如何才能做到这一点?我是JQuery的新手。这就是我对html的看法。
<div id="button1">Button1</div>
<div id="button2">Button2</div>
<div id="button3">Button3</div>
<div id="container">
<img id="slideleft1" src="img.png">
<div id="slideright1">I need this div to slide in from the right.</div>
</div>
<div id="container">
<img id="slideleft2" src="img.png">
<div id="slideright2">I need this div to slide in from the right.</div>
</div>
<div id="container">
<img id="slideleft3" src="img.png">
<div id="slideright3">I need this div to slide in from the right.</div>
</div>
答案 0 :(得分:0)
var $container = $( '#container' );
var $left = $( '#slideleft', $container ); // handle to the image
var $right = $( '#slideright', $container ); // handle to the div
// apply some styles to the container (could also be done with pure css)
$container.css( {
'position' : 'relative', // to use absolute positions inside
'left' : '0px',
'top' : '0px'
} );
// positionate the image outside from the container and hide it
$left.css( {
'postion' : 'absolute',
'left' : (-$left.width()) + 'px',
'opacity' : '0'
} );
// positionate the div outside from the container and hide it
$right.css( {
'postion' : 'absolute',
'right' : (-$right.width()) + 'px',
'opacity' : '0'
} );
// will be executed when the event "slideIn" is triggered to your container element
$( '#container' ).on( 'slideIn', function() {
var $container = $( this );
var $left = $( '#slideleft', $container ); // handle to the image
var $right = $( '#slideright', $container ); // handle to the div
// slide and fade in the left image
$left.animate( {
'left' : '0px',
'opacity' : '1'
} );
// slide and fade in the right div
$right.animate( {
'right' : '0px',
'opacity' : '1'
} );
} );
触发事件,你可以在你的HTML
中写这样的东西<a onclick="$('#container').trigger('slideIn');">click me</a>
答案 1 :(得分:0)
如果我是对的,这应该可以解决你的问题:
$('#slideleft').animate({
marginLeft: '50px'
}, 1000, function() {
// Animation complete.
});
$('#slideright').animate({
marginRight: '200px'
}, 1000, function() {
// Animation complete.
});
请参阅演示here。
这不是确切的解决方案,您可以根据自己的需要进行修改。
答案 2 :(得分:0)
添加到bukfixart答案,您可能还想要覆盖有人在触发动画时快速点击的情况。
CSS:
#container{position:relative; background:silver; height:400px;}
#slideleft{ background:red; width:100px; height:100px; position:absolute;}
#sliderig
ht {background:blue;宽度:100像素;高度:100像素;位置:绝对的;右:0}
JS:
var shown = true;
$('body').click(function() {
if(!$("#slideleft").is(':animated')) {
if (shown) {
$('#slideleft').animate({
left:"-100px"
}, 500, function() {
shown = !shown;
});
$('#slideright').animate({
right:"-100px"
}, 500, function() {
});
} else {
$('#slideleft').animate({
left:"0px"
}, 500, function() {
shown = !shown;
});
$('#slideright').animate({
right:"0px"
}, 500, function() {
});
}
}
});
在这里,有一个小提琴:http://jsfiddle.net/Rm4zy/