【问题标题】:leaves space at the bottom on chrome在 chrome 的底部留出空间
【发布时间】:2014-05-19 20:09:28
【问题描述】:

这是一种响应式设计,transform: translateY(2000px); 已应用于底部的块。动画在 Chrome 中运行良好,但动画似乎在页面底部留下了空白区域。这仅在 Chrome 中发生。

项目链接:

http://50.87.144.37/~projtest/team/design/Call/

CSS:

.come-in {
  transform: translateY(2000px);
  -webkit-transform: translateY(2000px);
  animation: come-in 0.8s ease forwards;
  -webkit-animation: come-in 0.8s ease forwards;
}

.come-in:nth-child(odd) {
  animation-duration: 0.6s; /* So they look staggered */
  -webkit-animation-duration: 0.6s; 
}

JS:

 (function($) {

      $.fn.visible = function(partial) {

      var $t            = $(this),
          $w            = $(window),
          viewTop       = $w.scrollTop(),
          viewBottom    = viewTop + $w.height(),
          _top          = $t.offset().top,
          _bottom       = _top + $t.height(),
          compareTop    = partial === true ? _bottom : _top,
          compareBottom = partial === true ? _top : _bottom;

    return ((compareBottom <= viewBottom) && (compareTop >= viewTop));

      };

    })(jQuery);

    $(window).scroll(function(d){

       $(".unWcalls").each(function(i, el) {
       var el = $(el);
    if (el.visible(true)) {
       el.addClass("come-in"); 
    } 
  });
});

【问题讨论】:

  • 仅供参考,动画在 Mac 上的 Chrome 33 中根本不起作用。
  • 我不得不删除效果,因为我找不到任何解决方案。如果您愿意调查该问题,请在此处发布,我将进行更改,以便您查看。
  • 首先,祝贺您的前端设计。它非常实用且响应迅速。我想帮助您解决问题,但看不出 Firefox 和 Chrome 之间的区别。您使用的是哪个版本的 Chrome?是否愿意添加预期和错误实验的屏幕截图?
  • Chrome 版本 34.0.1847.116 m Firefox 28.0 Chrome 截图:postimg.org/image/71e6nefcj Firefox 截图:postimg.org/image/jaszki2z9 你可以看到,那个 chrome 在底部留下了很多空白。
  • 如果它可以帮助某人调查问题;这在 Chrome beta 频道 (35.0.1916.27) 中完美运行。我们可能想看看版本之间的主要修复。

标签: jquery css transform


【解决方案1】:

问题是您使用translateY(2000px) 将元素向下推,然后使用translate(0px) 将它们直接拉回。因此,如果有意义的话,Chrome 会在底部为它们留出一个位置。 这个jsFiddle 演示了这个问题。 (我没有打扰所有的供应商前缀)。

默认情况下,将它们向下翻译并在滚动时将它们向上拉,like so

如果仍然证明有问题,请为 margin-toptop on absolute position 设置动画。翻译对页面布局的影响不大,而且性能更好,但这是您的问题的一部分,对吗?

另外,我发现了一些问题:

  1. 您的 javascript 在这里的性能会很糟糕。每次用户向上或向下滚动时,即使在所有动画完成后,您也可以运行此函数来检查位置。我相信你可以重构很多。
  2. 您还必须考虑禁用 javascript 的用户。目前页面上没有任何内容。
  3. 我认为您的搜索框设置了一个最小宽度,它在窄屏幕上超出了它的边框。

【讨论】:

  • 成功了,非常感谢!这种方法有效:jsfiddle.net/kRNuW/1
【解决方案2】:

你可以试试下面的代码:

改变相对于静态的位置并检查它是否可以正常工作。

.sitewid {
    margin: 0 auto;
    position: static;
    width: 960px;
}

祝你好运……

【讨论】:

  • 我无法从这个类中删除相对,但我尝试了解决方案,但并没有删除错误。
猜你喜欢
  • 1970-01-01
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 2023-03-23
  • 2023-04-04
  • 2015-12-20
相关资源
最近更新 更多