从左和右同时滑动元素?

时间:2012-12-21 08:57:54

标签: jquery

我正在尝试使用两个元素。只需单击一下即可显示幻灯片。我想要从左边滑入的第一个元素(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>

3 个答案:

答案 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/