同时从左右滑动元素?

Posted

技术标签:

【中文标题】同时从左右滑动元素?【英文标题】:Slide elements in from left AND right at the same time? 【发布时间】:2012-12-08 20:22:44 【问题描述】:

我试图让两个元素 .show 一次单击即可滑入。我希望第一个元素(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>

【问题讨论】:

请澄清...点击什么? 和 是否已经存在并被隐藏或者它们会在点击时即时创建? 糟糕!对于那个很抱歉。我澄清了一点。 【参考方案1】:
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>

【讨论】:

【参考方案2】:

如果我是对的,这应该可以解决您的问题:

$('#slideleft').animate(
    marginLeft: '50px'
  , 1000, function() 
    // Animation complete.
);
$('#slideright').animate(
    marginRight: '200px'
  , 1000, function() 
    // Animation complete.
);

​查看演示here

这不是精确的解决方案,您可以根据需要对其进行修改。

【讨论】:

【参考方案3】:

除了 bukfixart 答案之外,您可能还想涵盖有人快速点击应该触发动画的任何内容的情况。

CSS:

#containerposition:relative; background:silver; height:400px;
#slideleft background:red; width:100px; height:100px; position:absolute;
#sliderig

ht 背景:蓝色 ;宽度:100 像素;高度:100px;位置:绝对;右: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/

【讨论】:

以上是关于同时从左右滑动元素?的主要内容,如果未能解决你的问题,请参考以下文章

Vue实现左右滑动内容区控制导航tab同时切换高亮

关于小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题

H5移动端禁止页面左右滑动

关于小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题

微信小程序——左右滑动切换页面

jQuery animate() 通过左右滑动来隐藏和显示元素