前端工程师分享几个CSS技巧

Posted ypppt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端工程师分享几个CSS技巧相关的知识,希望对你有一定的参考价值。

创建剪切动画

对于剪切动画,使用clip-path代替width/height,避免DOM重排导致性能过低。

.animate {
  width: 200px;
  height: 200px;
  background: #000;
  animation: 1s clip;
}
@keyframes clip {
  0% {
      clip-path: inset(0 0 0 0);
  }
  100% {
      clip-path: inset(0 100% 100% 0);
  }
}

  

clip-path也能用来进行其他规则/不规则图形的剪切

.clip {
  clip-path: polygon(0 100%, 50% 0, 100% 100%, 0 30%, 100% 30%); /* 多边形 */
  clip-path: circle(30px at 35px 35px); /* 圆形 */
  clip-path: ellipse(30px 25px at 35px 35px); /* 椭圆 */
}

  

 

优化动画性能

除了使用transform3d开启gpu加速,还可以使用will-change强制gpu加速优化动画性能

.animate {
  width: 200px;
  height: 200px;
  background: #000;
  animation: 1s clip;
  will-change: clip-path;
}
@keyframes clip {
  0% {
      clip-path: inset(0 0 0 0);
  }
  100% {
      clip-path: inset(0 100% 100% 0);
  }
}

  

 

实现长宽比

使用padding模拟,然后子元素使用绝对定位

/* 1:1 */
.container {
  width: 200px;
}
.container:after {
  display: block;
  content: ‘ ‘;
  padding-top: 100%;
}

/* 16:9 */
.container {
  width: 200px;
}
.container:after {
  display: block;
  content: ‘ ‘;
  padding-top: calc(100% * 9 / 16);
}

  

资源网站大全 https://55wd.com 我的007办公资源网站 https://www.wode007.com

垂直居中

我们常用的方式:

  • dislay: inline-block
  • top: 50% + transform: tranlsateY(-50%)
  • display: flex

其余还有padding上下撑高、display: table、position + margin: auto、绝对定位 + margin等等,这些属于不常用、特殊场景才能用、css3之前的hack方式,css3之后就不必使用这些来实现垂直居中,就不多说了。

其中display: flex属于万金油,大多数场景可以直接用它,但还是有些特殊的场景不能用:

  1. 子元素需要文字截断,为了兼容4.X的android浏览器,必须使用其他方式(一般是transform)
  2. 子元素需要多行布局,4.x的Android不支持flex-wrap,不能多行布局

 

以上是关于前端工程师分享几个CSS技巧的主要内容,如果未能解决你的问题,请参考以下文章

零基础学习前端的顺序是啥?

20 个让前端效率更高的 CSS 代码技巧

作为一枚web前端开发工程师 这些CSS 小技巧你值得掌握

分享几个简单的技巧让你的 vue.js 代码更优雅

web前端好学吗?如何能提高CSS编写技巧 提高Web前端开发效率

干货 | 分享几个工作之后才知道的工程技巧