CSS知识总结

108 阅读2分钟

1. 浏览器渲染原理。

为了能够在浏览器上显示流畅清晰的动画,面对市场上主流的60hz显示器,浏览器需要将每一帧的渲染时间在16ms完成画面渲染。 浏览器简单的渲染过程分为:Javascript -->样式-->布局-->绘制-->合成。细分过程,就是根据HTML构建DOM(HTML树);然后根据 CSS 构建 CSSOM(CSS树);将两个树 DOM 和CSSOM 合成一棵 Render tree;接下来考虑布局,也就是文档流、盒模型、计算大小和位置等;最后经过绘制,将边框颜色,文字颜色,阴影等画出来,根据层叠关系,在浏览器上展示画面。下面为 DOM 和 CSSOM 合成 Render Tree 的简单过程。

1.png

2. CSS动画的两种做法( transition 和 animation)。

答:css动画的有两种常见做法,分别是transitionanimation

transition:作用就是给整个动画过程添加中间帧。

后面可以携带四种参数:属性名称,过渡的时长,过渡的方式以及延迟。过渡方式常见取值有linear(匀速),ease(默认),ease-in(速度先慢后快),ease-out(速度先快后慢),ease-in-out(速度先慢中间比较快,后慢)。常见的和transform使用,但是transition知识触发了特定的规则,也可以单独使用。 演示代码如下:

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
#heart {
  margin: 100px;
  position: relative;
  display: inline-block;
  transition: all 0.5s ease;
}
#heart:hover{
  transform:scale(1.5);
}

animation:单词的意思就是动画。

animation的参数一部分和transition类似,都有时长,延迟和过渡方式;但是它还有一些其他常见的参数,如次数,方向,填充模式,是否暂停。方向可以选择reverse,alternate和alternate-reverse等;填充模式有forwards,backwards,both和none;暂停据只有paused和running。 另外,animation需要声明关键帧@keyframe。 演示代码如下。

    * {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
#heart {
  margin: 100px;
  position: relative;
  display: inline-block;

}
#heart.start{
    animation: heart 0.8s infinite alternate-reverse;
}
@keyframes heart{
  0%{
    transform:scale(1.0);
  }
  100%{
    transform:scale(1.5);
  }
}

transform:转变

这是一个静态属性,用于改变默认位置下的一些数值。

  • 位移translate:translateX(100px);trnaslateY(100px);
  • 位移缩写translate:transform:translate(x,y); transform3d(x,y,z);
  • 缩放scale:transform:scale(1.5);
  • 旋转rotate:transform: rotate(45deg); 默认顺时针方向。
  • 倾斜skew:transform:skewx(45deg); 默认向左倾斜。

3. 总结

CSS不像其他语言一样,存在一些逻辑关系,如果遇见一个不懂的函数,其他语言可以通过名字,大致了解它的作用以及会产生什么影响。但是,CSS学习不需要很强的逻辑关系,反而需要一些想象力,你想到什么好点子或方式,只需要往上添加,没有为什么,just do it就行。