vue實現(xiàn)頂部左右滑動導(dǎo)航
日常開發(fā)中經(jīng)常用到導(dǎo)航這些東西,寫篇文章記錄下。該導(dǎo)航實現(xiàn)為點擊末尾/起首位置,導(dǎo)航自動滑動出下一項的效果。
思路:判斷當(dāng)前點擊項,相對與屏幕的位置,若點擊的位置,滿足可移動的限制,進(jìn)行自動滑動處理。
實現(xiàn)如下:
vue
<template>
<div class="debug-index-page">
<div class="tab-layout" id="scroller">
<ul v-for="(tab, idx) in tabList" :key="idx">
<li
:id="`tab-${tab.id}`"
class="tab-item"
@click="onClickTab(tab)"
:style="`background:${tab.select ? 'red' : 'none'}`"
>
{{ tab.text }}
</li>
</ul>
</div>
</div>
</template>
JS
export default {
data() {
return {
tabList: [],
}
},
created() {
let list = [
"我的貴族",
"貴族1",
"我的貴族2",
"貴族3",
"貴族4",
"貴族5",
"我的貴族6",
"我的貴族7",
];
list.forEach((text, idx) => {
this.tabList.push({
text,
id: idx, // tab標(biāo)識
select: idx == 0, // 是否被選擇
index: idx // 處于顯示的位置
});
});
},
computed: {
curTab() {
return this.tabList.find(v => v.select);
}
},
methods: {
onClickTab(tabInfo) {
let curTab = this.curTab;
if (curTab.id == tabInfo.id) return;
let { index, id } = tabInfo;
// 滑動控件
let scroller = document.getElementById("scroller");
let speed = scroller.scrollWidth / this.tabList.length;
let tab = document.getElementById(`tab-${id}`);
let bWidth = document.body.clientWidth;
// 點擊右邊
if (curTab.index < index && tab.clientWidth * index >= bWidth - speed) {
// 滑動的距離
scroller.scrollLeft = (index + 2) * speed - bWidth;
} else if (curTab.index > index && (tab.clientWidth * index - (scroller.scrollLeft + bWidth) < speed)) {
// 滑動的距離
scroller.scrollLeft = (index - 1) * speed;
}
curTab.select = false;
this.tabList[index].select = true;
}
}
}
less
.debug-index-page {
width: 100%;
overflow:hidden;
.tab-layout {
width: 100%;
overflow-x: scroll;
display: flex;
.tab-item {
width: 1rem;
text-align: center;
}
}
}
以上就是導(dǎo)航的顯示了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用yarn創(chuàng)建vite+vue3&&electron多端運行
這篇文章主要介紹了如何使用yarn創(chuàng)建vite+vue3&&electron多端運行,本文分步驟給大家介紹的非常詳細(xì),包括使用yarn創(chuàng)建vite+vue3項目會遇到哪些問題,感興趣的朋友跟隨小編一起看看吧2024-03-03
vue 動態(tài)設(shè)置img的src地址無效,npm run build 后找不到文件的解決
這篇文章主要介紹了vue 動態(tài)設(shè)置img的src地址無效,npm run build 后找不到文件的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
Vue?和?Django?實現(xiàn)?Token?身份驗證的流程
這篇文章主要介紹了Vue?和?Django?實現(xiàn)?Token?身份驗證?,Vue.js?和?Django?編寫的前后端項目中,實現(xiàn)了基于?Token?的身份驗證機(jī)制,其他前后端框架的?Token?實現(xiàn)原理與本文一致,需要的朋友可以參考下2022-08-08
vue項目base64字符串轉(zhuǎn)圖片的實現(xiàn)代碼
這篇文章主要介紹了vue項目base64字符串轉(zhuǎn)圖片的實現(xiàn)代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07

