vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)
为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果。单击鼠标时,可以添加粒子。
填坑:
- 以背景方式显示,无法触犯点击事件
- 视图有按钮时无法获取按钮焦点,触发不了点击事件

动图

实现过程
安装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" /> 人 事 管 理</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"。
vue-particles做背景,鼠标动画粒子连线填坑(按钮没有点击响应)的更多相关文章
- Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸
Android特效专辑(五)--自定义圆形头像和仿MIUI卸载动画-粒子爆炸 好的,各位亲爱的朋友,今天讲的特效还是比较炫的,首先,我们会讲一个自定义圆形的imageView,接着,我们会来实现粒子爆 ...
- Silverlight动画显示Line线
目的:在silverlight中显示两点之间的连线,要求动画显示连线效果. 如果需实现动画效果不得不了解,Storyborad对象: Storyboard Silverlight 通过时间线控制动 ...
- vue中使用js动画与velocity.js
一:vue中使用js动画 根据上一篇安装animate.css之后 vue中有动画的钩子函数,@before-enter是内容由无到有的时候自动监听触发的函数,函数会接收到参数el,这样可以动态设置样 ...
- 使用vue模拟购物车小球动画
使用vue模拟购物车小球动画 1.效果演示 2.相关代码 <!DOCTYPE html> <html lang="en"> <head> < ...
- WPF 跟随鼠标动画 by wgscd
WPF 跟随鼠标动画 by wgscd <UserControl x:Class="WpfApplication1.Spark" xmlns="http://sch ...
- Vue 监听鼠标左键 鼠标右键以及鼠标中键修饰符click.left&contextmenu&click.middle
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- vue中可以自定义动画的前缀
vue中可以自定义动画的前缀1.只需在中加入name属性即可 <transition name="my"> <h6 v-if="flag2"& ...
- Vue页面跳转动画效果实现
Vue页面跳转动画效果实现:https://juejin.im/post/5ba358a56fb9a05d2068401d
- echarts+百度地图+vue 填坑记(一)(百度地图、鼠标移入移出标注,信息框会产生闪烁)
大概七月底开始实习,到现在经历了两个完整的项目(c2b). 因为开发时间紧,任务重,所以在开发过程踩到的坑都没时间去记录. 现在在开发一个某链运输监控系统,到了收尾阶段,有时间写博客了!开心! 一.鼠 ...
随机推荐
- 【题解】PKUWC2018简要题解
[题解]PKUWC2018简要题解 Minimax 定义结点x的权值为: 1.若x没有子结点,那么它的权值会在输入里给出,保证这类点中每个结点的权值互不相同. 2.若x有子结点,那么它的权值有p的概率 ...
- $SP703\ Mobile\ Service\ DP$
洛谷 Sol 首先状态是已经完成的请求数量 这题只有三个员工跑来跑去,只有三个.... 一般像这种人数特别少的DP题就会把它们都放到状态里去 于是:f[i][x][y][z]表示现在已经完成了i个请求 ...
- Java容器知识总结
剖析面试最常见问题之Java集合框架 说说List,Set,Map三者的区别? List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一 ...
- ruby 编写控制台进度条
ruby 中,$stdout.flush 让控制台当前行内容可以重写,以此我们可以做出进度条的效果. def set_progress(index, char = '*') print (char * ...
- 从零开始Go语言-GoLand(编译器)-Windows(平台)
本文章适合那些想入门Go语言,却又不知道如何搭建自己的第一个HelloWorld的同学. 推荐几个Go语言相关学习网站: C语言中文网: http://c.biancheng.net/golang/ ...
- C++简单项目--推箱子
在处理移动的时候有太多种情况了: 1.有空位 2.在推箱子,推到了空地 3.推箱子推到了目标, 4.推目标位的箱子推到另一个目标 5.推目标位的箱子推到空地 首先记录目标位置,在每次推动之后会再绘画中 ...
- C语言联合体(union)的使用方法及其本质-union
转载自:https://blog.csdn.net/si_zhou_qun_84342712/article/details/53187106 1.联合体union的基本特性——和struct的同与不 ...
- 关于Element对话框组件Dialog在使用时的一些问题及解决办法
Element对话框组件Dialog在我们的实际项目开发中可以说是一个使用频率较高的组件,它能为我们展示提示的功能,如:业务模块提交前展示我们曾经输入或选择过的业务信息,或者展示列表信息中某项业务的具 ...
- ubuntu下使用APT安装和卸载MySQL5.7
安装方式一: 向系统的软件仓库中列表中添加MySQL APT 仓库 去http://dev.mysql.com/downloads/repo/apt/.下载MySQL APT repository ...
- python列表的方法(改变原列表)
xxx.append() 末尾添加一个元素效果图: 代码: # append() 末尾添加一个元素 my_list = ['] print('原列表:',my_list) my_list.a ...