美文网首页
做个沙漏

做个沙漏

作者: liuyangjike | 来源:发表于2018-11-19 22:56 被阅读0次

前言

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

image

技术栈

  • vue
  • css,html

实现思路

1.沙漏主体设计

image
<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模块下,演示文档

image

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

具体源码

image
Github:点这里

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

相关文章

  • 做个沙漏

    前言 一个用于过渡的加载组件,效果图: 技术栈 vue css,html 实现思路 1.沙漏主体设计 如上图分为三...

  • 沙漏 沙漏

    唦唦,唦唦 沙漏,沙漏 在哪,在哪 停住,停住 埋在心底的紧张已经显露 看着同年的臃肿的你 就是看到我自己 看着屏...

  • 读书打卡

    每天都是琐事,似乎没有值得记录的,对读书做个记录吧。 今天阅读舒尔茨的《鳄鱼街》之《沙漏下的疗养院》第321—34...

  • 善用「暗时间」,拉长生命纬度

    “生命就像沙漏,里面装的沙子总量大致相当,不同的是,有的沙漏颈部较细,有的沙漏颈部较粗。 颈部较细的沙漏能够抓住每...

  • 沙漏

    大明堂前鹊桥仙 唐宋梅盛看尽十里度芳华 上元灯火烟花冷 曲桥幽孔月重镜中看繁华 元曲流觞山水长 伊人半掩一袭柳畔舞...

  • 沙漏

    细细的、碎碎的那些从指缝间溜走的都是我一去不回的时光啊 文|蝉羽

  • 沙漏

    “你知道沙漏吗?”眼前的老人坐在椅子上,手里把玩着一个小小的金框沙漏,看着我问道。 “……您手里的就是。”我有...

  • 沙漏

    漏掉了是抓不住的 比如山间的风 树梢的云 水面的雾 溪流的鱼 留下了是该珍惜的 比如杯中的茶 手边的书 耳边的歌 ...

  • 沙漏

    每次坐在桌前 我喜欢把沙漏翻过来 这个价值178的沙漏 白白的细沙不断的跌落,积累 粒粒闪着阳光的颜色 仿佛上帝的...

  • 沙漏

    岁月有痕, 悄悄的带走了 风华正茂, 绝代风流… 岁月无形, 只是你 只是你已不在身边。 那年,我们徜徉的街道 如...

网友评论

      本文标题:做个沙漏

      本文链接:https://www.haomeiwen.com/subject/ehuzfqtx.html