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 - HTML的request类
Jan 09 Javascript
用JavaScript对JSON进行模式匹配(Part 1-设计)
Jul 17 Javascript
javascript学习笔记(四) Number 数字类型
Jun 19 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
node.js中的http.response.end方法使用说明
Dec 14 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
Angularjs 制作购物车功能实例代码
Sep 14 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
Oct 26 jQuery
Vue学习笔记之计算属性与侦听器用法
Dec 07 Javascript
解决vuecli3中img src 的引入问题
Aug 04 Javascript
JavaScript实现烟花绽放动画效果
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
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
CI框架常用方法小结
2016/05/17 PHP
在laravel中实现事务回滚的方法
2019/10/10 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
vue+node实现图片上传及预览的示例方法
2018/11/22 Javascript
vue实现鼠标移入移出事件代码实例
2019/03/27 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
[05:26]2014DOTA2西雅图国际邀请赛 iG战队巡礼
2014/07/07 DOTA
在Python的Flask框架中实现全文搜索功能
2015/04/20 Python
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
使用Python的package机制如何简化utils包设计详解
2017/12/11 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
django-filter和普通查询的例子
2019/08/12 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
美国专业级皮肤病和spa品质护肤品的高级零售网站:SkinCareRx
2017/02/06 全球购物
大学生求职简历的自我评价
2013/10/21 职场文书
路政管理毕业自荐书范文
2014/02/10 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
作文评语怎么写
2014/12/25 职场文书
Python Flask请求扩展与中间件相关知识总结
2021/06/11 Python
python分分钟绘制精美地图海报
2022/02/15 Python
Python中request的基本使用解决乱码问题
2022/04/12 Python