我有一个带有bootstrap-vue项目的VueJS。 将显示选项卡列表,但它大于父级的宽度。因此,我想使用一对按钮从左向右滚动列表。
我找到了在自己的项目中工作的示例。 Horizontal Scroll Using Buttons in VueJS 但是我无法使其与选项卡一起使用。
在方法中,我以.nav-tabs为目标,因为这是一个呈现给DOM的类。我试图用。$ refs来解决这个问题,但由于它只有在渲染后才可见,因此无法到达实际的元素。
有人可以帮忙滚动标签吗?
https://jsfiddle.net/timmyl/xg8j7knb/19/
<div id="app">
<div class="container">
<b-row class="wrap" ref="wrap">
<b-tabs content-class="mt-3">
<b-tab v-for="category in categories" v-bind:title="category.name" :key="category.id">
</b-tab>
<b-tab>
Content
</b-tab>
</b-tabs>
</b-row>
<b-row>
<button @click="scroll_left">Scroll Left</button>
<button @click="scroll_right">Scroll Right</button>
</b-row>
</div>
</div>
methods: {
scroll_left() {
let content = document.querySelector(".nav-tabs");
content.scrollLeft -= 50;
},
scroll_right() {
let content = document.querySelector(".nav-tabs");
content.scrollLeft += 50;
}
.tab-panel {
flex-wrap: nowrap;
}
.wrap {
overflow: hidden;
width: 100%;
flex-direction: row;
}
.nav-tabs {
flex-wrap: nowrap;
white-space: nowrap;
}
答案 0 :(得分:1)
您仅需要稍微调整一下CSS,因为当前列表的内容正在扩展到全屏状态,并且您需要添加overflow
属性以使内容可滚动,
所以这是你所缺少的:
.nav-tabs {
flex-wrap: nowrap;
white-space: nowrap;
max-width: 500px;
overflow: auto;
}
我刚刚修改了您的沙箱,并将以上属性添加到.nav-tabs