- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个页面正在循环播放 HTML5 视频。当您向下滚动页面时,jQuery 会向 nav 元素添加一个类。然后 CSS 将过渡应用到 th 的 left 属性。在 Firefox 中,它运行良好,但 Chrome 会断断续续地播放动画,除非您继续滚动,否则无法完成动画。
我知道 Chrome 和 HTML5 视频存在很多性能问题。 Like this但我还没有找到很好的解决方案。
删除背景视频会导致 Chrome 中出现流畅的动画。但是,这不是一个非常沉重的视频(360p,~1MB)我想知道是否有比我正在做的更好的方法来应用类或执行动画,这可能有助于 Chrome 的性能。
这是一个正在进行中的网站的链接(它大部分没有样式,所以请不要讨厌 :)
我的 HTML
<!-- Left Bar Menu -->
<div class="leftbar scrollHandle">
</div>
<!-- Contains Header Video on Loop -->
<div class="videocontainer">
<video class="videobackground" poster="{{ "assets/video/poster.jpg" | asset_url }}" autoplay="true" loop="true">
<source type="video/mp4" src="{{ "assets/video/360.mp4" }}" />
<source type="video/webm" src="{{ "assets/video/360.webm" }}" />
</video>
</div>
我的Javascript:
var containerPosition = $( ".container" ).offset();
$( window ).scroll(function() {
if ( $( window ).scrollTop() > containerPosition.top ) {
$( ".scrollHandle" ).addClass( "show" );
} else {
$( ".scrollHandle" ).removeClass( "show" )
};
});
我的 CSS:
.leftbar {
position: fixed;
top: 0;
left: -$leftbarwidth;
transition: left 500ms;
z-index: 2;
width: $leftbarwidth;
height: 100%;
background-color: $grey;
&.show {
left: 0;
transition: left 500ms;
}
}
最佳答案
整个屏幕是painting在每个卷轴上。
这是(在您的情况下)由页面上的 fixed
元素引起的。固定元素会导致在每次滚动时都进行绘制,因为固定元素保持在原位,而下方的内容会移动,导致浏览器必须重新绘制屏幕才能正确显示内容。
Painting
In the painting stage, the render tree is traversed and the renderer's "paint()" method is called to display content on the screen. Painting uses the UI infrastructure component.
source
固定
,将您的视频包含在您的 div 和页面的顶部。translate()
而不是 position
上的转换。translateZ(0);
或 css will-change 将固定元素提升到它们自己的层.leftbar {
position: fixed;
top: 0;
left: -$leftbarwidth;
z-index: 2;
width: $leftbarwidth;
height: 100%;
background-color: $grey;
/* for performance improvements: */
-webkit-transition: -webkit-transform 0.5s ease;
-webkit-transform: translateZ(0); /* promotes to a layer */
&.show {
-webkit-transform: translate3d($leftbarwidth, 0, 0);
}
}
将元素提升到它们自己的层将启动硬件加速而不是使用 CPU,如果 fixed
元素有自己的层,它也不会在每次滚动时重新绘制屏幕。
-webkit-transform: translateZ(0); /* promotes to a layer */
我已经在 chrome 的开发人员工具中实时更改了网站上的代码,在一些小的 css 更改之后,我们从 <30 到 60fps,下面是图表:
在丢失一些固定元素后,您从 <30fps 变为稳定的 60fps,将视频包含到其 div,提升图层并使用 translate()
而不是 position: left
转换。
请记住,您不想将所有内容都放在一个层上,因为使用过多也会影响您的性能。所以要适度使用
I'm aware there are lots of performance issues with Chrome and HTML5video...
我不同意你的观点,如果你在编写网站时考虑到性能,你将获得更好或更好的性能,即使存在 native 性能问题(我认为 html5/chrome 没有。纠正我如果我错了)
关于jquery - HTML5 视频导致 chrome 停顿 CSS 过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23532690/
我使用此函数的目标是返回一个整数,该整数代表用户完成的所有习惯。我的数据库结构是习惯的集合,每个习惯都有一个包含其历史的子集合。下面的函数利用习惯列表,并使用习惯ID来获取该习惯的历史记录。我的问题是
我试图捕捉 AVPlayer 无法继续播放的时刻,以防没有更多媒体可用(网络太慢、信号丢失等)。如文档和不同示例中所述,我正在使用 KVO 来检测: item = [[AVPlayerItem all
我正在使用 npm 包 busboy 来解析多部分表单请求和写入流以将发送的文件写入磁盘。 这适用于小文件,但是当我尝试使用更大的文件 (7MB) 时,似乎只有大约 5MB 被写入磁盘,然后似乎事情停
提供一个最小的代码示例将很困难,但我将提供一些 sudo 代码以希望能够理解要点/问题。 TL;DR:我的工作队列启动,被中断,然后永远不会完成导致 CPU 停顿。 我正在为 PCIe 设备创建网
We are facing an issue on which we need some help. 简要说明: We have enabled SMP in Linux 2.
因此,我已准备好将更新上传到我的其中一个应用程序。一切都正确签名并且验证通过。然而,当尝试将 bundle 上传到 iTunes Store 时,它只是停在(在 XCode Organizer 中
我有一个在 Atmel AT91SAM9260EK 板上运行的嵌入式 Linux 系统,在该板上我有两个以实时优先级运行的进程。管理器进程使用 POSIX 消息队列定期“ping”工作进程以检查工作进
当我尝试运行命令mvn archetype:generate时,它在尝试下载maven-assemble-plugin-2.2-beta-5.jar时停止 无论我取消批处理多少次或关闭cmd并重新启动
我有一个页面正在循环播放 HTML5 视频。当您向下滚动页面时,jQuery 会向 nav 元素添加一个类。然后 CSS 将过渡应用到 th 的 left 属性。在 Firefox 中,它运行良好,但
我是一名优秀的程序员,十分优秀!