====拖拽===

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";

Vue.config.productionTip = false;

import axios from "axios";
Vue.prototype.$axios = axios;
//全局引入axios

import Vant from "vant";
import "vant/lib/index.css";
Vue.use(Vant);
//全局引入vant


import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);
//全局引入element-ui



// 自定义指令

Vue.directive('drag', function (el) {
  // 鼠标 点击的 
  el.onmousedown = (e) => {
    console.log(e);
    const { ox, oy } = {
      ox: e.clientX - el.offsetLeft,
      oy: e.clientY - el.offsetTop
    }

    // 监听鼠标的移动的事件
    document.onmousemove = (em) => {
      const { left, top } = {
        left: em.clientX - ox,
        top: em.clientY - oy
      }
      // 将鼠标 换成 小手
      el.style.cursor = 'pointer'

      el.style.left = left + 'px'

      el.style.top = top + 'px'

    }

    // 监听鼠标 抬起的事件  
    document.onmouseup = (eu) => {
      document.onmousemove = null

      el.style.cursor = 'default'

    }

  }

})

new Vue({
  router,
  store,
  render: (h) => h(App),
}).$mount("#app");

<template>
  <div @mousedown="show=false" class="home" @click="flag=0" :style="'background: url('+require('@/assets/'+imgmask+'.webp')+') no-repeat; background-size: 100% 100%;'">
    <div class="left">
        <span @click.stop="tabBtn(1)" :class="flag==1?'active' :''">
          <img src="/5.png" alt="">
          换皮肤
        </span>
        <span @click.stop="tabBtn(2)" :class="flag==2?'active' :''">
          <img src="/4.png" alt="">
          浏览器
        </span>
    </div>

    <div class="cont" v-if="showbool" v-drag>
      <mymodel @boolshowBtn="showbool=false" :title="'换皮肤'" @imgBtn="imgBtn"></mymodel>
    </div>

    <div class="footer">
        <img src="/6.png" alt="" @click="maskBtN">
    </div>
    <div class="mask" v-show="show">
      菜单栏
    </div>
  </div>
</template>

<script>
import mymodel from "@/components/mymodel";

export default {
  name: "Home",
  data() {
    return {
      flag: 0,
      showbool: true,
      show: false,
      imgmask: "1"
    };
  },
  methods: {
    // tab
    tabBtn(num) {
      this.flag = num;
      if (num == 1) {
        this.showbool = true;
      }
      console.log(num);
    },
    // mask
    maskBtN() {
      this.show = true;
    },
    // 换肤
    imgBtn(num) {
      this.imgmask = num;
    }
  },
  components: {
    mymodel
  }
};
</script>
<style lang="scss" scoped>
* {
  padding: 0;
  margin: 0;
}
.home {
  width: 100vw;
  height: 100vh;
  // background: url("../assets/1.webp") 50% 50% no-repeat;
  // background-size: 100% 100%;
  position: relative;
  .left {
    width: 40px;
    height: 100px;
    position: fixed;
    left: 20px;
    top: 20px;
    span {
      display: inline-block;
      width: 40px;
      height: 50px;
      text-align: center;
      font-size: 12px;
      color: #fff;
      margin-top: 10px;
      img {
        width: 30px;
        height: 30px;
      }
    }
    .active {
      background: red;
    }
  }
  .cont {
    position: absolute;
    left: calc(50vw - 200px);
    top: calc(50vh - 150px);
  }
  .footer {
    position: fixed;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 30px;
    background-color: #0e171b;
    padding: 2px 10px;
    img {
      width: 20px;
      height: 20px;
    }
  }
  .mask {
    width: 120px;
    height: 200px;
    background-color: #fff;
    position: fixed;
    left: 0;
    bottom: 30px;
  }
}
</style>

上一篇:Vue快速入门


下一篇:Java的特性和优势