|
@@ -1,157 +1,156 @@
|
|
|
<template>
|
|
|
<div
|
|
|
+ ref="gridWrapperElem"
|
|
|
class="history"
|
|
|
@mousemove.prevent
|
|
|
+ @mousemove="onMouseMove"
|
|
|
>
|
|
|
<div
|
|
|
- ref="gridWrapperElem"
|
|
|
- class="grid-wrapper"
|
|
|
+ class="grid"
|
|
|
@mousemove.prevent
|
|
|
+ @mousedown="onMouseDown"
|
|
|
+ @mouseup="onMouseUp"
|
|
|
>
|
|
|
<div
|
|
|
- class="grid"
|
|
|
+ class="grid-item"
|
|
|
@mousemove.prevent
|
|
|
- @mousedown="onMouseDown"
|
|
|
- @mousemove="onMouseMove"
|
|
|
- @mouseup="onMouseUp"
|
|
|
>
|
|
|
- <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"
|
|
|
- @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
|
|
|
- />
|
|
|
+ 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>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -169,7 +168,6 @@ import {
|
|
|
ref,
|
|
|
toRefs,
|
|
|
} from 'vue'
|
|
|
-import Masonry from "masonry-layout"
|
|
|
|
|
|
let isMouseDown = false
|
|
|
let isDragged = false
|
|
@@ -194,54 +192,30 @@ function onMouseMove(e) {
|
|
|
onMounted(() => {
|
|
|
setTimeout(() => {
|
|
|
var elem = document.querySelector('.grid')
|
|
|
- var msnry = new Masonry( elem, {
|
|
|
- // 所有选项都是可选的。但推荐设置下面头两个。
|
|
|
- itemSelector: '.grid-item',
|
|
|
- columnWidth: 160, // 默认宽度。不设置的话会用第一个item元素的宽度。可以用css selector。
|
|
|
- gutter: 10, // 也可以用css selector。
|
|
|
- horizontalOrder: false, // 默认false,表示往瀑布流里一张一张放图片时,是优先找最高的空位,高度一样时找最靠左的空位。如果赋值为true,则会(基本上)从左到右一行又一行地放置。
|
|
|
- percentPosition: false, // 默认false,如果true,图片位置会用百分比设置,适用于自适应布局。
|
|
|
- stamp: 'xxx', // 声明【要stamp的元素的选择器】,在布局时会避开这些元素的位置。
|
|
|
- fitWidth: false, // 默认false,如果为true,会根据container的父元素的尺寸,和【列或item】的固定宽度,算出container fit-content时的宽度像素值,并赋予container。这样就可以通过css中margin: 0 auto;来使container左右居中。前提条件:columnWidth选项值是个固定像素值,或者item的宽度是个固定像素值。
|
|
|
- originLeft: false, // 默认true,表示从左到右布局。
|
|
|
- originTop: true, // 类似上一条。
|
|
|
- containerStyle: { position: 'relative' }, // 这是默认值。会作为inline style加到container上。可以赋值为null。
|
|
|
- transitionDuration: '0.4s', // 默认值。赋值为0来避免transition效果。
|
|
|
- stagger: 30, // '0.03s'也会有同样的效果。“错开”的意思。设置这个,各个item的布局会依次执行而非同时执行。
|
|
|
- resize: true, // 默认true。窗口resize时调整items的尺寸和位置。
|
|
|
- initLayout: true, // 默认true。设为false则不会自动开始布局,需要手动触发。
|
|
|
- })
|
|
|
}, 300)
|
|
|
})
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
.history {
|
|
|
- width: 100vw;
|
|
|
- height: 100vh;
|
|
|
- >.grid-wrapper {
|
|
|
- width: 100vh;
|
|
|
- height: 100vw;
|
|
|
- overflow: auto;
|
|
|
- transform: translateY(100vh) rotate(-90deg);
|
|
|
- transform-origin: left top;
|
|
|
- background: green;
|
|
|
- &::-webkit-scrollbar { background: transparent; width: 0; } /*宽度是对垂直滚动条而言,高度是对水平滚动条而言*/
|
|
|
- &::-webkit-scrollbar-thumb {
|
|
|
- // background: rgba(220, 231, 240, 0.2);
|
|
|
- // border-radius: 2px;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ overflow: auto;
|
|
|
+ &::-webkit-scrollbar { background: transparent; width: 0; } /*宽度是对垂直滚动条而言,高度是对水平滚动条而言*/
|
|
|
+ &::-webkit-scrollbar-thumb {
|
|
|
+ // background: rgba(220, 231, 240, 0.2);
|
|
|
+ // border-radius: 2px;
|
|
|
+ }
|
|
|
+ >.grid {
|
|
|
+ >.grid-item {
|
|
|
+ width: 200px;
|
|
|
+ height: 200px;
|
|
|
+ background: red;
|
|
|
}
|
|
|
- >.grid {
|
|
|
- >.grid-item {
|
|
|
- width: 200px;
|
|
|
- height: 200px;
|
|
|
- background: red;
|
|
|
- }
|
|
|
- >.grid-item--width2 {
|
|
|
- width: 400px;
|
|
|
- height: 200px;
|
|
|
- background: blue;
|
|
|
- }
|
|
|
+ >.grid-item--width2 {
|
|
|
+ width: 400px;
|
|
|
+ height: 200px;
|
|
|
+ background: blue;
|
|
|
}
|
|
|
}
|
|
|
}
|