zoukankan      html  css  js  c++  java
  • 如何用纯 CSS 创作一个菱形 loader 动画

    效果预览

    在线演示

    按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

    https://codepen.io/comehope/pen/eKzjqK

    可交互视频教程

    此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

    请用 chrome, safari, edge 打开观看。

    https://scrimba.com/p/pEgDAM/c8eyJUE

    源代码下载

    本地下载

    每日前端实战系列的全部源代码请从 github 下载:

    https://github.com/comehope/front-end-daily-challenges

    代码解读

    定义 dom,一个容器中包含 9 个子元素:

    <div class="loader">
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
    </div>
    

    居中显示:

    body {
      margin: 0;
      height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      background-color: black;
    }
    

    定义容器和子元素尺寸,是一个大正方形里包含 9 个小正方形:

    .loader {
         10em;
        height: 10em;
        display: grid;
        grid-template-columns: repeat(3, 1fr);
        grid-gap: 0.5em;
    }
    

    把图案调整为大菱形中包含 9 个小菱形:

    .loader {
        transform: rotate(45deg);
    }
    

    以竖向的小菱形为单位,为小菱形块上色:

    .loader span {
        background-color: var(--c);
    }
    
    .loader span:nth-child(7) {
        --c: tomato;
    }
    
    .loader span:nth-child(4),
    .loader span:nth-child(8) {
        --c: gold;
    }
    
    .loader span:nth-child(1),
    .loader span:nth-child(5),
    .loader span:nth-child(9) {
        --c: limegreen;
    }
    
    .loader span:nth-child(2),
    .loader span:nth-child(6) {
        --c: dodgerblue;
    }
    
    .loader span:nth-child(3) {
        --c: mediumpurple;
    }
    

    定义动画效果:

    .loader span {
        animation: blinking 2s linear infinite;
        animation-delay: var(--d);
        transform: scale(0);
    }
    
    @keyframes blinking {
        0%, 100% {
            transform: scale(0);
        }
    
        40%, 80% {
            transform: scale(1);
        }
    }
    

    最后,为小菱形设置时延,增强动感:

    .loader span:nth-child(7) {
        --d: 0s;
    }
    
    .loader span:nth-child(4),
    .loader span:nth-child(8) {
        --d: 0.2s;
    }
    
    .loader span:nth-child(1),
    .loader span:nth-child(5),
    .loader span:nth-child(9) {
        --d: 0.4s;
    }
    
    .loader span:nth-child(2),
    .loader span:nth-child(6) {
        --d: 0.6s;
    }
    
    .loader span:nth-child(3) {
        --d: 0.8s;
    }
    

    大功告成!

    原文地址:https://segmentfault.com/a/1190000015208027

  • 相关阅读:
    反向代理实例
    nginx常用命令和配置
    nginx的安装
    Can Live View boot up images acquired from 64bit OS evidence?
    What is the behavior of lnk files?
    EnCase v7 search hits in compound files?
    How to search compound files
    iOS 8.3 JB ready
    Sunglasses
    现代福尔摩斯
  • 原文地址:https://www.cnblogs.com/lalalagq/p/10007342.html
Copyright © 2011-2022 走看看