视差效果介绍和使用(5)
2024-09-26 来源:飞速影视
这种方法确实适用于您处理大图像(或其他可以轻松写入画布的元素)的情况,当然处理大块文本会更具挑战性,但根据您的站点,它可能被证明是最合适的解决方案。 如果您 必须 处理画布中的文本,则必须使用 fillTextAPI 方法,但它是以可访问性为代价的(您只是将文本光栅化为位图!),您现在必须处理换行和一大堆其他问题。 如果你可以避免它,你真的应该这样做,并且使用上面的转换方法可能会更好地为你服务。
鉴于我们尽可能地采用这一点,没有理由假定视差工作应该在画布元素内完成。 如果浏览器支持它,我们可以使用 WebGL。 这里的关键是 WebGL 拥有所有 API 到显卡的最直接路径,因此,它是实现 60fps 的最有可能的候选者,尤其是在网站的效果很复杂的情况下。
您的直接反应可能是 WebGL 太过分了,或者它在支持方面并不普遍,但是如果您使用Three.js 之 那么您总是可以回退到使用画布元素,并且您的代码以一致的方式抽象和友好的方式。 我们需要做的就是使用Modernizr 来检查适当的 API 支持:
// check for WebGL support, otherwise switch to canvasif (Modernizr.webgl) { renderer = new THREE.WebGLRenderer();} else if (Modernizr.canvas) { renderer = new THREE.CanvasRenderer();}
然后使用 Three.js 的 API,而不是自己处理上下文。 这是一个演示 ,假设您的浏览器也支持!
作为对这种方法的最后一个想法,如果您不是向页面添加额外元素的忠实拥护者,您始终可以使用画布作为背景元素 在 Firefox 和基于 WebKit 的浏览器中 显然,这并不普遍,所以像往常一样,你应该谨慎对待它。
这是你的选择
开发人员默认使用绝对定位元素而不是任何其他选项的主要原因可能只是无处不在的支持。 这在某种程度上是虚幻的,因为目标浏览器可能会提供极差的渲染体验。 即使在当今的现代浏览器中,使用绝对定位元素也不一定会带来良好的性能!
转换,当然是 3D 类型,让您能够直接使用 DOM 元素并实现稳定的帧速率。 这里成功的关键是尽可能避免绘画,而只是尝试移动元素。 请记住,WebKit 浏览器创建层的方式不一定与其他浏览器引擎相关,因此请务必在使用该解决方案之前对其进行测试。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号