根据Vue JS中的另一个div设置div的宽度

fjnneemd  于 2023-03-13  发布在  Vue.js
关注(0)|答案(1)|浏览(199)

我正试图实现一个双滚动,其中有一个滚动一个以上和以下的表。
表的宽度基于添加更多列的用户操作,因此宽度始终是动态的。
我为第二卷所做的如下所示。

<div class="wrapper1" v-on:scroll.passive="handleScroll1" ref="wrapper1">
        <div class="div1" style="width:${this.width} + 'px'"></div>
</div>
<div class="wrapper2" v-on:scroll.passive="handleScroll2" ref="wrapper2">
    <div class="content" ref="content" >Content</div>
</div>

这里我想根据内容宽度设置div1的大小,以便两个滚动同时开始。
我试着用JS用this.$refs["content"]得到宽度,然后设置div1的宽度,但似乎不起作用。
请帮我一下。

ws51t4hk

ws51t4hk1#

基于horizontal scrollbar on top and bottom of table

<template>
  <div id="app">
    <div class="wrapper1" ref="wrapper1" @scroll="onScrollWrapper1">
      <div class="div1"></div>
    </div>
    <div class="wrapper2" ref="wrapper2" @scroll="onScrollWrapper2">
      <div class="div2">
        aaaa bbbb cccc dddd aaaa bbbb cccc dddd aaaa bbbb cccc dddd aaaa bbbb
        cccc dddd aaaa bbbb cccc dddd aaaa bbbb cccc dddd aaaa bbbb cccc dddd
      </div>
    </div>
  </div>
</template>

<script>
import {ref} from 'vue'

export default {
  name: "App",
  setup() {
    const wrapper1 = ref()
    const wrapper2 = ref()

    const  onScrollWrapper1 = () => {
      wrapper2.value.scrollLeft = wrapper1.value.scrollLeft
    }

    const  onScrollWrapper2 = () => {
      wrapper1.value.scrollLeft = wrapper2.value.scrollLeft
    }

    return {
      wrapper1,
      wrapper2,
      onScrollWrapper1,
      onScrollWrapper2,
    }
  }
};
</script>

<style>
.wrapper1,
.wrapper2 {
  width: 300px;
  border: none 0px RED;
  overflow-x: scroll;
  overflow-y: hidden;
}
.wrapper1 {
  height: 20px;
}
.wrapper2 {
  height: 200px;
}
.div1 {
  width: 1000px;
  height: 20px;
}
.div2 {
  width: 1000px;
  height: 200px;
  background-color: #88FF88;
  overflow: auto;
}
</style>

实时示例CodeSandbox

相关问题