正文
animation: searchLights 2s ease-in 0s infinite; } @keyframes searchLights { 0% { } 75% { left: -100px; top: 0; } 100% { left: 120px; top: 100px; } }
渲染效果
从chrome可以看出,渲染时间花费了1454ms:
使用后
代码
在class为card中添加 content-visibility: auto;: .card { position: relative; overflow: hidden; transition-duration: 0.3s; margin-bottom: 10px; width: 200px; height: 100px; background-color: #ffaa00; content-visibility: auto; } .card:before { content: ‘’; // …
渲染效果
可以明显的看到,使用content-visibility: auto;
后渲染时间只需要381ms,性能提升了近4倍!而且随着元素内容变复杂,提升的性能会有更明显的上升。
再从下图的dom结构变化中也可以看到,当card未出现在屏幕可见区域内是,其内容(::before等动画)在元素出现在可见效果时才出现:
缺陷
–
兼容性
content-visibility是chrome85今年新增的特性,所以目前兼容性还不高,但是相信兼容性的问题在不久的将来会得到解决。目前兼容性如下:
部分元素导致浏览器渲染出问题
问题
当元素的部分内容如标签这种,元素的高度是有图片内容决定的,因此在这种情况下,如果使用
content-visibility
,则可见视图外的img初始未渲染,高度为0,随着滚动条向下滑动,页面高度增加,会导致滚动条的滚动有问题。
src=“https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1057266467,784420394&fm=26&gp=0.jpg” alt=“小狗” /> src=“https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=1057266467,784420394&fm=26&gp=0.jpg” alt=“小狗” />
效果如下,可以看出滚动条随着图片的呈现,会出现问题:
解决思路
解决此问题,如果在已知元素高度的情况下,可以使用contains-intrinsic-size
属性,为上面的card添加:contains-intrinsic-size:312px;
,这会给内容附一个初始高度值。(如果高度不固定也可以附一个大致的初始高度值,会使滚动条问题相对减少)。
修改代码如下:
最后前端到底应该怎么学才好?
如果你打算靠自己摸索自学,那么你首先要了解学习前端的基本大纲,这是你将要学习的主要内容,理解以及掌握好这些内容,便可以找到一份初级的前端开发工作。你还需要有一套完整的前端学习教程,作为初学者最好的方式就是看视频教程学习,初学者容易理解接受。
不要选择买书学习,这样的方式没有几个人能学会,基本都是看不下去书,也看不懂书。如果喜欢看书的学弟,可以买一些经典的书籍作为辅助即可,主要还是以看教程为主。每天抽出固定几个小时学习,做好长期学习的准备。学习编程并不是每天光看视频,你学习编程最重要的目的是为了编写软件产品,提供给大众使用,所以用手写出代码实现功能才是我们要做的事情。