蝙蝠岛资源网 Design By www.hbtsch.com

最近公司项目有个需求是在网页上操作虚拟机,emmm...操作就操作吧,谁让是领导提的,咱也不知道,咱也不敢问啊....咋办?搞吧,爬了n多个坑才终于把虚拟机功能给引入到项目中,看着熟悉的Linux操作窗口,都别拦我,让我装一会*

领导看了十分满意,然后说...我看电脑上都有那个悬浮球,我们这也得有吧

???啥玩意???去他电脑上看了一下才发现是安全软件的那个展示电脑使用情况的悬浮球,WTF!!你见过哪个Linux有这悬浮球的?你咋不让我再给你整一只瑞星小狮子在旁边给你跳舞呢??算了还是别说了,说了真让我做怎么搞....

css做个波浪悬浮球的实现方法 

需求

需求说起来很简单--》小球、悬浮在页面最上层、内部有波浪能动、波浪高度跟虚拟机使用情况有关、鼠标放上去展示详细信息,大概就是酱婶的

css做个波浪悬浮球的实现方法 

开搞

环境

项目使用的是vue框架,所以demo都是在vue环境下,不过代码其实没什么环境需求的。

设计思路

看到这个需求的第一想法就是用canvas画一个悬浮球,这个倒也不难,网上挺多案例的,后面想能不能用css动画试试?性能还能更好一下,毕竟在有虚拟机的页面已经是有点卡了,任何性能的提升都是有必要的。

主要实现原理就是使用一个不停运动的a遮在b块上面,然后让a的颜色与背景颜色相同,从而造成b的边缘在不停波动的效果。

1.画个大圆套小圆

<div class="container">
    <div class="wave"></div>
</div>

<style>
    .container {
        width: 100px;
        height: 100px;
        border-radius: 50%;
        border: 3px solid #67c23a;
        background: #ffffff;
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        padding: 5px;
    }
    .wave {
        position: relative;
        width: 100px;
        height: 100px;
        background-image: linear-gradient(-180deg, #aaff80 13%, #67c23a 91%);
        border-radius: 50%;
    }
</style>

然后我们得到了这个

css做个波浪悬浮球的实现方法 

2.画遮盖层并让它扭起来

<div class="container">
    <div class="wave"></div>
    <div class="wave-mask"></div>
</div>
<style>
.wave-mask {
    position: absolute;
    width: 200px;
    height: 200px;
    top: 0;
    left: 50%;
    border-radius: 40%;
    background-color: rgba(212, 24, 24, 0.9);
    transform: translate(-50%, -70%) rotate(0);
    animation: toRotate 10s linear -5s infinite;
    z-index: 20;
}
@keyframes toRotate {
  50% {
    transform: translate(-50%, -70%) rotate(180deg);
  }
  100% {
    transform: translate(-50%, -70%) rotate(360deg);
  }
}
</style>

然后就变成了这样(为了看的效果更好,原谅我使用的大红色)

css做个波浪悬浮球的实现方法 

3.裁剪

.container {
  overflow: hidden;
}
.wave-mask {
  background-color: rgba(255, 255, 255, 0.9);
}

成品就酱婶的了

css做个波浪悬浮球的实现方法 

4.完善

波浪的高度完全是受wave-mask的top属性影响的,所以要动态变更悬浮球状态只需要计算然后相应的改变top的值就可以了,然后稍微完善一下代码

<template>
  <div class="home">
    <div class="container" :class="{ warning: parseInt(usingRate) > 60, danger: parseInt(usingRate) > 80 }">
      <div class="wave"></div>
      <div class="wave-mask" :style="`top: ${40 - parseInt(usingRate)}px`"></div>
    </div>
    <div class="using-slider">
      <span>使用率:{{usingRate}} %</span>
      <el-slider v-model="usingRate"></el-slider>
    </div>
  </div>
</template>

<script>
export default {
  data () {
    return {
      usingRate: 0
    }
  }
}
</script>

<style lang="scss" scoped>
.container {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  border: 3px solid #67c23a;
  background: #ffffff;
  overflow: hidden;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 5px;
  .wave {
    position: relative;
    width: 100px;
    height: 100px;
    background-image: linear-gradient(-180deg, #aaff80 13%, #67c23a 91%);
    border-radius: 50%;
  }
  .wave-mask {
    position: absolute;
    width: 200px;
    height: 200px;
    top: 0;
    left: 50%;
    border-radius: 40%;
    background-color: rgba(255, 255, 255, 0.9);
    transform: translate(-50%, -70%) rotate(0);
    animation: toRotate 10s linear -5s infinite;
    z-index: 20;
  }
  &.warning {
    border: 3px solid #e6a23c;
    .wave {
      background-image: linear-gradient(-180deg, #f0c78a 13%, #e6a23c 91%);
    }
    &.danger {
      border: 3px solid #f56c6c;
      .wave {
        background-image: linear-gradient(-180deg, #f78989 13%, #f56c6c 91%);
      }
    }
  }
}
.using-slider {
  width: 400px;
  margin: 0 auto;
}

@keyframes toRotate {
  50% {
    transform: translate(-50%, -70%) rotate(180deg);
  }
  100% {
    transform: translate(-50%, -70%) rotate(360deg);
  }
}
</style>

看效果

css做个波浪悬浮球的实现方法

大概就酱婶了,第一次写文,文笔不好多多见谅,别说我烂尾了,因为...我要下班了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

标签:
css,波浪悬浮球

蝙蝠岛资源网 Design By www.hbtsch.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
蝙蝠岛资源网 Design By www.hbtsch.com

评论“css做个波浪悬浮球的实现方法”

暂无css做个波浪悬浮球的实现方法的评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。