我想把退出登录的按钮做成一个悬浮球的样子,带动画的那种。

实现是这个样子:

手边没有球形图。所以用的毕设PPT扣的  校~,今年毕业,功能这里演示的为单机悬浮球注销登录

嗯,具体代码:

  <div
:class="['meun-switch animated flex-row',uploadflag ? 'active rubberBand off' : 'leave jello']"
@mouseleave="uploadleave"
@mouseenter="uploadenter"
v-if="uploadShow"
@click.stop="logout"
>
<img :src="require('@/assets/1.png')"/>
</div>

data

                uploadShow: false,
uploadflag: true,

js方法

  uploadenter() {
this.uploadflag = true;
},
uploadleave() {
this.uploadflag = false; },
uploadanimated() {
setTimeout(() => {
this.uploadShow = true;
setTimeout(() => {
this.uploadleave();
}, 1000);
}, 1000);
},

css

  .off{
-webkit-animation:1s seconddiv;
background: transparent;
} @keyframes seconddiv{
0% {transform: scale(1.4,1.4);}
10% {transform: scale(1,1);}
25% {transform: scale(1.2,1.2);}
50% {transform: scale(1,1);}
70% {transform: scale(1.2,1.2);}
100% {transform: scale(1,1);}
}
.meun-switch {
position: fixed;
top: 90px;
left: 0px;
z-index:;
cursor: pointer;
width: 150px;
height: 150px;
padding: 5px;
transition: all 0.25s; &.leave {
left: -65px;
} &.active {
left:;
} &:hover {
transform: scale(1.02);
} img {
width: 120px;
height: 120px;
}
}

页面代码:

<template>
<div id="app">
<transition name="el-zoom-in-center">
<div v-show="show3">
<div class="sidebar">
<!-- <card></card>-->
<list></list>
<div
:class="['meun-switch animated flex-row ys-float-btn',uploadflag ? 'active rubberBand off' : 'leave jello']"
@mouseleave="uploadleave"
@mouseenter="uploadenter"
v-if="uploadShow"
@click.stop="logout"
>
<img :src="require('@/assets/logo.png')"/>
</div>
</div>
<div class="main">
<message></message>
<usertext></usertext>
</div>
</div>
</transition> </div>
</template> <script> import list from '../../components/chat/list.vue'
import message from '../../components/chat/message.vue'
import usertext from '../../components/chat/usertext.vue'
import screenfull from 'screenfull' export default {
name: 'pageChat',
data() {
return {
//默认不全屏
isFullscreen: false,
show3: false,
uploadShow: false,
uploadflag: true,
}
},
created() { },
mounted: function () {
this.uploadanimated();
this.$store.dispatch('connect');
this.inintview();
},
methods: {
/*注销*/
logout () {
this.$confirm('此操作注销登录, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.getRequest('/logout');
window.sessionStorage.removeItem("user");
// 清除缓存
this.$router.replace("/");
}).catch(() => {
this.$message({
type: 'info',
message: '已取消'
});
});
},
inintview() {
setTimeout(() => {
this.show3 = true;
}, 1000)
},
uploadenter() {
this.uploadflag = true;
},
uploadleave() {
this.uploadflag = false; },
uploadanimated() {
setTimeout(() => {
this.uploadShow = true;
setTimeout(() => {
this.uploadleave();
}, 1000);
}, 1000);
},
click() {
// 如果不允许进入全屏,发出不允许提示 浏览器不能全屏
if (!screenfull.enabled) {
this.$message({
message: '浏览器不能全屏',
type: 'warning'
})
return false
}
screenfull.toggle()
this.$message({
message: '全屏啦',
type: 'success'
})
} },
components: {
list,
message,
usertext
}
}
</script> <style lang="scss" scoped>
.off{
-webkit-animation:1s seconddiv;
background: transparent;
} @keyframes seconddiv{
0% {transform: scale(1.4,1.4);}
10% {transform: scale(1,1);}
25% {transform: scale(1.2,1.2);}
50% {transform: scale(1,1);}
70% {transform: scale(1.2,1.2);}
100% {transform: scale(1,1);}
}
.meun-switch {
position: fixed;
top: 90px;
left: 0px;
z-index: 2001;
cursor: pointer;
width: 150px;
height: 150px;
padding: 5px;
transition: all 0.25s; &.leave {
left: -65px;
} &.active {
left: 0;
} &:hover {
transform: scale(1.02);
} img {
width: 120px;
height: 120px;
}
} #particles-js {
width: 100%;
height: calc(100% - 100px);
position: absolute;
overflow: hidden;
} #app {
/*背景裁剪在背景边框内部*/
background-clip: padding-box;
/*// 边框样式*/
border: 1px solid #eaeaea;
/*// 边框阴影*/
box-shadow: 0 0 25px #cac6c6;
margin: 20px auto;
width: 1100px;
height: 100%;
overflow: hidden;
border-radius: 10px;
overflow-x: hidden; .sidebar,
.main {
height: 100%;
} .sidebar {
float: left;
color: #f4f4f4;
background-color: transparent;
width: 300px;
height: 100%
} .main {
position: relative;
overflow: hidden;
background-color: transparent;
}
}
</style>

Vue实现靠边悬浮球(PC端)的更多相关文章

  1. vue搭配的UI框架 pc端 + 移动端

    PC桌面端UI框架: 1,iview      (最新,用户评分高功能多炫酷 解决和避免了其他UI框架出现的一些小问题) 2, bootstrap  (使用用户最多样式死板没特色) 3,Element ...

  2. 【vue】vue +element 搭建项目,要求既支持pc端又支持移动端

    使用场景:有适配pc端改为适配pc端和移动端,使用2套css 代码实现App.vue created: function () { if(document.documentElement.client ...

  3. vue pc端网站项目开发坑点与难度记录

    背景 在一pc端的web项目里,由于某些特性需要由动态语言处理,所以只在有需要使用vue来处理数据的页面,直接引入vue.js来处理.由于刚开始并没有打算使用前端来渲染数据和处理交互,所以使用了一些非 ...

  4. vue 项目 切换手机端和pc端。同一个项目,配置不同的路由

    1, 首先判断设备:在main.js里面写 // vue原型挂载 - 是否PC端 if (/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator. ...

  5. Vue PC端框架

    Vue PC端框架 1. Element 中文文档:http://element-cn.eleme.io/#/zh-CN github地址:https://github.com/ElemeFE/ele ...

  6. 使用vue实现简单键盘,支持移动端和pc端

    常看到各种app应用中使用自定义的键盘,本例子中使用vue2实现个简单的键盘,支持在移动端和PC端使用,欢迎点赞,h5 ios输入框与键盘 兼容性优化 实现效果: Keyboard.vue <t ...

  7. vue实现PC端分辨率适配

    lib-flexible + px2rem Loader lib-flexible 阿里伸缩布局方案 px2rem-loader:px转rem: 依赖 首先需要安装 vue-cli 脚手架,这里我安装 ...

  8. 【实战问题】【4】Vue写的页面在微信手机端和微信web开发者工具中都能正常显示,但是在微信pc端上显示空白

    原因:pc端微信浏览器不支持es6,而代码中使用了 let . 解决:将 let 改为 var(若使用 es6 语法比较多,可以进行转换,将 es6 语法转为 es5) 参考博客: 1,h5微信页面在 ...

  9. vue实现PC端调用摄像头拍照人脸录入、移动端调用手机前置摄像头人脸录入、及图片旋转矫正、压缩上传base64格式/文件格式

    进入正题 1. PC端调用摄像头拍照上传base64格式到后台,这个没什么花里胡哨的骚操作,直接看代码 (canvas + video) <template> <div> &l ...

随机推荐

  1. 原生js实现扇形导航以及动画的坑

    第一次发博客,有点紧张.首先来一张效果图. 主要是实现了点击右下角的风扇按钮实现了: 导航栏的开启与关闭,中间伴随着 transition过渡以及transform的2D动画. 上源码: <!D ...

  2. python简易的大乐透数据获取及初步分析

    该项目从网上爬取并分析彩票数据,为用户查看和初步分析往期数据提供一种简易的工具. https://github.com/unknowcry/Lottery # -*- coding: utf-8 -* ...

  3. 在学习java之余,js的使用精髓-闭包和原型链

    这里分享下廖雪峰官网写的js教程,内容写的比较实用,易懂,其中简介的原型链和闭包的知识,小伙伴们一起上呀,畅游在知识的海洋中: 地址:https://www.liaoxuefeng.com/wiki/ ...

  4. H - Tempter of the Bone DFS

    小明做了一个很久很久的梦,醒来后他竟发现自己和朋友在一个摇摇欲坠的大棋盘上,他们必须得想尽一切办法逃离这里.经过长时间的打探,小明发现,自己所在的棋盘格子上有个机关,上面写着“你只有一次机会,出发后t ...

  5. c++全排列

    一.概念 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列.当m=n时所有的排列情况叫全排列.如果这组数有n个,那么全排列数为n!个. 比如a ...

  6. 落谷 P1734 最大约数和

    题目描述 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 输入格式 输入一个正整数S. 输出格式 输出最大的约数之和. 输入输出样例 输入 #1复制 11 输出 #1复制 ...

  7. Candy Distribution

    Kids like candies, so much that they start beating each other if the candies are not fairly distribu ...

  8. 详解 Set接口

    (请关注 本人"集合"总集篇博文--<详解 Collection接口>) 在Collection接口的子接口中,最重要的,也是最常见的两个-- List接口 和 Set ...

  9. API联调神器PostMan使用详解

    简介 创建 + 测试:创建和发送任何的HTTP请求,请求可以保存到历史中再次执行 Organize:使用Postman Collections为更有效的测试及集成工作流管理和组织APIs docume ...

  10. 《Spring In Action》阅读笔记之装配bean

    Spring主要装配机制 1.在XML中进行显式配置 2.在Java中进行显式配置 3.隐式的的bean发现机制和自动装配 自动化装配bean Spring从两个角度来实现自动化装配 1.组件扫描:S ...