css工程师技巧,前端工程师分享几个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属于万金油,大多数场景可以直接用它,但还是有些特殊的场景不能用:

子元素需要文字截断,为了兼容4.X的Android浏览器,必须使用其他方式(一般是transform)

子元素需要多行布局,4.x的Android不支持flex-wrap,不能多行布局

原文:https://www.cnblogs.com/ypppt/p/13277010.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值