微软如何改进 Microsoft Edge 的滚动效果?
微软 Microsoft Edge 团队在博客分享了他们如何改进新版 Edge 的滚动效果,包括改进滚动动画和优化滚动体验(交互和外观)。
在旧版 Edge 中,团队通过与操作系统 Compositor (DirectComposition) 和输入 API (Direct Manipulation) 的紧密集成,实现了与 Windows 系统一致的平滑滚动效果(Smooth Scrolling)。由于两者都是微软的产品,所以 Edge 团队在实现此效果上并没有太大的阻碍。
不过与操作系统紧密集成的弊端也显而易见 —— 难以将同样的体验移植到其他操作系统上,其中就包括旧版 Windows 系统。更糟糕的是,此方案虽然独立于浏览器主线程来处理输入和输出以提升响应速度,并提供了稳定的帧率,但这对于根据帧更新执行更新的脚本却效果不佳,从而导致出现抖动的情况,这也是当时团队收到的最常见反馈之一。
为此,在新版 Microsoft Edge 中,团队从过去的经验中吸取教训,希望改进 Microsoft Edge 和所有基于 Chromium 的浏览器的滚动效果,并在最开始的时候就明确了一件事:仅仅把此前与 Windows 操作系统同样的依赖关系照搬过来是不可行的,因为 Microsoft Edge 和其他基于 Chromium 的浏览器在兼容性和跨平台要求上有很高的标准。
在此基础上,Edge 团队再考虑到用户反馈和技术方案,以及开源准则,他们决定先将精力最大程度地集中在优化滚动效果和提升性能上。
总结起来,Edge 团队对 Microsoft Edge 滚动效果的改进包括:
-
改进滚动动画曲线
-
使用基于百分比的滚动
-
引入滚动到底时的回弹效果
-
引入旧版本 Edge 的部分滚动效果
改进滚动动画曲线
改进后的动画曲线使得滚动速度的变化更自然,滚动时间稍微变长,让用户更能感受到动画效果。简单来说,这条曲线让通过鼠标滚轮、键盘或滚动条进行的滚动以及触控滚动都有了旧版 Edge 中的顺滑效果。
Chromium 的部分上游变化:
- Add Impulse-style scroll animations
- Refactored ScrollOffsetAnimationCurve to facilitate new animations
- Implement new Windows fling animation curve
- Fling Animation Curve – Part 1
- Fling Animation Curve – Part 2
使用基于百分比的滚动(Percent-based scrolling)
滑动滚动条时,Chromium 使用了固定的的滚动增量值(使用鼠标滚轮增加 100px,使用滚动条的点击按钮或键盘箭头增加 40px)。Edge 团队改变了这一行为,它采用旧版 Edge 中的方案:通过滚动条高度来计算滚动增量值而不是,这样做的好处是当滚动条高度较小时,浏览器依然能提供合理的滚动范围以浏览内容。
Chromium 的部分上游变化:
- Add percent-based scrolling for Windows
- Add main thread percentage scrolling for keyboard and scrollbar
引入滚动到底时的回弹效果(Overscroll bounce)
Overscroll bounce 主要是向用户发出一个信号,告知他们已滚动至页面的底部或顶部,类似的效果也被称为橡皮筋特效或弹性滚动。Microsoft Edge 为任何方向的滚动都加入了此效果。
引入旧版 Edge 的部分滚动效果
scroll chaining vs. scroll latching
scroll chaining 是旧版 Edge 使用的方案,它提供的效果是当子滚动条到达边界时,父滚动条会自动跟随滚动。
类似的场景,Chromium 已经有了 scroll latching 的概念,两者不同之处在于后者将所有的滚动操作集中到同一个滚动跳上。Edge 团队指出几乎所有用户都更喜欢 scroll chaining (97% 好评),所以他们决定在 Microsoft Edge 中使用 scroll chaining,不过不打算将其引入 Chromium。
惯性滑动加速(Fling boosting)
此效果主要是提升快速滚动页面时的速度,同时整合了动画曲线。例如当用户希望快速拉至页面底部,fling boosting 不但提供了友好的动画效果,还加快了滚动速度。
微软希望 Microsoft Edge 不完全照搬 EdgeHTML 的方案,而是结合 Chromium 和 EdgeHTML 的优点进行改进。为此,他们正在评估其他效果,并研究如何在即将到来的更新中应用这些改进,这些效果目前包括:
- 子滚动条中的回弹效果(overscroll effect)
- 缩放操作的回弹效果

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
华为加入 OIN 社区,签署互不侵犯 Linux 专利协议
4月2日,华为宣布加入专利保护社区 OIN(Open Invention Network),成为 OIN 社区的被许可方和成员,同意与其它 OIN 成员以免专利使用费和互不侵犯(不进行专利主张或行使其专利权)的形式交叉授权其专利。 华为是 Linux 基金会和其他开源组织的长期成员,包括 OpenStack 基金会和云原生计算基金会。去年10月,华为成为Eclipse 基金会的战略成员。 外媒 The Register 认为,华为遭遇的贸易制裁,以及与谷歌之间的授权问题都是该公司进一步拥抱开源的原因。OIN CEO Keith Bergelt 告诉 The Register,华为面临的政治压力让公司领导层对华为的定位和责任感有了深刻的认知——不仅要成为开源社区中的好公民,还必须成为一名模范公民。他同意华为试图保护自己的说法。 Bergelt 提到希望中国更多的企业加入 OIN,例如 ZTE、中国电信和中国移动等企业。 关于 OIN OIN 是史上最大的专利保护社区,支持开源软件 (OSS) 关键元素 Linux 的自由开发环境。核心技术专利保护是 OSS 内部的文化规范,因此只有加入 ...
- 下一篇
MySQL 8.0 来了,逆之者亡...
MySQL 8.0它lei了,大势浩浩荡荡,谁也挡不住 MySQL被Sun收购后,搞了个过渡的6.0版本,没多久就下线了(有一次居然听说有人在线上用6.0版本,我惊得下巴都掉了)。被Oracle收购后,终于迎来了像样的5.6版本,之后就是5.7、8.0版本。这么看来,Sun的衰亡不无道理。 P.S,上面说了6.0版本号已被用过,7.x系列版本专用于NDB Cluster,因而新版本号从8.0开始。 刚被Oracle收购时,大家恐慌的不行,貌似还甚至搞了个联合签名请愿活动来着,可惜真的是应了那句话“天下大势,浩浩汤汤,顺之者昌,逆之者亡”。 创始人Monty又折腾了MariaDB,可惜也是不温不火的。MySQL 8.0发布后,MariaDB宣布不打算继续合并InnoDB引擎,这下就更尴尬了,以后还能愉快的玩耍了吗?这两年Monty老先生还时不时来中国露个脸,但似乎有那么一丢丢变味了。 闲话少说,一起来看看8.0都有哪些真香特性吧。 1. 为什么是8.0 作为迄今为止,地表最强的MySQL版本,8.0被寄予厚望。 虽然在很多人眼里,MySQL 8.0无非是有个"好爹",很多新特性是照着Or...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池