gnosis23 / hello-world-blog

还是 issues 里面写文章方便
https://bohao.work
0 stars 0 forks source link

CSS3一二三 #62

Open gnosis23 opened 4 years ago

gnosis23 commented 4 years ago

CSS 3

gnosis23 commented 4 years ago

will-change

根据 MDN 上所说,will-change 会提示浏览器元素的某些属性会发生变化。浏览器会在元素变化前进行优化。这些优化能预先进行。

误区

用法

当我们要改变一个元素的 opacity or transform 时候,修改 will-change 属性

.box {
    will-change: opacity, transform;
}

原理

引用自 https://time.geekbang.org/column/article/141842

浏览器渲染引擎生成图像分几个阶段:重排、重绘、合成。其中重排和重绘都是在渲染进程的主线程上执行,比较耗时;而合成线程是在渲染进程的合成线程上执行,执行速度快,且不占用主线程。

will-change 能提前告诉浏览器元素的哪些属性需要变化,浏览器能单独为元素准备一个独立层,变化的时候让合成线程去处理,不会涉及主线程。顺带一提,这也是 css 动画比 JavaScript 动画高效的原因。

gnosis23 commented 4 years ago

clip-path

裁剪路径,提供了多个裁剪函数可供选择

polygon

指定四个角的位置

clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
gnosis23 commented 4 years ago

filter 滤镜效果

drop-shadow

用法和作用同 box-shadow,区别是

sepia

一种降饱和度的橙黄色染色效果...

saturate

另一种饱和度滤镜...

gnosis23 commented 4 years ago

Transform

gnosis23 commented 4 years ago

box-shadow

value

example

.one-edge-shadow {
  box-shadow: 0 8px 6px -6px black;
}

.multiple-border {
box-shadow: 
  inset 5px 5px 10px #000000, 
  inset -5px -5px 10px blue;
}

Reference

gnosis23 commented 4 years ago

transition

可以让属性变化时平滑地过度显示过度。

value

gnosis23 commented 4 years ago

animation

value

keyframes

问:from(即0%), to(即100%) 的默认值 ? 答:如果不指定,就使用当前元素的style。

例子

@keyframes bounce {
      60%, 80%, to { 
        transform: translateY(350px);
        animation-timing-function: ease;
      }
      70% { transform: translateY(250px);}
      90% { transform: translateY(300px);}
}