zoukankan      html  css  js  c++  java
  • 纯CSS3实现antd旋转的四个小球加载中的动画特效

    起因是接口超时了,导致项目页面进不去,一直转圈,我于是注意到了这个小东西:

     还挺可爱哈,转起来眼睛都快晃瞎了。

    于是我出于  无聊  旺盛的学习欲,照着antd的样式和速度改造了一下,做出来的……怎么说呢,好像也差不多吧:

     嘎嘎真牛批啊我!

    所以把代码贴一下,万一以后要做类似的,直接拿去用,舒服~

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            #preloader{
                position:relative;
                 28px;
                height: 28px;
                transform: rotate(45deg);
                animation: preloader 1.2s infinite linear;
            }
            #preloader span{
                 10px;
                height: 10px;
                position:absolute;
                background:#1890ff;
                border-radius: 100%;
                display:block;
                transform-origin: 50% 50%;
                opacity: .3;
                animation: preloader_span 1.2s infinite linear;
            }
            #preloader span:nth-child(1){
                top: 0;
                left: 0;
            }
            #preloader span:nth-child(2){
                top: 0;
                right: 0;
                animation-delay: 0.4s;
            }
            #preloader span:nth-child(3){
                right: 0;
                bottom: 0;
                animation-delay: 0.8s;
            }
            #preloader span:nth-child(4){
                bottom: 0;
                left: 0;
                animation-delay: 1.2s;
            }
            @keyframes preloader {
                from { transform: rotate(0deg); }
                to { transform: rotate(360deg); }
            }
            @keyframes preloader_span {
                0% { opacity: .3; }
                50% {  opacity: 1; }
                100% { opacity: .3; }
            }
        </style>
    </head>
    <body>
        <div id="preloader">
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </div>
    </body>
    </html>
    

      

    写完我又突发奇想想去看下antd怎么写的,总之万变不离其宗,,css3玩出花就对了,先记录下来吧:

    这是html:

    <div class="ant-spin ant-spin-lg ant-spin-spinning">
        <span class="ant-spin-dot ant-spin-dot-spin">
            <i class="ant-spin-dot-item"></i>
            <i class="ant-spin-dot-item"></i>
            <i class="ant-spin-dot-item"></i>
            <i class="ant-spin-dot-item"></i>
        </span>
    </div>        
    

      

    这是css:

    /* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
    /* stylelint-disable no-duplicate-selectors */
    /* stylelint-disable */
    /* stylelint-disable declaration-bang-space-before,no-duplicate-selectors,string-no-newline */
    .ant-spin {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
      color: rgba(0, 0, 0, 0.85);
      font-size: 14px;
      font-variant: tabular-nums;
      line-height: 1.5715;
      list-style: none;
      font-feature-settings: 'tnum', "tnum";
      position: absolute;
      display: none;
      color: #1890ff;
      text-align: center;
      vertical-align: middle;
      opacity: 0;
      transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
    }
    .ant-spin-spinning {
      position: static;
      display: inline-block;
      opacity: 1;
    }
    .ant-spin-nested-loading {
      position: relative;
    }
    .ant-spin-nested-loading > div > .ant-spin {
      position: absolute;
      top: 0;
      left: 0;
      z-index: 4;
      display: block;
       100%;
      height: 100%;
      max-height: 400px;
    }
    .ant-spin-nested-loading > div > .ant-spin .ant-spin-dot {
      position: absolute;
      top: 50%;
      left: 50%;
      margin: -10px;
    }
    .ant-spin-nested-loading > div > .ant-spin .ant-spin-text {
      position: absolute;
      top: 50%;
       100%;
      padding-top: 5px;
      text-shadow: 0 1px 2px #fff;
    }
    .ant-spin-nested-loading > div > .ant-spin.ant-spin-show-text .ant-spin-dot {
      margin-top: -20px;
    }
    .ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-dot {
      margin: -7px;
    }
    .ant-spin-nested-loading > div > .ant-spin-sm .ant-spin-text {
      padding-top: 2px;
    }
    .ant-spin-nested-loading > div > .ant-spin-sm.ant-spin-show-text .ant-spin-dot {
      margin-top: -17px;
    }
    .ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-dot {
      margin: -16px;
    }
    .ant-spin-nested-loading > div > .ant-spin-lg .ant-spin-text {
      padding-top: 11px;
    }
    .ant-spin-nested-loading > div > .ant-spin-lg.ant-spin-show-text .ant-spin-dot {
      margin-top: -26px;
    }
    .ant-spin-container {
      position: relative;
      transition: opacity 0.3s;
    }
    .ant-spin-container::after {
      position: absolute;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      z-index: 10;
      display: none 9;
       100%;
      height: 100%;
      background: #fff;
      opacity: 0;
      transition: all 0.3s;
      content: '';
      pointer-events: none;
    }
    .ant-spin-blur {
      clear: both;
      overflow: hidden;
      opacity: 0.5;
      -webkit-user-select: none;
         -moz-user-select: none;
          -ms-user-select: none;
              user-select: none;
      pointer-events: none;
    }
    .ant-spin-blur::after {
      opacity: 0.4;
      pointer-events: auto;
    }
    .ant-spin-tip {
      color: rgba(0, 0, 0, 0.45);
    }
    .ant-spin-dot {
      position: relative;
      display: inline-block;
      font-size: 20px;
       1em;
      height: 1em;
    }
    .ant-spin-dot-item {
      position: absolute;
      display: block;
       9px;
      height: 9px;
      background-color: #1890ff;
      border-radius: 100%;
      transform: scale(0.75);
      transform-origin: 50% 50%;
      opacity: 0.3;
      animation: antSpinMove 1s infinite linear alternate;
    }
    .ant-spin-dot-item:nth-child(1) {
      top: 0;
      left: 0;
    }
    .ant-spin-dot-item:nth-child(2) {
      top: 0;
      right: 0;
      animation-delay: 0.4s;
    }
    .ant-spin-dot-item:nth-child(3) {
      right: 0;
      bottom: 0;
      animation-delay: 0.8s;
    }
    .ant-spin-dot-item:nth-child(4) {
      bottom: 0;
      left: 0;
      animation-delay: 1.2s;
    }
    .ant-spin-dot-spin {
      transform: rotate(45deg);
      animation: antRotate 1.2s infinite linear;
    }
    .ant-spin-sm .ant-spin-dot {
      font-size: 14px;
    }
    .ant-spin-sm .ant-spin-dot i {
       6px;
      height: 6px;
    }
    .ant-spin-lg .ant-spin-dot {
      font-size: 32px;
    }
    .ant-spin-lg .ant-spin-dot i {
       14px;
      height: 14px;
    }
    .ant-spin.ant-spin-show-text .ant-spin-text {
      display: block;
    }
    @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
      /* IE10+ */
      .ant-spin-blur {
        background: #fff;
        opacity: 0.5;
      }
    }
    @keyframes antSpinMove {
      to {
        opacity: 1;
      }
    }
    @keyframes antRotate {
      to {
        transform: rotate(405deg);
      }
    }
    .ant-spin-rtl {
      direction: rtl;
    }
    .ant-spin-rtl .ant-spin-dot-spin {
      transform: rotate(-45deg);
      animation-name: antRotateRtl;
    }
    @keyframes antRotateRtl {
      to {
        transform: rotate(-405deg);
      }
    }
    

      

     顺便附上一篇博文里贴的另外几种常用加载动画~

    https://www.cnblogs.com/lhb25/p/loading-spinners-animated-with-css3.html

  • 相关阅读:
    面向使用的软件设计随笔13
    面向使用的软件设计随笔12
    面向使用的软件设计随笔11
    面向使用的软件设计随笔10
    面向使用的软件设计随笔09
    面向使用的软件设计随笔08
    面向使用的软件设计随笔07
    Tensorflow入门----占位符、常量和Session
    关于卷积
    tensorflow学习笔记
  • 原文地址:https://www.cnblogs.com/nangras/p/14838276.html
Copyright © 2011-2022 走看看