美文网首页
PointerLock在vue中图片实例

PointerLock在vue中图片实例

作者: 浪浪山小妖_ | 来源:发表于2018-12-13 10:51 被阅读0次

1.新建一个pointerLock.js如下,之后引入到mian.js全局使用或者引入到当前组件页面都可以:)


const pointerLock = {}

pointerLock.pointerLockEvent = function (eleImage) {

  if (eleImage) {
    // 起始值
    var moveX = 0,
      moveY = 0;
    // 图片无限变换的方法
    var rotate3D = function(event) {
      moveX = moveX + event.movementX;
      moveY = moveY + event.movementY;

      eleImage.style.transform = 'rotateX(' + moveY + 'deg) rotateY(' + moveX + 'deg)';
    };

    // 触发鼠标锁定
    eleImage.addEventListener('click', function() {
      eleImage.requestPointerLock();
    });

    // 再次点击页面,取消鼠标锁定处理
    document.addEventListener('click', function() {
      if (document.pointerLockElement == eleImage) {
        document.exitPointerLock();
      }
    });

    // 检测鼠标锁定状态变化
    document.addEventListener('pointerlockchange', function() {
      if (document.pointerLockElement == eleImage) {
        document.addEventListener("mousemove", rotate3D, false);
      } else {
        document.removeEventListener("mousemove", rotate3D, false);
      }
    }, false);
  }

}


export default pointerLock

2.然后新建一个小组件imgPointerLock.vue,实例化作用于每一个图片

 //imgPointerLock.vue
<template>
  <div>
    <img :src="imgSrc" alt="" ref='eleImage'>
  </div>
</template>
<script>
import pointerLock from '@/utils/pointerLock'       //引入到当前组件内使用
let vm = this;
export default {
  name: "imgPointerLock",
  components: {

  },
  props: {
    src: {
      type: String   //图片地址
    }
  },

  data() {

    return {
      isLock: false,
      imgSrc:require(`@/assets/images/huaji.gif`)   //pointLock也支持gif图片动态效果哦~

    };
  },

  computed: {
    
  },
  created() {

  },
  mounted() {
    // console.log(this.$refs)
    pointerLock.pointerLockEvent(this.$refs.eleImage);   //调用传参并实例化

  },
  methods: {
  }
}

</script>
<style lang='postcss' scoped>
* {
  box-sizing: border-box;
}

img {
  display:block;
  vertical-align: middle;
  width:100%; 
  opacity:.9;
  box-shadow: 10px 10px 5px #eee;  
}

</style>

//使用
<img-pointer-lock v-for="(item,index) in imgArr" :src="item.imgSrc" :key='index'></img-pointer-lock>

3.ok辣,可以自己npm run dev 试试看. 另文章参考于这里

--by Affandi ⊙▽⊙

相关文章

  • PointerLock在vue中图片实例

    1.新建一个pointerLock.js如下,之后引入到mian.js全局使用或者引入到当前组件页面都可以:) 2...

  • vue-router

    安装vue-router 引入 实例化router 将实例化的 router 添加到 vue 的实例中 在实例化r...

  • Vue - 购物车案例 - 创建Vue实例

    案例主要部分: 创建一个完整的Vue实例 html: 我们在js文件中创建vue实例:这是一个完整的Vue实例: ...

  • 一看就懂得Vue生命周期

    上图 1、创建vue实例,Vue();2、在创建Vue实例的时候,执行了init(),在init过程中首先调用了b...

  • Vue实例

    简介 想要使用Vue我们必须创建一个Vue的实例,然后在实例中写一些配置项。 创建一个Vue实例 ...

  • 2018-09-14

    $el 获取vue绑定的元素的 $data 获取vue实例中的数据 $options 获取vue实例中的...

  • Vue双向绑定

    依赖订阅: 1.首先将vue实例中的data数据挂载到vue实例上,本质是让vue实例代理data中的数据 2.将...

  • js中使用Vue实例

    1、main.js导出vue实例: 2、在需要使用的js中引入(仅限Vue实例加载完才能使用)

  • 组件 ,组件Data ,组件的传值 ,组件传值案例

    组件是可复用的 Vue 实例,且带有一个名字示例: 在Vue实例中data写法是 但是在组件中data必须是一个函...

  • 组件 ,组件Data ,组件的传值 ,组件传值案例

    组件是可复用的 Vue 实例,且带有一个名字示例: 在Vue实例中data写法是 但是在组件中data必须是一个函...

网友评论

      本文标题:PointerLock在vue中图片实例

      本文链接:https://www.haomeiwen.com/subject/pndvhqtx.html