javascript - 左浮动元素与右浮动元素的滑动动画

标签 javascript jquery

我遇到了 jQuery 中滑动动画不一致的问题,我不太确定如何克服它。

我基本上有两个 float div 充当打开和关闭门的作用:

.door-one{
    float: left;
    width: 50%;
    height: 100%;
    background-image: url('dark-wood.png');
    box-shadow: inset 0 0 10px black;
}

.door-two{
    float: right;
    width: 50%;
    height: 100%;
    background-image: url('dark-wood.png');
    box-shadow: inset 0 0 10px black;
}

以及控制其 Action 的动画:

$(document).ready(function(){
    $('.home-button').click(function(){
        $('.door-one').animate({width: 'toggle'}, 1000);
        $('.door-two').animate({width: 'toggle'}, 1000);
    });
});

左侧 float 元素存在问题。您会看到,右侧的一个以一种平滑的 Action 从页面向右移动(图像和所有内容)。然而,左边的只是被“覆盖”起来,实际上并没有“滑”出页面。

有人熟悉这个吗?有没有办法让左侧元素正确滑出页面?

最佳答案

右门的背景图像有效,因为 float 导致它随着门宽度的缩小而向右移动。背景图像只是随波逐流。

左门的背景图像不起作用,因为门在宽度缩小时不会向左移动。

另一种方法是为左门的位置设置动画,而不是其宽度

您可以通过删除 float: left 并为左门添加绝对定位来实现此目的。我认为您不能为此目的向左切换。但您可以根据其当前偏移量向一个方向或另一个方向设置动画。

片段:

$('.home-button').click(function(){
  var d1= $('.door-one');
  if(d1.offset().left < 0) {
    d1.animate({left: '0'}, 1000);
  }
  else {
    d1.animate({left: '-50%'}, 1000);
  }
  $('.door-two').animate({width: 'toggle'}, 1000);
});
html,body {
  width: 100%;
  height: 100%;
  margin: 0px;
}

.door-one{
  position: absolute;
  width: 50%;
  height: 100%;
  background-image: url("http://www.iconsdb.com/icons/preview/royal-blue/stackoverflow-4-xxl.png");
  box-shadow: inset 0 0 10px black;
}

.door-two{
  float: right;
  width: 50%;
  height: 100%;
  background-image: url("http://www.iconsdb.com/icons/preview/royal-blue/stackoverflow-4-xxl.png");
  box-shadow: inset 0 0 10px black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="home-button">Click me</button>
<hr>
<div class="door-one"></div>
<div class="door-two"></div>

关于javascript - 左浮动元素与右浮动元素的滑动动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026709/

相关文章:

Javascript从窗口顶部滑动不可见的div

javascript - 在xpath中表达文本框的值?

javascript - 在each()内部创建var

javascript - 如何为属于多个用户池组的 AWS Cognito 用户切换 IAM 角色?

javascript - JQuery click() 未触发

javascript - 响应式设计中间的两个固定的响应式侧边栏和一个可滚动的内容 div

javascript - 使用 .html() 替换替换元素,有没有办法保留事件?

javascript - 在 "waiting for server"时运行 jquery 或 javascript 函数

javascript - 如何将登录页面加载为首页

javascript - jquery - 子菜单在主菜单的鼠标移开时隐藏