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脚本性能的优化方法
Feb 02 Javascript
Javascript无阻塞加载具体方式
Jun 28 Javascript
用Jquery.load载入页面实现局部刷新
Jan 22 Javascript
JS控制网页动态生成任意行列数表格的方法
Mar 09 Javascript
AngularJS实现Model缓存的方式
Feb 03 Javascript
Bootstrap Search Suggest使用例子
Dec 21 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
分享ES6的7个实用技巧
Jan 18 Javascript
详解Vue中watch的高级用法
May 02 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 Javascript
vue 计算属性和侦听器的使用小结
Jan 25 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下常用正则表达式整理
2010/10/26 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP处理数组和XML之间的互相转换
2016/06/02 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
幻宇的层模拟窗口效果-提供演示和下载
2007/01/20 Javascript
javascript 节点排序 2
2011/01/31 Javascript
js实现拖拽 闭包函数详细介绍
2012/11/25 Javascript
jQuery获取浏览器中的分辨率实现代码
2013/04/23 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
基于jquery实现下拉框美化特效
2016/02/02 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
基于jQuery封装的分页组件
2017/06/26 jQuery
微信小程序媒体组件详解(视频,音乐,图片)
2017/09/19 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
vue router带参数页面刷新或回退参数消失的解决方法
2019/02/27 Javascript
利用JavaScript将Excel转换为JSON示例代码
2019/06/14 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
Python基础语言学习笔记总结(精华)
2017/11/14 Python
Python3 Random模块代码详解
2017/12/04 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
HTML5语音识别标签写法附图
2013/11/18 HTML / CSS
表演方阵解说词
2014/02/08 职场文书
《冬阳童年骆驼队》教学反思
2014/04/15 职场文书
二年级评语大全
2014/04/23 职场文书
灵山大佛导游词
2015/02/04 职场文书
学校中秋节活动总结
2015/03/23 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书