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 相关文章推荐
JavaScript 联动的无限级封装类,数据采用非Ajax方式,随意添加联动
Jun 29 Javascript
jQuery Ajax请求状态管理器打包
May 03 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
Mar 26 Javascript
jQuery调用Webservice传递json数组的方法
Aug 06 Javascript
JS添加或修改控件的样式(Class)实现方法
Oct 15 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
Feb 15 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
浅谈手写node可读流之流动模式
Jun 01 Javascript
详解如何使用node.js的开发框架express创建一个web应用
Dec 20 Javascript
Vue项目部署的实现(阿里云+Nginx代理+PM2)
Mar 26 Javascript
node.js实现简单的压缩/解压缩功能示例
Nov 05 Javascript
vue中 this.$set的使用详解
Nov 17 Vue.js
解决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
用PHP的ob_start();控制您的浏览器cache!
2007/02/14 PHP
PHP 程序员应该使用的10个组件
2009/10/31 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
Js的MessageBox
2006/12/03 Javascript
javascript背投广告代码的完善
2008/04/08 Javascript
asp批量修改记录的代码
2008/06/25 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
2014/01/13 Javascript
使用jQuery判断IE浏览器版本的代码
2014/06/14 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
vue2实现可复用的轮播图carousel组件详解
2017/11/27 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
Python多线程学习资料
2012/12/19 Python
python随机生成指定长度密码的方法
2015/04/04 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
浅谈Python中的zip()与*zip()函数详解
2018/02/24 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
编写html5时调试发现脚本php等网页js、css等失效
2013/12/31 HTML / CSS
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
过程装备与控制工程专业个人的求职信
2013/12/01 职场文书
初婚未育证明
2014/01/15 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
2014年环保局工作总结
2014/12/11 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
2019年入党思想汇报
2019/03/25 职场文书
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
Redis分布式锁的7种实现
2022/04/01 Redis