mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-05-23 15:09:16 +08:00
docs
This commit is contained in:
parent
2b71650c09
commit
7f6ac15fca
@ -3,6 +3,7 @@
|
|||||||
<side-nav :data="navConfig['zh-CN']" base="/component"></side-nav>
|
<side-nav :data="navConfig['zh-CN']" base="/component"></side-nav>
|
||||||
<div class="page-content">
|
<div class="page-content">
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
|
<footer-nav></footer-nav>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
130
docs/components/footer-nav.vue
Normal file
130
docs/components/footer-nav.vue
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
<template>
|
||||||
|
<div class="footer-nav">
|
||||||
|
<a
|
||||||
|
href="javascript:void(0)"
|
||||||
|
v-if="leftNav"
|
||||||
|
class="footer-nav__link footer-nav__left"
|
||||||
|
@click="handleNavClick('prev')">
|
||||||
|
<zan-icon name="arrow"></zan-icon>
|
||||||
|
{{ leftNav.title }}
|
||||||
|
</a>
|
||||||
|
<a
|
||||||
|
href="javascript:void(0)"
|
||||||
|
v-if="rightNav"
|
||||||
|
class="footer-nav__link footer-nav__right"
|
||||||
|
@click="handleNavClick('next')">
|
||||||
|
<zan-icon name="arrow"></zan-icon>
|
||||||
|
{{ rightNav.title }}
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import navConfig from '../nav.config.json';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
currentPath: null,
|
||||||
|
nav: [],
|
||||||
|
leftNav: null,
|
||||||
|
rightNav: null
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
'$route.path'() {
|
||||||
|
this.setNav();
|
||||||
|
this.updateNav();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
setNav() {
|
||||||
|
let nav = navConfig['zh-CN'];
|
||||||
|
for (let i = 0; i < nav.length; i++) {
|
||||||
|
let navItem = nav[i];
|
||||||
|
if (!navItem.groups) {
|
||||||
|
this.nav.push(nav[i]);
|
||||||
|
} else {
|
||||||
|
for (let j = 0; j < navItem.groups.length; j++) {
|
||||||
|
this.nav = this.nav.concat(navItem.groups[j].list);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
updateNav() {
|
||||||
|
let baseUrl = '/component';
|
||||||
|
let currentIndex;
|
||||||
|
|
||||||
|
this.currentPath = this.$route.path.slice(baseUrl.length);
|
||||||
|
|
||||||
|
for (let i = 0, len = this.nav.length; i < len; i++) {
|
||||||
|
if (this.nav[i].path === this.currentPath) {
|
||||||
|
currentIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.leftNav = this.nav[currentIndex - 1];
|
||||||
|
this.rightNav = this.nav[currentIndex + 1];
|
||||||
|
},
|
||||||
|
|
||||||
|
handleNavClick(direction) {
|
||||||
|
this.$router.push(`/component${ direction === 'prev' ? this.leftNav.path : this.rightNav.path }`);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
this.setNav();
|
||||||
|
this.updateNav();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@component-namespace footer {
|
||||||
|
@b nav {
|
||||||
|
padding: 24px 0;
|
||||||
|
font-size: 30px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
@e link {
|
||||||
|
color: #3388FF;
|
||||||
|
overflow: hidden;
|
||||||
|
padding-top: 35px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.zan-icon {
|
||||||
|
width: 20px;
|
||||||
|
display: block;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 20px;
|
||||||
|
border: 2px solid #3388FF;
|
||||||
|
border-radius: 50%;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@e left {
|
||||||
|
float: left;
|
||||||
|
|
||||||
|
.zan-icon {
|
||||||
|
transform: rotate(180deg);
|
||||||
|
left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@e right {
|
||||||
|
float: right;
|
||||||
|
|
||||||
|
.zan-icon {
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -5,6 +5,7 @@ import navConfig from './nav.config.json';
|
|||||||
import routes from './router.config';
|
import routes from './router.config';
|
||||||
import SideNav from './components/side-nav';
|
import SideNav from './components/side-nav';
|
||||||
import DemoBlock from './components/demo-block';
|
import DemoBlock from './components/demo-block';
|
||||||
|
import FooterNav from './components/footer-nav';
|
||||||
import ZanUI from 'src/index.js';
|
import ZanUI from 'src/index.js';
|
||||||
|
|
||||||
import 'packages/zanui-css/src/index.css';
|
import 'packages/zanui-css/src/index.css';
|
||||||
@ -19,6 +20,7 @@ Vue.use(VueRouter);
|
|||||||
Vue.use(ZanUI);
|
Vue.use(ZanUI);
|
||||||
Vue.component('side-nav', SideNav);
|
Vue.component('side-nav', SideNav);
|
||||||
Vue.component('demo-block', DemoBlock);
|
Vue.component('demo-block', DemoBlock);
|
||||||
|
Vue.component('footer-nav', FooterNav);
|
||||||
|
|
||||||
let routesConfig = routes(navConfig);
|
let routesConfig = routes(navConfig);
|
||||||
routesConfig.push({
|
routesConfig.push({
|
||||||
@ -32,11 +34,8 @@ const router = new VueRouter({
|
|||||||
routes: routesConfig
|
routes: routesConfig
|
||||||
});
|
});
|
||||||
|
|
||||||
let indexScrollTop = 0;
|
|
||||||
router.beforeEach((route, redirect, next) => {
|
router.beforeEach((route, redirect, next) => {
|
||||||
if (route.path !== '/') {
|
window.scrollTo(0, 0);
|
||||||
indexScrollTop = document.body.scrollTop;
|
|
||||||
}
|
|
||||||
if (isMobile()) {
|
if (isMobile()) {
|
||||||
window.location.replace(location.pathname + 'examples.html#' + route.path);
|
window.location.replace(location.pathname + 'examples.html#' + route.path);
|
||||||
return;
|
return;
|
||||||
@ -45,16 +44,6 @@ router.beforeEach((route, redirect, next) => {
|
|||||||
next();
|
next();
|
||||||
});
|
});
|
||||||
|
|
||||||
router.afterEach(route => {
|
|
||||||
if (route.path !== '/') {
|
|
||||||
document.body.scrollTop = 0;
|
|
||||||
} else {
|
|
||||||
Vue.nextTick(() => {
|
|
||||||
document.body.scrollTop = indexScrollTop;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new Vue({ // eslint-disable-line
|
new Vue({ // eslint-disable-line
|
||||||
render: h => h(App),
|
render: h => h(App),
|
||||||
router
|
router
|
||||||
|
Loading…
x
Reference in New Issue
Block a user