【问题标题】:JQuery UI `Slide` Transition Issues With CSS `transformJQuery UI`Slide`转换问题与CSS`transform
【发布时间】:2013-10-10 17:31:54
【问题描述】:

当在具有 CSS transform 的元素上执行 JQueryUI 的 slide 转换时,元素的上半部分在动画期间被隐藏。有什么方法可以调整我的 JQueryUI 动画和/或 CSS 以防止这种情况发生?

JSFiddle:我已经用适当的代码创建了一个 JSFiddle - http://jsfiddle.net/9dTkL/4/

要完成垂直居中,我执行以下操作:

<style>
#banner-welcome {
  background-color: rgba(0, 0, 0, 0.5);
  position: absolute;
  width: 100%;
  top: 50%;
  transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  -o-transform: translateY(-50%);
  -webkit-transform: translateY(-50%);
}
</style>

CSS 中的toptransform 允许横幅落入中心。

要执行动画,我执行以下操作:

$('#banner-welcome').toggle(
  'slide',
  function()
  {
    document.location.href = "#/" + destination;
  }
);

当动画开始时,#welcome-banner 的上半部分消失,而下半部分开始动画。我已经从 CSS 中删除了 transform,一切正常——除了我的横幅不再居中。

由于 AngularJS 和 ng-views 的结合,我正在以这种方式执行垂直居中。我之前使用 JavaScript 来使元素居中,但是将逻辑添加到 $(window).resize() 事件会导致其他 ng-views 出现问题。我需要一种方法将其隔离到特定的ng-view

我可以用我的动画或 CSS 调整一些不会导致横幅上半部分消失的东西吗?

【问题讨论】:

  • 可以在任何地方进行测试吗?在链接或小提琴中?
  • 用 JSFiddle 更新。我还应该注意,我正在使用 JQueryUI 的 toggle 函数来执行此操作。

标签: javascript jquery jquery-ui css angularjs


【解决方案1】:

toggle 从 1.9 开始被移除:http://api.jquery.com/toggle-event/

所以请使用 animate 或 slideDown 或 slideUp 方法

transform 属性也不需要需要前缀

#banner-welcome {
    background-color: rgba(0, 0, 0, 0.5);
    position: absolute;
    width: 100%;
    top: 50%;

    transform: translateY(-50%);
}

您是否尝试过添加 transform-origin 属性

#banner-welcome {
    background-color: rgba(0, 0, 0, 0.5);
    position: absolute;
    width: 100%;
    top: 50%;

    transform-origin: 50% 50% 0;
    transform: translateY(-50%);
}

我在最新的 Firefox 24 中没有看到顶部消失

【讨论】:

  • 砰!我将动画调用切换到animate,从而消除了对 JQueryUI 的需求并修复了动画。我没有尝试transform-origin,因为刚刚更新到animate 就成功了。谢谢!
猜你喜欢
  • 2018-06-14
  • 1970-01-01
  • 2011-10-28
  • 2015-02-02
  • 2011-11-27
  • 1970-01-01
  • 2013-06-07
  • 2021-01-08
  • 2015-08-09
相关资源
最近更新 更多