Selaa lähdekoodia

【国之重器】布局方案更新

任一存 2 vuotta sitten
vanhempi
commit
97dbbebd93

+ 3 - 0
.eslintrc.js

@@ -8,6 +8,9 @@ module.exports = {
     jquery: true,
     node: true,
   },
+  exclude: {
+
+  },
   'extends': [
     'plugin:vue/vue3-recommended',
     'eslint:recommended'

+ 5 - 0
public/index.html

@@ -9,6 +9,11 @@
     <title>我是标题</title>
   </head>
   <body>
+    <script src="./libs/jquery.2.2.2.js"></script>
+    <script src="./libs/isotope-layout.3.0.6.js"></script>
+    <script src="./libs/packery-mode.2.0.1.js"></script>
+
+    
     <!-- <script src="https://cdn.bootcss.com/vConsole/3.2.0/vconsole.min.js"></script> -->
     <noscript>
       <strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 12 - 0
public/libs/isotope-layout.3.0.6.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 4 - 0
public/libs/jquery.2.2.2.js


Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 6 - 0
public/libs/packery-mode.2.0.1.js


+ 6 - 0
src/router/index.js

@@ -3,6 +3,7 @@ import GeneralView from '../views/General.vue'
 import HistoryView from '../views/History.vue'
 import TreasureView from '../views/Treasure.vue'
 import MetaverseView from '../views/Metaverse.vue'
+import TestView from '../views/Test.vue'
 
 // import store from '@/store/index.js'
 
@@ -31,6 +32,11 @@ const routes = [
     name: 'MetaverseView',
     component: MetaverseView,
   },
+  {
+    path: '/test',
+    name: 'TestView',
+    component: TestView,
+  },
 ]
 
 const router = createRouter({

+ 83 - 0
src/views/Test.vue

@@ -0,0 +1,83 @@
+<template>
+  <div class="grid">
+    <div class="grid-item grid-item--width2" />
+    <div class="grid-item grid-item--height2" />
+    <div class="grid-item" />
+    <div class="grid-item" />
+    <div class="grid-item grid-item--width2 grid-item--height2" />
+    <div class="grid-item grid-item--width2" />
+    <div class="grid-item grid-item--width2" />
+    <div class="grid-item grid-item--height2" />
+    <div class="grid-item" />
+    <div class="grid-item grid-item--width2" />
+    <div class="grid-item grid-item--height2" />
+    <div class="grid-item" />
+    <div class="grid-item" />
+  </div>
+</template>
+
+<script>
+import {
+  onMounted,
+  reactive,
+  ref,
+  toRefs,
+} from 'vue'
+
+export default {
+  name: 'TestView',
+  // mounted() {
+  //   $('.grid').isotope({
+  //     layoutMode: 'packery',
+  //     itemSelector: '.grid-item',
+  //     packery: {
+  //       horizontal: true
+  //     }
+  //   })
+  // }
+}
+</script>
+
+<script setup>
+onMounted(() => {
+  $('.grid').isotope({
+    layoutMode: 'packery',
+    itemSelector: '.grid-item',
+    packery: {
+      horizontal: true
+    }
+  })
+})
+</script>
+
+<style lang="less" scoped>
+/* ---- grid ---- */
+
+.grid {
+  background: #DDD;
+  height: 100%;
+  background: red;
+}
+
+/* clear fix */
+.grid:after {
+  content: '';
+  display: block;
+  clear: both;
+}
+
+/* ---- .grid-item ---- */
+
+.grid-item {
+  float: left;
+  width: 100px;
+  height: 100px;
+  background: #0D8;
+  border: 2px solid #333;
+  border-color: hsla(0, 0%, 0%, 0.7);
+}
+
+.grid-item--width2 { width: 200px; }
+.grid-item--height2 { height: 200px; }
+
+</style>

+ 64 - 154
src/views/Treasure.vue

@@ -2,155 +2,50 @@
   <div
     ref="gridWrapperElem"
     class="history"
-    @mousemove.prevent
-    @mousemove="onMouseMove"
   >
     <div
       class="grid"
       @mousemove.prevent
+      @mousemove="onMouseMove"
+      @mouseleave="onMouseLeave"
       @mousedown="onMouseDown"
       @mouseup="onMouseUp"
     >
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      >
-        aaaa
-      </div>
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      >
-        bbbb
-      </div>
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item grid-item--width2"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
-      <div
-        class="grid-item"
-        @mousemove.prevent
-      />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--width2 grid-item--height2" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item grid-item--width2" />
+      <div class="grid-item grid-item--height2" />
+      <div class="grid-item" />
+      <div class="grid-item" />
     </div>
   </div>
 </template>
@@ -173,25 +68,32 @@ let isMouseDown = false
 let isDragged = false
 const gridWrapperElem = ref('null')
 function onMouseDown() {
-  console.log('mouse down')
   isMouseDown = true
   isDragged = false
 }
 function onMouseUp() {
-  console.log('mouse up')
   isMouseDown = false
 }
 function onMouseMove(e) {
   if (isMouseDown) {
     console.log(e)
-    gridWrapperElem.value.scrollTop -= e.movementX
+    gridWrapperElem.value.scrollLeft -= e.movementX
     isDragged = true
   }
 }
+function onMouseLeave(e) {
+  isMouseDown = false
+}
 
 onMounted(() => {
   setTimeout(() => {
-    var elem = document.querySelector('.grid')
+    $('.grid').isotope({
+      layoutMode: 'packery',
+      itemSelector: '.grid-item',
+      packery: {
+        horizontal: true
+      }
+    })
   }, 300)
 })
 </script>
@@ -207,16 +109,24 @@ onMounted(() => {
     // border-radius: 2px;
   }
   >.grid {
-    >.grid-item {
-      width: 200px;
-      height: 200px;
-      background: red;
+    background: #DDD;
+    height: 100%;
+    background: red;
+    &::after {
+      content: '';
+      display: block;
+      clear: both;
     }
-    >.grid-item--width2 {
-      width: 400px;
-      height: 200px;
-      background: blue;
+    >.grid-item {
+      float: left;
+      width: 100px;
+      height: 100px;
+      background: #0D8;
+      border: 2px solid #333;
+      border-color: hsla(0, 0%, 0%, 0.7);
     }
+    >.grid-item--width2 { width: 200px; }
+    >.grid-item--height2 { height: 200px; }
   }
 }
 </style>