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


    创建剪切动画

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

    .animate {
       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 {
       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 {
       200px;
    }
    .container:after {
      display: block;
      content: ' ';
      padding-top: 100%;
    }
    
    /* 16:9 */
    .container {
       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,不能多行布局
  • 相关阅读:
    Unity 深入解析合批(Batching)原理及失败原因
    ILRuntime作者林若峰分享:优化 Dots URP 性能优化 (干货满满)
    unity Mesh绘制网格线
    Shder基础知识
    UnityEditor工具链开发的常用小技巧与示例
    磁盘文件分析清理工具
    波函数坍塌算法(Wave Collapse Function)实现随机地图
    视觉小说 文字游戏引擎 ink 可配合Unity
    c# 字典键值排序
    unity文件夹复制
  • 原文地址:https://www.cnblogs.com/ypppt/p/13277010.html
Copyright © 2020-2023  润新知