前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >纯CSS实现水波纹的电池充电动画特效

纯CSS实现水波纹的电池充电动画特效

作者头像
老K博客
发布2024-01-05 09:46:03
1710
发布2024-01-05 09:46:03
举报
文章被收录于专栏:老K博客老K博客

前置知识:

要想完成这个特效,就必须要知道一些前置的属性,简单介绍一下吧:

animationtransformfilter 这三个就不多做介绍了,基本上所有的动画都会用到这两个属性。

box-shadow

box-shadow:阴影

用法:box-shadow: h-shadow v-shadow blur spread color inset ;

  • h-shadow :必填的,水平阴影的位置,允许负值
  • v-shadow :必需的。垂直阴影的位置。允许负值
  • blur :模糊距离 spread:阴影的大小
  • color :阴影的颜色
  • inset :从外层的阴影(开始时)改变阴影内侧阴影 border-radius border-radius:设置圆角

可设置四个值,与 margin、padding 的使用方法一样

也就是每个半径的四个值的顺序是:左上角,右上角,右下角,左下角。

  • 如果省略左下角,右上角是相同的。
  • 如果省略右下角,左上角是相同的。
  • 如果省略右上角,左上角是相同的。 linear-gradient() linear-gradient() :渐变,用于创建一个表示两种或多种颜色线性渐变的图片。

用法:background-image: linear-gradient(direction, color-stop1, color-stop2, ...) ;

  • direction: 用角度值指定渐变的方向(或角度),制定方向
  • color...: 依次有什么颜色变为什么颜色 容器 我们设置两个 div ,一个座位底部的容器,上面弄个小盖子,主要通过 border-radius 设置下周边的圆角,并且加入 box-shadow 加入阴影,增强立体感
lqze421t.png
lqze421t.png

充电效果

这里可以使用定位布局,通过 top 来控制水的位置, top 的值越大水越低, top 的值越小水越高

我们把水位设置为80%,同时通过 linear-gradient() 来设置水的一个渐变色:

lqze7fq9.png
lqze7fq9.png

那么动画就很简单了,只需要控制 top 值就会造成水的上升,像这样

lqze86kp.png
lqze86kp.png

这时需要注意的点是:

最上方我们的容器设置了圆角,所以在动画到100%的时候,要和容器的圆角一样 水位在移动,为了增强立体感,可设置阴影,可以以有个递进的效果,所以颜色最好稍微变深一点,并且颜色最好偏近 变色还是通过: filter: hue-rotate() ;这个属性控制

代码语言:javascript
复制
.content{ //容器
        border-radius: 15px 15px 5px 5px;
        &::after{
            position: absolute;
            top: 80%;
            background: linear-gradient(to bottom, #7abcff 0%, #00BCD4 44%, #2196F3 100%);
            border-radius: 0px 0px 5px 5px;
            box-shadow: 0 14px 28px rgba(33, 150, 243, 0), 0 10px 10px rgba(9, 188, 215, 0.08);
            animation: change 10s linear infinite;
            filter: hue-rotate(90deg);
        }
    }
    @keyframes change {
          30% {
            box-shadow: 0 14px 28px rgba(0, 150, 136, 0.83), 0px 4px 10px rgba(8, 117, 134, 0.4);
          }
          50%{
            filter: hue-rotate(60deg);
          }
          80% {
            top: 20%;
            border-radius: 0 0 5px 5px;
            box-shadow: 0 14px 28px rgba(6, 136, 153, 0.2), 0 10px 10px rgba(12, 10, 112, 0.08);
          }
          100% {
              top: 0%;
              filter: hue-rotate(0deg);
              border-radius: 15px 15px 5px 5px;
              box-shadow: 0 14px 28px rgba(7, 93, 104, 0), 0 10px 10px rgba(31, 3, 68, 0.4);
          }
        }
lqze9pbd.png
lqze9pbd.png

水波纹特效

这个特效相信大家都见过,其思想就是在上面的大概位置上设置背景颜色,用相同的底色覆盖,

然后用到 translate 这个属性,通过转化 xy 值,然后通过不停的旋转角度,至于数值为啥是这个值,我也搞不清楚。。。有知道的小伙伴可以在评论区留言.

代码语言:javascript
复制
p{ //复盖
    border-radius: 45% 47% 44% 42%;
    transform: translate(-50%, 0);
    animation: move 10s linear infinite;
}
@keyframes move {
  100% {
      transform: translate(-50%, -160px)  rotate(720deg);
  }
}
lqzeapoo.png
lqzeapoo.png

此时,我们发现这个效果并不太真实,进行多覆盖两个,改变旋转值和 border-radius 的值来设置水面不重叠,但又有差距的效果

代码语言:javascript
复制
p{
    &:nth-child(2){
      border-radius: 38% 46% 43% 47%;
      transform: translate(-50%, 0) rotate(-135deg);
    }
    &:nth-child(3){
      border-radius: 42% 46% 37% 40%;
      transform: translate(-50%, 0) rotate(135deg);
    }
}

基本就这些

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024年01月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前置知识:
    • box-shadow
    • 充电效果
    • 水波纹特效
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档