我想为这个问题提供一个 Vuetify 的具体答案,无论是否涉及 Electron,这都应该适用。
Vuetify 的默认样式比简单的 CSS 解决方案更难,尤其是当布局变得更复杂时。
对于这个例子,我使用了 Vuetify 预定义主题 here 中的复杂布局
Vuetify 在 html 元素上带有一个 overflow-y: scroll 所以第一步是为此添加一个覆盖。
html {
overflow: hidden;
}
这将去掉横跨应用整个高度的右侧栏。
接下来,您需要将 v-content 区域设置为可滚动区域。设置此区域时需要注意一些问题:
- Display flex 已声明
- Vuetify 在样式属性中设置填充,因此您需要根据您的情况进行覆盖
- 您需要一个页眉高度的边距(仅当您从 64 像素更改页眉高度时才重要)
- 您需要使用 calc 将标题高度从内容容器的高度中移除(同上)
- 如果右侧有导航抽屉,则需要绑定一个类来处理此问题。
我的 v-content 的 CSS 看起来像这样,你需要一个重要的来覆盖填充,因为它是由 Vuetify 通过样式绑定设置的:
main.v-content {
width: 100vw;
height: calc(100vh - 64px);
flex-direction: column;
overflow: scroll;
margin-top: 64px;
padding-top: 0 !important;
}
我还有一个类绑定到模板中 v-content 标记上的临时右侧抽屉的状态,这确保滚动条在右侧导航抽屉打开时不会消失:
<v-content :class="{ draweropen: drawerRight }">
还有那个绑定类的 CSS,你需要再次删除 Vuetify 在抽屉打开时放置在 v-content 上的默认右侧填充:
.draweropen {
width: calc(100vw - 300px) !important;
padding-right: 0 !important;
}
如果您的内容像聊天一样底部加载,您可以选择将 flex-direction 设置为 column-reverse,这就是我在 CodePen Example 中所做的事情