【问题标题】:Chrome: weird scroll bar only during certain transition effectsChrome:仅在某些过渡效果期间出现奇怪的滚动条
【发布时间】:2014-12-15 14:06:00
【问题描述】:

我正在使用 jquery 在我的全屏背景图像上应用以下效果:

function moveDown(){
    $('body').find('img').delay($delay*1000).animate({top: "+="+$distance}, $seconds*1000,'swing')
}
function zoomOut(){
    $('body').find('img').css({"transition":"all 6s linear","transform":"scale(1)"});
}
function zoomIn(){
    $('body').find('img').delay($delay*1000).animate(obj,6500,'linear');
}

这很好用,但只有在使用第二个函数 zoomOut() 时我才在 Chrome 中遇到问题。在执行转换时,我在正常滚动条旁边看到一个奇怪的滚动条,这个滚动条仅在转换进行时出现。正如你在这张图片上看到的那样

过渡后它又消失了,过渡期间又出现了??

有人对如何摆脱第二个滚动条有任何想法吗?

【问题讨论】:

  • 代码将有助于诊断此问题,即受影响对象上的 CSS。
  • 没有受影响的对象,只有全屏bg图像
  • BG 图片是实际的background-iamge 还是拉伸到页面宽度和高度的img 标签??

标签: jquery css google-chrome scrollbar css-transitions


【解决方案1】:

一开始我会怀疑两件事。

您正在为 moveDown 和 zoomIn 使用基于 javascript 的动画,然后在 zoomOut 上设置 CSS 动画值。尽量与您的动画保持一致,并尽可能使用 CSS 动画,因为与 javascript 动画相比,它们的性能更好(使用硬件加速等)。

当您设置该 CSS 过渡值时,当您的另一个动画触发时,它不会被“取消应用”,这意味着在 moveDown 或 zoomIn 中完成的每个增量更改都会应用六秒的过渡。

如果您想要快速而肮脏的修复,您可以将以下块放入 zoomIn 和 moveDown:

$('body img').css({'transition':'none', 'transform':'none'});

但理想情况下,您应该将所有这些 CSS 转换封装在一个类中,然后通过 JavaScript 应用该类。

只有我的 2 美分

【讨论】:

  • 您对动画的一致使用肯定是正确的,并且会这样做。但建议的修复似乎不是第二个出现的滚动条的解决方案......
猜你喜欢
  • 2018-05-27
  • 2018-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 2017-03-05
  • 1970-01-01
  • 2021-03-10
相关资源
最近更新 更多