实现一个沙漏⏳组件

栏目: 编程语言 · 发布时间: 6年前

内容简介:一个用于过渡的加载组件,效果图:如上图分为三个部分:上板、下板、中部; 中部又分为上半沙漏和下半沙漏, 我以上半沙漏为例:主要有4个动画:

一个用于过渡的加载组件,效果图:

实现一个沙漏⏳组件

技术栈

vue
css,html

实现思路

1.沙漏主体设计

实现一个沙漏⏳组件
<template>
  <div class="hour-container" >
     <div class="upper-tap"></div>
     <div class="middle-tap">
       <div class="upper-half-container">
         <div class="upper-half-content">
           <div class="upper-sand" >
             <div class="sand-reduce"></div>
           </div>
         </div>
       </div>
       <div class="lower-half-container">
         <div class="lower-half-content">
            <div class="lower-sand">
             <div class="sand-add"></div>
           </div>
         </div>
       </div>
     </div>
     <div class="sand-falling">
       <div class="sand-null"></div>
     </div>
     <div class="bottom-tap"></div>
  </div>
</template>
复制代码

如上图分为三个部分:上板、下板、中部; 中部又分为上半沙漏和下半沙漏, 我以上半沙漏为例:

<div class="upper-half-container">
    <div class="upper-half-content">
       <div class="upper-sand" >
         <div class="sand-reduce"></div>
       </div>
    </div>
</div>
复制代码
.upper-half-container{ /*上下沙漏各占一半,overflow: hidden*/
    width: 100%;
    height: 50%;
    overflow: hidden;
    position: relative;
  }
.upper-half-content{ /*通过border-radius,width,height形成椭圆,加上border*/
    position: absolute;
    border: 3px solid rgb(248, 248, 250);
    border-radius: 50%;
    height: 105px;
    width: 50px;
    top: -53px;
    left: 2px;
    box-shadow: 2px 1px 3px 0px #aaa;
  }
.upper-sand{  /*里面的沙子,overflow: hidden*/
    width: 100%;
    height: 100%;
    background-color: #409EFF;
    position: absolute;
    border-radius: 50%;
    top: 0px;
    overflow: hidden;
  }
.sand-reduce{ /*通过动画控制height,来体现沙子减少*/
    height: 60%;
    width: 100%;
    background-color: #fff;
    animation: sand-reduce 4s linear infinite;
  }
  @keyframes sand-reduce{  /*动画*/
   0%{
     height: 65%;
   }
   25%{
     height: 78%;
   }
   40%{
     height: 89%;
   }
   62.5%{
     height: 100%;
   }
   80%{
     height: 100%;
   }
   100%{
     height: 100%;
   }
 }
复制代码

2.动画效果

主要有4个动画: 上沙漏减少下沙漏增加下落的沙子沙漏的旋转

原理和上面的 上沙漏 基本相同

<div class='parent'>
    <div class='child'></div>
</div>
复制代码

沙子的增加或减少: 通过动画控制子元素的高度体现增加和减少

比较关键的是: 控制4个动画的衔接

我定了一个动画的周期为 4s :

  • 上沙漏减少0s~2.5s 减少, 2.5~4s 不变
  • 下沙漏增加0s~0.5s 不变, 0.5~3s 增加, 3s~4s 不变
  • 下落的沙子0s~0.5s 增加, 0.5~2.5s 不变, 2.5s~3s 减少, 3s~4s 不变
  • 沙漏的旋转0s~3s 不变, 3~4s 旋转

说明

该组件基于 vue , 收录在我的 jk -ui 库的 Loading模块 下, 演示文档

实现一个沙漏⏳组件

你也可以通过 npm run --save jk-ui
<j-hour></j-hour> 使用

具体源码

实现一个沙漏⏳组件
Github: 点这里

觉得有用的话,欢迎 Star , 感谢:pray:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Traction: A Startup Guide to Getting Customers

Traction: A Startup Guide to Getting Customers

Gabriel Weinberg、Justin Mares / S-curves Publishing / 2014-8-25 / USD 14.99

Most startups end in failure. Almost every failed startup has a product. What failed startups don't have is traction -- real customer growth. This book introduces startup founders and employees to......一起来看看 《Traction: A Startup Guide to Getting Customers》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具