CSS3 spinner, preloader

前端 未结 1 984
慢半拍i
慢半拍i 2021-01-14 09:19

I would like to build a animated spinner with CSS3. It should behave like this :

\"CSS

相关标签:
1条回答
  • 2021-01-14 09:44

    CSS3 spinner

    This CSS preloader uses keyframe animations and transform-rotate CSS3 properties to make the circle and the filling color.

    This spinner is responsive.

    .sp1 {
      margin: 50px auto;
      position: relative;
      width: 30%;
      padding-bottom: 30%;
      overflow: hidden;
      background-color: #557733;
      border-radius: 50%;
      z-index: 1;
    }
    
    .sp:before,
    .sp:after {
      content: '';
      position: absolute;
      height: 100%;
      width: 50%;
      background-color: #99FF33;
    }
    
    .sp1:after {
      width: 80%;
      height: 80%;
      margin: 10%;
      border-radius: 50%;
      background-color: #fff;
      z-index: 6;
    }
    
    .sp1:before {
      background-color: inherit;
      z-index: 5;
    }
    
    .sp2:before {
      z-index: 4;
      -webkit-animation: spin1 3s linear infinite;
              animation: spin1 3s linear infinite;
      -webkit-transform-origin: 100% 50%;
              transform-origin: 100% 50%;
    }
    
    .sp2:after {
      opacity: 0;
      right: 0;
      z-index: 6;
      -webkit-animation: spin2 3s linear infinite;
              animation: spin2 3s linear infinite;
      -webkit-transform-origin: 0 50%;
              transform-origin: 0 50%;
    }
    
    @-webkit-keyframes spin1 {
      0%         { -webkit-transform: rotate(0deg); }
      50%, 100%  { -webkit-transform: rotate(180deg); }
       
    }
    
    @keyframes spin1 {
      0%         { transform: rotate(0deg); }
      50%, 100%  { transform: rotate(180deg); }
    }
    
    @-webkit-keyframes spin2 {
      0% { -webkit-transform: rotate(0deg); opacity: 0; }
      49.99% { opacity: 0; }
      50% { -webkit-transform: rotate(0deg);  opacity: 1; }
      100% { -webkit-transform: rotate(180deg); opacity: 1;
      }
    }
    
    @keyframes spin2 {
      0% { transform: rotate(0deg); opacity: 0; }
      49.99% { opacity: 0; }
      50% { transform: rotate(0deg); opacity: 1; }
      100% { transform: rotate(180deg); opacity: 1; }
    }
    <div class="sp sp1">
      <div class="sp sp2"></div>
    </div>

    Fiddle demo

    0 讨论(0)
提交回复
热议问题