浏览代码

分享界面

任一存 2 年之前
父节点
当前提交
f84ff555c5
共有 5 个文件被更改,包括 83 次插入4 次删除
  1. 二进制
      src/assets/images/code2d.png
  2. 二进制
      src/assets/images/share-tip.png
  3. 28 0
      src/directives/v-click-outside.js
  4. 3 2
      src/main.js
  5. 52 2
      src/views/HomeWeb.vue

二进制
src/assets/images/code2d.png


二进制
src/assets/images/share-tip.png


+ 28 - 0
src/directives/v-click-outside.js

@@ -0,0 +1,28 @@
+export default {
+  install(Vue) {
+    Vue.directive('click-outside', {
+      bind(el, binding) {
+        function documentHandler(e) {
+          if (el.contains(e.target)) {
+            return false
+          }
+          if (binding.expression) {
+            binding.value(e)
+          }
+        }
+        el.__vueClickOutside__ = documentHandler
+        if (binding.modifiers.click) {
+          document.addEventListener('click', documentHandler)
+        }
+        if (binding.modifiers.mousedown) {
+          document.addEventListener('mousedown', documentHandler)
+        }
+      },
+      unbind(el) {
+        document.removeEventListener('click', el.__vueClickOutside__)
+        document.removeEventListener('mousedown', el.__vueClickOutside__)
+        delete el.__vueClickOutside__
+      }
+    })
+  }
+}

+ 3 - 2
src/main.js

@@ -6,8 +6,8 @@ import router from './router'
 import axios from 'axios'
 import axios from 'axios'
 import 'viewerjs/dist/viewer.css'
 import 'viewerjs/dist/viewer.css'
 import Viewer from 'v-viewer'
 import Viewer from 'v-viewer'
-// 图片懒加载
 import VueLazyLoad from 'vue-lazyload'
 import VueLazyLoad from 'vue-lazyload'
+import clickOutside from "@/directives/v-click-outside.js"
 
 
 // 禁用上下文菜单
 // 禁用上下文菜单
 document.oncontextmenu = function(e) {
 document.oncontextmenu = function(e) {
@@ -18,11 +18,12 @@ Vue.use(VueLazyLoad, {
   error: require('@/assets/images/IMGerror.png'),
   error: require('@/assets/images/IMGerror.png'),
   loading: require('@/assets/images/loading.gif')
   loading: require('@/assets/images/loading.gif')
 })
 })
+Vue.use(Viewer)
+Vue.use(clickOutside)
 
 
 Vue.config.productionTip = false
 Vue.config.productionTip = false
 Vue.prototype.$http = axios
 Vue.prototype.$http = axios
 
 
-Vue.use(Viewer)
 
 
 import './assets/base.css'
 import './assets/base.css'
 new Vue({
 new Vue({

+ 52 - 2
src/views/HomeWeb.vue

@@ -56,7 +56,7 @@
             </div>
             </div>
           </transition>
           </transition>
         </button> -->
         </button> -->
-        <button>
+        <button @click="onClickShare">
           <img
           <img
             class="share"
             class="share"
             src="@/assets/images/share.png"
             src="@/assets/images/share.png"
@@ -68,6 +68,7 @@
 
 
       <div
       <div
         v-if="isShowVideos"
         v-if="isShowVideos"
+        v-show="!isShowShare"
         class="swiper-wrapper-mine video-wrap"
         class="swiper-wrapper-mine video-wrap"
       >
       >
         <div
         <div
@@ -99,7 +100,8 @@
       </div>
       </div>
 
 
       <div
       <div
-        v-show="isShowImages"
+        v-if="isShowImages"
+        v-show="!isShowShare"
         class="swiper-wrapper-mine image-wrap"
         class="swiper-wrapper-mine image-wrap"
       >
       >
         <div
         <div
@@ -147,6 +149,25 @@
           <div class="swiper-button-next" />
           <div class="swiper-button-next" />
         </div>
         </div>
       </div>
       </div>
+
+      <div
+        v-if="isShowShare"
+        v-click-outside.click="closeCode2d"
+        class="share-wrap"
+      >
+        <img
+          src="@/assets/images/code2d.png"
+          alt=""
+          class="code"
+          draggable="false"
+        >
+        <img
+          src="@/assets/images/share-tip.png"
+          alt=""
+          class="tip"
+          draggable="false"
+        >
+      </div>
     </div>
     </div>
   </div>
   </div>
 </template>
 </template>
@@ -169,6 +190,7 @@ export default {
       bgImg,
       bgImg,
       titleBottomLine,
       titleBottomLine,
       isShowPlusOne: false,
       isShowPlusOne: false,
+      isShowShare: false,
     }
     }
   },
   },
   computed: {
   computed: {
@@ -268,6 +290,16 @@ export default {
     //   })
     //   })
     //   }
     //   }
     // },
     // },
+    onClickShare() {
+      setTimeout(() => {
+        this.isShowShare = true
+      }, 200)
+    },
+    closeCode2d() {
+      if (this.isShowShare) {
+        this.isShowShare = false
+      }
+    }
   }
   }
 }
 }
 </script>
 </script>
@@ -458,6 +490,24 @@ export default {
         }
         }
       }
       }
     }
     }
+
+    .share-wrap {
+      position: absolute;
+      top: 50%;
+      transform: translateY(-50%);
+      right: 244px;
+      > img.code {
+        width: 300px;
+        height: 300px;
+      }
+      > img.tip {
+        position: absolute;
+        left: 50%;
+        top: calc(100% + 10px);
+        transform: translateX(-50%);
+        width: 150px;
+      }
+    }
   }
   }
 }
 }