1、渲染原理

根据HTMl构建HTML树(DOM)

根据CSS构建CSS树(CSSDOM)

将HTML和CSS两棵树合并为一颗渲染树(render tree)

Layout布局(文档流、盒模型、计算大小和位置)

Paint绘制(把边框颜色、文字颜色、阴影等画下)

Compose合成(根据层叠关系展示画面)

2、CSS性能优化

2.1、 了解:JS三种更新方式

JS/CSS>样式Style>布局Layout>绘制paint>合成Composite。div.remove(),其他元素relayout

JS>样式Style> 绘制paint>合成Composite。改变颜色,直接repaint+composite

JS>样式Style >合成Composite。改变transform,只需composite

2.2、经验:

前端高手不用left做动画,用transform变形

位移:translate

缩放:scale

旋转:rotate

倾斜:skew

transform:translateX(0->300px)会直接修改后等一会被合成

原理

性能:没有重新绘制,所以比left性能好

常用:

inline元素不支持translate,需要先变成block

2.3、 性能优化正题

无技术含量,Google写的文章

JS优化:requestAnimationFrame代替setTimeout或setInterval

CSS优化:使用will-change 或 translate

3、CSS 动画的两种做法(transition 和 animation)

3.1、 transition过渡

语法 transition:属性名 时长 过渡方式 延迟

例子 transition: margin-right 2s ease-in-out .5s;

3.2、 animation属性

语法:animation:动画名 | 时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停;

例子:animation: .5s linear 1s infinite alternate slidein;

3.3、 实战

<!DOCTYPE html>

<html>

  <head>

    <meta charset="utf-8">

    <title>JS</title>

    <style>

    *{

  box-sizing:border-box;

}

#heart{

  display: inline-block;

  margin:100px;

  position: relative;

  animation: .6s heart infinite alternate-reverse;

}

@keyframes heart {

  0%{

    transform: scale(1);

  }

  100%{

    transform: scale(1.2);

  }

}

#heart.end{

  display:none;

}

#heart.start{

  display: inline-block;

}

#heart:hover{

  transform: scale(1.2); 

}

#heart>.left{

  background: red;

  width:50px;

  height:50px;

  position: absolute;

  bottom:50px;

  left:-50px;

  border-radius:50% 0 0 50%;

  transform:rotate(45deg) translateX(31px);

}

#heart>.right{

  background: red;

  width:50px;

  height:50px;

  position: absolute;

  bottom:50px;

  right:-50px;

  border-radius:0 50% 50% 0;

  transform:rotate(-45deg) translateX(-31px);

}

#heart>.bottom{

  width:50px;

  height:50px;

  background: red;

  transform:rotate(45deg);

}

    </style>

  </head>

  <body>

    <div id="heart">

      <div class="left"></div>

      <div class="right"></div>

      <div class="bottom"></div>

    </div>

  </body>

</html>

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

触发修改文章时间【fastadmincms开发记录】|fastadmincms二次开发,触发,修改,文章,时间,fastadmin,ms,开发,记录
触发修改文章时间【fastadmincms开发记录】
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】|fastadmincms二次开发,在tp5中,过滤,输入,的零,宽度,字符,fastadmin,ms,开发,记录
在tp5中过滤输入的零宽度字符【fastadmincms开发记录】
处理tag标签中的0宽空格【fastadmincms开发记录】|fastadmincms二次开发,处理,tag,标签,中的,0宽,空格,fastadmin,ms,开发,记录
处理tag标签中的0宽空格【fastadmincms开发记录】
添加专题时tags标签id出错【fastadmincms开发记录】|fastadmincms二次开发,添加,专题,时tags,标签,id,出错,fastadmin,ms,开发,记录
添加专题时tags标签id出错【fastadmincms开发记录】
20230518----模板 广告【fastadmincms开发记录】|fastadmincms二次开发,20230518,模板,广告,fastadmin,ms,开发,记录
20230518----模板 广告【fastadmincms开发记录】
cms添加视频模型【fastadmincms开发记录】|fastadmincms二次开发,ms,添加,视频,模型,fastadmin,开发,记录
cms添加视频模型【fastadmincms开发记录】
新增单篇收费复制功能【fastadmincms开发记录】|fastadmincms二次开发,新增,单篇,收费,复制,功能,fastadmin,ms,开发,记录
新增单篇收费复制功能【fastadmincms开发记录】
添加开会员折扣功能【fastadmincms开发记录】|fastadmincms二次开发,添加,开会,折扣,功能,fastadmin,ms,开发,记录
添加开会员折扣功能【fastadmincms开发记录】

历史上的今天:05月02日

热门专题

云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
卓越综合高中|卓越综合高中
卓越综合高中
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
云南综合高中|云南综合高中
云南综合高中
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部