最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

 

需求

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

 

開搞

環(huán)境

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

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

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

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

1.畫個(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.畫遮蓋層并讓它扭起來

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

看效果

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

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

相關(guān)文章

最新評(píng)論

威宁| 石河子市| 鄂托克旗| 永福县| 海南省| 增城市| 河津市| 隆子县| 延长县| 郴州市| 白城市| 合江县| 天柱县| 施甸县| 安西县| 达尔| 房产| 辽宁省| 航空| 务川| 资中县| 祥云县| 永安市| 神农架林区| 广东省| 玉屏| 静宁县| 泰来县| 琼结县| 三原县| 潜江市| 大邑县| 项城市| 肥城市| 五莲县| 永德县| 安龙县| 洛阳市| 沅陵县| 海晏县| 马鞍山市|