欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

css做個(gè)波浪懸浮球的實(shí)現(xiàn)方法

  發(fā)布時(shí)間:2019-05-14 15:25:13   作者:Zoom   我要評(píng)論
這篇文章主要介紹了css做個(gè)波浪懸浮球的實(shí)現(xiàn)方法的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

最近公司項(xiàng)目有個(gè)需求是在網(wǎng)頁(yè)上操作虛擬機(jī),emmm...操作就操作吧,誰(shuí)讓是領(lǐng)導(dǎo)提的,咱也不知道,咱也不敢問(wèn)啊....咋辦?搞吧,爬了n多個(gè)坑才終于把虛擬機(jī)功能給引入到項(xiàng)目中,看著熟悉的Linux操作窗口,都別攔我,讓我裝一會(huì)*

領(lǐng)導(dǎo)看了十分滿(mǎn)意,然后說(shuō)...我看電腦上都有那個(gè)懸浮球,我們這也得有吧

???啥玩意???去他電腦上看了一下才發(fā)現(xiàn)是安全軟件的那個(gè)展示電腦使用情況的懸浮球,WTF!!你見(jiàn)過(guò)哪個(gè)Linux有這懸浮球的?你咋不讓我再給你整一只瑞星小獅子在旁邊給你跳舞呢??算了還是別說(shuō)了,說(shuō)了真讓我做怎么搞....

 

需求

需求說(shuō)起來(lái)很簡(jiǎn)單--》小球、懸浮在頁(yè)面最上層、內(nèi)部有波浪能動(dòng)、波浪高度跟虛擬機(jī)使用情況有關(guān)、鼠標(biāo)放上去展示詳細(xì)信息,大概就是醬嬸的

 

開(kāi)搞

環(huán)境

項(xiàng)目使用的是vue框架,所以demo都是在vue環(huán)境下,不過(guò)代碼其實(shí)沒(méi)什么環(huán)境需求的。

設(shè)計(jì)思路

看到這個(gè)需求的第一想法就是用canvas畫(huà)一個(gè)懸浮球,這個(gè)倒也不難,網(wǎng)上挺多案例的,后面想能不能用css動(dòng)畫(huà)試試?性能還能更好一下,畢竟在有虛擬機(jī)的頁(yè)面已經(jīng)是有點(diǎn)卡了,任何性能的提升都是有必要的。

主要實(shí)現(xiàn)原理就是使用一個(gè)不停運(yùn)動(dòng)的a遮在b塊上面,然后讓a的顏色與背景顏色相同,從而造成b的邊緣在不停波動(dòng)的效果。

1.畫(huà)個(gè)大圓套小圓

<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>

然后我們得到了這個(gè)

 

2.畫(huà)遮蓋層并讓它扭起來(lái)

<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>

然后就變成了這樣(為了看的效果更好,原諒我使用的大紅色)

 

3.裁剪

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

成品就醬嬸的了

 

4.完善

波浪的高度完全是受wave-mask的top屬性影響的,所以要?jiǎng)討B(tài)變更懸浮球狀態(tài)只需要計(jì)算然后相應(yīng)的改變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>

看效果

大概就醬嬸了,第一次寫(xiě)文,文筆不好多多見(jiàn)諒,別說(shuō)我爛尾了,因?yàn)?..我要下班了

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論