提问者:小点点

允许三列之一在vuejs中滚动


我试图创建一个布局,其中我有一个标题和一个有三列的主区域。只有中心列应该是可滚动的。在找到一个相似的问题后,我把答案中提供的小提琴中的一个延长了。不幸的是,这只适用于沙箱。当我将它转移到我的vue组件时,整个页面都变得可滚动。我试图改变appbodyhtml类的css,但我只能得到没有滚动所有。

<template>
  <section class="main">
  <header>
    header: sized to content
      <br/>(but is it really?)
  </header>
  <div class="columns">
  <div class="column left">
  left
  </div>
  <div class="column center">
    main content: fills remaining space<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
    x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
  </div>
  
  <div class="column right">
  right
  </div>
    </div>

  <footer>
    footer: fixed height in px
  </footer>
</section>
</template>

<style>
body {
  margin: 0px;
}
.main {
  display: flex;
  flex-flow: column;
  height: 100vh;
}
header {
  background: tomato;
;
}
.columns {
  flex: 1;
  display: flex;
  flex-flow: row;
  background: gold;
  overflow: auto;
}
.column {
  float: left;
  width: 25%;
}
.center {
  width: 50%;
  overflow-y: auto;
  background: white;
}
footer {
  background: lightgreen;
  min-height: 60px;
}
</style>

共1个答案

匿名用户

看起来你正在尝试实现滚动当你的鼠标在中央div之外。如果是,那么您可以使用此解决方案。

mounted () {
  window.addEventListener('wheel', (event) => {
    const scrollable = window.document.querySelector('.column.center')
    scrollable.scrollTop += event.deltaY
  })
},