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 相关文章推荐
一个判断email合法性的函数[非正则]
Dec 09 Javascript
JavaScript对象学习经验整理
Oct 12 Javascript
js showModalDialog弹出窗口实例详解
Jan 07 Javascript
JavaScript实现找出字符串中第一个不重复的字符
Sep 03 Javascript
JavaScript中双符号的运算详解
Mar 12 Javascript
详解node.js平台下Express的session与cookie模块包的配置
Apr 26 Javascript
jQuery实现的简单在线计算器功能
May 11 jQuery
第一个Vue插件从封装到发布
Nov 22 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
Oct 23 jQuery
vue实现购物车列表
Jun 30 Javascript
node.js爬虫框架node-crawler初体验
Oct 29 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算开始时间到过期时间的相隔的天数
2011/01/12 PHP
PHP冒泡排序算法代码详细解读
2011/07/17 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
2012/06/27 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
PHP实现的简单分页类及用法示例
2016/05/06 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
PHP fopen函数用法实例讲解
2019/02/15 PHP
jquery怎样实现ajax联动框(一)
2013/03/08 Javascript
JQueryEasyUI datagrid框架的进阶使用
2013/04/08 Javascript
jQuery UI 实现email输入提示实例
2013/08/15 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
jQuery实现右键菜单、遮罩等效果代码
2016/09/27 Javascript
Vue.js框架路由使用方法实例详解
2017/08/25 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
利用 JavaScript 实现并发控制的示例代码
2020/12/31 Javascript
python实现的二叉树定义与遍历算法实例
2017/06/30 Python
解决python 输出是省略号的问题
2018/04/19 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
美国知名艺术画网站:Art.com
2017/02/09 全球购物
荷兰本土平价百货:HEMA
2017/10/23 全球购物
Smallable意大利家庭概念店:设计师童装及家居装饰
2018/01/08 全球购物
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
意大利顶级奢侈品电商:LUISAVIAROMA(支持中文)
2020/05/26 全球购物
《藤野先生》教学反思
2014/02/19 职场文书
《金色的脚印》教后反思
2014/04/23 职场文书
ktv好的活动方案
2014/08/17 职场文书
医生辞职信范文
2015/03/02 职场文书
承诺书范本大全
2015/05/04 职场文书
联想win10摄像头打不开怎么办?win10笔记本摄像头打不开解决办法
2022/04/08 数码科技