vue-particles做背景,鼠標動畫粒子連線填坑(點擊響應)


為了提高頁面展示效果,登錄界面內容比較單一的,粒子效果作為背景經常使用到,vue工程中利用vue-particles可以很簡單的實現頁面的粒子背景效果。單擊鼠標時,可以添加粒子。

填坑:

  1. 以背景方式顯示,無法觸犯點擊事件
  2. 視圖有按鈕時無法獲取按鈕焦點,觸發不了點擊事件

 

 

 

 

 

 

 

 動圖

 

 

 

實現過程

安裝vue-particles

npm install vue-particles --save-dev

全局配置vue-particles

在main.js里面:

import VueParticles from 'vue-particles' Vue.use(VueParticles) 

使用 vue-particles

在vue文件template標簽中:

<template  >
  <div v-loading.fullscreen.lock="loading"
       class="login" 
       element-loading-spinner="fa fa-spinner fa-pulse fa-3x fa-fw">
   <vue-particles
        color="#409EFF"
        :particleOpacity="0.7"
        :particlesNumber="80"
        shapeType="circle"
        :particleSize="4"
        linesColor="#409EFF"
        :linesWidth="1"
        :lineLinked="true"
        :lineOpacity="0.4"
        :linesDistance="150"
        :moveSpeed="3"
        :hoverEffect="true"
        hoverMode="grab"
        :clickEffect="true"
        clickMode="push"
      >   </vue-particles>
    <el-form :rules="rules"
             :model="loginFrom"
             class="logContainer"
             ref="loginFrom"
             @keydown.enter.native="loginSubmit">
      <h2 class="logtitle"><i class="fa fa-drupal fa-2x"
             style="color: #505458" />&nbsp;人 事 管 理</h2>
      <el-form-item prop="username">
        <el-input type="text"
                  v-model="loginFrom.username"
                  placeholder="請輸入用戶名"
                  class="inputbg"
                  auto-complete="off">
          <i slot="prefix"
             class="el-icon-user"></i>
        </el-input>
      </el-form-item>
      <el-form-item prop="password">
        <el-input type="password"
                  v-model="loginFrom.password"
                  placeholder="請輸入密碼"
                  auto-complete="off">
          <i slot="prefix"
             class="el-icon-lock"></i>
        </el-input>
      </el-form-item>
      <el-form-item prop="code">
        <el-input v-model="loginFrom.code"
                  auto-complete="off"
                  placeholder="驗證碼"
                  style="width: 63%"
                  @keyup.enter.native="loginSubmit">
          <i slot="prefix"
             class="el-icon-view"></i>
        </el-input>
        <div class="login-code">
          <img :src="codeUrl"
               @click="getCode">
        </div>
      </el-form-item>
      <el-checkbox v-model="loginFrom.rememberMe"
                   style="margin:0 0 25px 0;">
        記住我
      </el-checkbox>
      <el-button type="primary" 
                 style="width:100%; position: relative;"
                 @click="loginSubmit">登錄</el-button>
    </el-form>
  </div>
</template>

 

vue-particles有一個id為默認為particles-js,可以根據這個id來設置樣式。設置之后就可以顯示了。

 #particles-js{
        width: 100%;
        height: calc(100% - 100px);
         position: absolute;    
    }

坑一:我在做完這一步時,發現點擊按鈕觸發不了

后來做了如下修改;加個樣式position: relative;,將button的定位寫出相對定位就OK啦,我也不知道啥原因,想着修改之前是好的,可能被position: absolute;  影響了,所以就一個個試position的屬性

<el-button type="primary" 
                 style="width:100%; position: relative;"
                 @click="loginSubmit">登錄</el-button>

 

坑二,網上好多是直接在APP組件里,我試了之后,鼠標無法觸發粒子,感覺下面的寫法不對,或者我那里其他的問題。

<template>
  <div id="app" style="overflow-x: hidden">
    <vue-particles color="#409EFF"
                   :particleOpacity="0.9"
                   :particlesNumber="1"
                   shapeType="circle"
                   :particleSize="4"
                   linesColor="#409EFF"
                   :linesWidth="1"
                   :lineLinked="true"
                   :lineOpacity="0.7"
                   :linesDistance="150"
                   :moveSpeed="4"
                   :hoverEffect="true"
                   hoverMode="grab"
                   :clickEffect="true"
                   clickMode="push"></vue-particles>
    <router-view></router-view>
  </div>

</template>

<script>
export default {
  name: 'app',
  data () {
    return {

    }
  },
  mounted:function() {
    this.$store.dispatch('initData');
    this.$store.dispatch('initData');
  },

}
</script>

<style lang="scss" scoped>
  #particles-js {
    width: 100%;
    height: calc(100% - 100px);
    position: absolute;
    overflow: hidden;
  }
</style>

 

附:具體參數說明

  • color: String類型。默認'#dedede'。粒子顏色。
  • particleOpacity: Number類型。默認0.7。粒子透明度。
  • particlesNumber: Number類型。默認80。粒子數量。
  • shapeType: String類型。默認'circle'。可用的粒子外觀類型有:"circle","edge","triangle", "polygon","star"。
  • particleSize: Number類型。默認80。單個粒子大小。
  • linesColor: String類型。默認'#dedede'。線條顏色。
  • linesWidth: Number類型。默認1。線條寬度。
  • lineLinked: 布爾類型。默認true。連接線是否可用。
  • lineOpacity: Number類型。默認0.4。線條透明度。
  • linesDistance: Number類型。默認150。線條距離。
  • moveSpeed: Number類型。默認3。粒子運動速度。
  • hoverEffect: 布爾類型。默認true。是否有hover特效。
  • hoverMode: String類型。默認true。可用的hover模式有: "grab", "repulse", "bubble"。
  • clickEffect: 布爾類型。默認true。是否有click特效。
  • clickMode: String類型。默認true。可用的click模式有: "push", "remove", "repulse", "bubble"。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM