fuliqi
2024-01-24 29c1e7eb5ac16e90d8991a86c1c071bc312ec8d9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<template>
<div>
  <div ref="scrollBox" class="scrollBox" :style="{ width: boxWidth, opacity: visible ? 1 : 0}" @scroll="handleScroll" id="scrollBox">
     <div class="scrollContent" :style="{ width: contentWidth, display: 'inline-block' }" id="scrollContent">
     </div>
  </div>
</div>
</template>
 
<script>
import { mapGetters } from 'vuex'
 
export default {
  props: {
    visible: {
      type: Boolean,
      default: true
    },
    boxWidth: {
      type: String,
      required: true
    },
    contentWidth: {
      type: String,
      required: true
    },
    scrollLeft: {
      type: Number,
      default: 0
    }
  },
  data () {
    return {
      scrollBoxLeft: 0
    }
  },
  computed: {
    ...mapGetters([
      'mainContainerHeight'
    ])
  },
  watch: {
    scrollLeft (value) {
      this.$refs.scrollBox.scrollLeft = value
    }
  },
  methods: {
    handleScroll (e) {
      this.scrollBoxLeft = e.srcElement.scrollLeft
      this.$emit('update:scrollLeft', e.srcElement.scrollLeft)
    }
  }
}
</script>
 
<style lang="scss">
.scrollBox{
  overflow-x: auto;
  position: absolute;
  bottom: 0;
  transition: opacity ease-in-out .3s;;
  .scrollContent{
    height: 1px;
  }
}
</style>