Vue实现按钮旋转和移动位置的实例代码


Posted in Javascript onAugust 09, 2018

1.静态效果图

Vue实现按钮旋转和移动位置的实例代码

Chrom移动端浏览模式下可拖动按钮处于任意位置,并且点击可旋转按钮

2.代码

<template>
 <div id="app">
  <div class="icon-add-50" :style="iconstyle" @click='click' @touchmove='touchmove' @touchstart='touchstart(this,$event)' @touchend='touchend'></div>
 </div>
</template>
<script>
export default {
 name: 'App',
 data(){
  return{
   /*--------图标样式变量--------------*/
   iconrotate:45,//旋转deg
   icontranslateX:100,//沿x轴位移px
   icontranslateY:100,//沿y轴位移px
   /*--------拖动计算变量------------*/
   mouseX:0,
   mouseY:0,
   objX:0,
   objY:0,
   isDown:false
  }
 },
 methods:{
  click:function(){//图标点击事件
   if (this.iconrotate==0) {
     this.iconrotate=315;
   }else {
    this.iconrotate=0;
   }
  },
  touchstart:function(obj,e){//finger touch 触发
   this.objX = this.icontranslateX;
   this.objY = this.icontranslateY;
   this.mouseX = e.touches[0].clientX;
   this.mouseY = e.touches[0].clientY;
   this.isDowm = true;
  },
  touchmove:function(e){//finger move 触发
   let x = e.touches[0].clientX;
   let y = e.touches[0].clientY;
   if (this.isDowm) {
     this.icontranslateX = parseInt(x) - parseInt(this.mouseX) + parseInt(this.objX);
     this.icontranslateY = parseInt(y) - parseInt(this.mouseY) + parseInt(this.objY);
   }
  },
  touchend:function(e){//finger from touch to notouch
   if (this.isDowm) {
     let x = e.touches[0].clientX;
     let y = e.touches[0].clientY;
     this.icontranslateX = parseInt(x) - parseInt(this.mouseX)+ parseInt(this.objX);
     this.icontranslateY = parseInt(y) - parseInt(this.mouseY)+ parseInt(this.objY);
     this.isDowm=false;
   }
  }
 },
 computed:{
  iconstyle:function(){//图标动态样式
   let arr = new Array();
   arr.push('transform:');//注意:先移动后旋转,实现原地旋转;先旋转后移动,位置按照旋转后的新坐标系确定
   arr.push('translateX('+this.icontranslateX+'px) ');
   arr.push('translateY('+this.icontranslateY+'px) ');
   arr.push('rotate('+this.iconrotate+'deg) ');
   return arr.join("");
  }
 }
}
</script>
<style>
#app {
 font-family: 'Avenir', Helvetica, Arial, sans-serif;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
 text-align: center;
 color: #2c3e50;
 margin-top: 60px;
}
 /*加号*/
.icon-add-50{
  position: relative;
  box-sizing: border-box;
  width: 50px;
  height: 50px;
  border: 2px solid gray;
  border-radius: 50%;
  box-shadow:darkgrey 0px 0px 2px 2px;
  background-color: CornflowerBlue;
}
.icon-add-50:before{
  content: '';
  position: absolute;
  width: 30px;
  height: 2px;
  left: 50%;
  top: 50%;
  margin-left: -15px;
  margin-top: -1px;
  background-color: white;
}
.icon-add-50:after{
  content: '';
  position: absolute;
  width: 2px;
  height: 30px;
  left: 50%;
  top: 50%;
  margin-left: -1px;
  margin-top: -15px;
  background-color: white;
}
</style>

总结

以上所述是小编给大家介绍的Vue实现按钮旋转和移动位置的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Clipboard.js 无需Flash的JavaScript复制粘贴库
Oct 02 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 Javascript
webix+springmvc session超时跳转登录页面
Oct 30 Javascript
React注册倒计时功能的实现
Sep 06 Javascript
vue侧边栏动态生成下级菜单的方法
Sep 07 Javascript
webpack的CSS加载器的使用
Sep 11 Javascript
详解Vue组件之间通信的七种方式
Apr 14 Javascript
详解javascript中的Error对象
Apr 25 Javascript
在vue中根据光标的显示与消失实现下拉列表
Sep 29 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
Oct 29 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
Aug 04 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 #Javascript
JavaScript引用类型Function实例详解
Aug 09 #Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 #jQuery
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 #Javascript
vue修改对象的属性值后页面不重新渲染的实例
Aug 09 #Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 #Javascript
vue2.0的虚拟DOM渲染思路分析
Aug 09 #Javascript
You might like
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
php日历[测试通过]
2008/03/27 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
Laravel5.1 框架表单验证操作实例详解
2020/01/07 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
2015/06/19 Javascript
如何解决ligerUI布局时Center中的Tab高度大小
2015/11/24 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
jquery实用技巧之输入框提示语句
2016/07/28 Javascript
jquery Form轻松实现文件上传
2017/05/24 jQuery
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
react 组件传值的三种方法
2019/06/03 Javascript
JavaScript实现拖拽盒子效果
2020/02/06 Javascript
js实现碰撞检测
2021/01/29 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
python启动办公软件进程(word、excel、ppt、以及wps的et、wps、wpp)
2009/04/09 Python
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
Python简单实现自动删除目录下空文件夹的方法
2017/08/29 Python
详解python的argpare和click模块小结
2019/03/31 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
python plotly画柱状图代码实例
2019/12/13 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
Pycharm安装python库的方法
2020/11/24 Python
英国名牌男装店:Standout
2021/02/17 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
迟到检讨书1000字
2014/01/15 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
大型会议接待方案
2014/03/01 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
办公室岗位职责范本
2015/04/11 职场文书
新员工试用期工作总结2015
2015/05/28 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python