Vue は、開発者が豊富な対話性を備えた Web アプリケーションを作成するのに役立つ人気の JavaScript フレームワークです。スクロールバーは Web アプリケーションにおいて非常に重要な要素ですが、ブラウザーのデフォルトのスクロールバーは多くの場合見苦しく、あらゆる状況に適しているわけではありません。この記事では、Vueを使ってカスタムスクロールバーを実装する方法を紹介します。
まず、コンテナを作成する必要があります。リストを含む div コンテナを作成しましょう:
<div class="container"> <ul class="list"> <li v-for="item in items" :key="item.id">{{ item.text }}</li> </ul> </div>
コンテナを設定する必要があります。スクロール可能であり、デフォルトのスクロールバーを非表示にする必要があります。 CSS スタイルを追加しましょう:
.container { height: 300px; overflow: hidden; position: relative; } .list { margin: 0; padding: 0; list-style: none; height: 100%; overflow-y: scroll; } ::-webkit-scrollbar { width: 0.5em; } ::-webkit-scrollbar-track { background-color: #f1f1f1; } ::-webkit-scrollbar-thumb { background-color: #888; border-radius: 16px; }
ここでは、コンテナの高さを 300px に設定し、カスタム スクロールバーを使用できるようにデフォルトのスクロールバーを非表示にします。
カスタム スクロール バーの位置を更新できるように、コンテナーのスクロール イベントをリッスンする必要があります。 Vue では、@scroll
属性を使用してイベント リスナーをバインドできます。
<div class="container" @scroll="onScroll"> <ul class="list"> <li v-for="item in items" :key="item.id">{{ item.text }}</li> </ul> </div>
ここでは、スクロール イベントのコールバック関数として onScroll
メソッドを使用します。コンテナがスクロールされるとメソッドがトリガーされます。ここで、Vue のインスタンスで onScroll
メソッドを定義しましょう。
new Vue({ el: '#app', data: { items: [], // 数据数组 scrollTop: 0, // 当前滚动位置 containerHeight: 0, // 容器高度 listHeight: 0, // 列表高度 thumbHeight: 0, // 滚动条高度 }, created() { // 加载数据 this.loadData(); }, methods: { // 滚动事件回调函数 onScroll(event) { this.scrollTop = event.target.scrollTop; this.thumbHeight = this.containerHeight / this.listHeight * this.containerHeight; }, // 加载数据 loadData() { // 向服务器请求数据,这里省略具体实现 }, }, });
onScroll
メソッドで、scrollTop## の値を更新します。 # プロパティ。コンテナのスクロール位置です。また、コンテナーのスクロール量と一致するように、カスタム スクロールバーの高さも計算しました。
<div class="container" ref="container" @scroll="onScroll"> <ul class="list" ref="list"> <li v-for="item in items" :key="item.id">{{ item.text }}</li> </ul> <div class="scrollbar" :style="{ height: thumbHeight + 'px', top: scrollTop + 'px' }"></div> </div>
thumbHeight と
scrollTop を div 要素の高さと上部の位置にバインドします。
computed: { // 容器高度 containerHeight() { return this.$refs.container.offsetHeight; }, // 列表高度 listHeight() { return this.$refs.list.offsetHeight; }, },
以上がVue を使用してカスタム スクロール バーを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。