docs style groundwork (#7281)

* docs style groundwork

* update docs style
pull/7288/head
杨奕 2017-09-28 22:36:38 -05:00 committed by Black Wayne
parent fa6580e7a9
commit d34e38a936
7 changed files with 109 additions and 26 deletions

View File

@ -641,4 +641,4 @@ Breaking change
*2016-11-9* *2016-11-9*
Element 1.0.0 released. - Element 1.0.0 released.

View File

@ -777,4 +777,4 @@
*2016-08-30* *2016-08-30*
Element 1.0.0-rc.1 发布 - Element 1.0.0-rc.1 发布

View File

@ -11,6 +11,22 @@
#app { #app {
height: 100%; height: 100%;
@when component {
.main-cnt {
padding: 0;
margin-top: 0;
min-height: auto;
}
.headerWrapper {
position: fixed;
width: 100%;
left: 0;
top: 0;
z-index: 1000;
border-bottom: solid 1px #ccc;
}
}
} }
body { body {
@ -167,12 +183,12 @@
</style> </style>
<template> <template>
<div id="app"> <div id="app" :class="{ 'is-component': isComponent }">
<main-header v-if="lang !== 'play'"></main-header> <main-header v-if="lang !== 'play'"></main-header>
<div class="main-cnt"> <div class="main-cnt">
<router-view></router-view> <router-view></router-view>
</div> </div>
<main-footer v-if="lang !== 'play'"></main-footer> <main-footer v-if="lang !== 'play' && !isComponent"></main-footer>
</div> </div>
</template> </template>
@ -188,6 +204,9 @@
computed: { computed: {
lang() { lang() {
return this.$route.path.split('/')[1] || 'zh-CN'; return this.$route.path.split('/')[1] || 'zh-CN';
},
isComponent() {
return /^component-/.test(this.$route.name || '');
} }
}, },

2
examples/bus.js Normal file
View File

@ -0,0 +1,2 @@
import Vue from 'vue';
export default new Vue();

View File

@ -90,7 +90,7 @@
methods: { methods: {
setNav() { setNav() {
let nav = navConfig[this.lang]; let nav = navConfig[this.lang];
this.nav = nav[0].children.concat(nav[1]); this.nav = [nav[0]].concat(nav[2].children);
nav[3].groups.map(group => group.list).forEach(list => { nav[3].groups.map(group => group.list).forEach(list => {
this.nav = this.nav.concat(list); this.nav = this.nav.concat(list);
}); });

View File

@ -1,6 +1,11 @@
<style scoped> <style scoped>
.headerWrapper { .headerWrapper {
height: 80px; height: 80px;
transition: transform .3s;
&.is-hidden {
transform: translateY(-80px);
}
} }
.header { .header {
height: 80px; height: 80px;
@ -25,7 +30,7 @@
font-weight: normal; font-weight: normal;
a { a {
color: #fff; color: #333;
text-decoration: none; text-decoration: none;
display: block; display: block;
} }
@ -90,7 +95,7 @@
a { a {
text-decoration: none; text-decoration: none;
color: #fff; color: #333;
display: block; display: block;
padding: 0 20px; padding: 0 20px;
opacity: .8; opacity: .8;
@ -157,7 +162,9 @@
} }
</style> </style>
<template> <template>
<div class="headerWrapper"> <div
class="headerWrapper"
:class="{ 'is-hidden': !visible }">
<header class="header" <header class="header"
ref="header" ref="header"
:style="headerStyle" :style="headerStyle"
@ -216,6 +223,7 @@
</div> </div>
</template> </template>
<script> <script>
import bus from '../bus';
import compoLang from '../i18n/component.json'; import compoLang from '../i18n/component.json';
export default { export default {
@ -223,7 +231,8 @@
return { return {
active: '', active: '',
isHome: false, isHome: false,
headerStyle: {} headerStyle: {},
visible: true
}; };
}, },
watch: { watch: {
@ -231,6 +240,10 @@
immediate: true, immediate: true,
handler() { handler() {
this.isHome = /^home/.test(this.$route.name); this.isHome = /^home/.test(this.$route.name);
if (/^component/.test(this.$route.name)) {
this.headerStyle.backgroundColor = '#fff';
return;
}
this.headerStyle.backgroundColor = `rgba(32, 160, 255, ${ this.isHome ? '0' : '1' })`; this.headerStyle.backgroundColor = `rgba(32, 160, 255, ${ this.isHome ? '0' : '1' })`;
} }
} }
@ -250,11 +263,14 @@
this.$router.push(this.$route.path.replace(this.lang, targetLang)); this.$router.push(this.$route.path.replace(this.lang, targetLang));
} }
}, },
created() {
bus.$on('toggleHeader', visible => {
this.visible = visible;
});
},
mounted() { mounted() {
function scroll(fn) { function scroll(fn) {
window.addEventListener('scroll', () => { window.addEventListener('scroll', fn, false);
fn();
}, false);
} }
scroll(() => { scroll(() => {
if (this.isHome) { if (this.isHome) {

View File

@ -1,10 +1,43 @@
<style> <style>
.page-component { .page-component {
padding-bottom: 95px;
box-sizing: border-box; box-sizing: border-box;
.content { height: 100%;
margin-left: -1px;
&.page-container {
padding: 0;
}
.page-component__nav {
width: 240px;
position: fixed;
top: 0;
bottom: 0;
overflow: auto;
padding-top: 80px;
transition: padding-top .3s;
&.is-extended {
padding-top: 0;
}
}
.side-nav {
height: 100%;
padding-top: 50px;
padding-bottom: 50px;
padding-right: 0;
& > ul {
padding-bottom: 50px;
}
}
.page-component__content {
padding-left: 270px;
}
.content {
padding-top: 130px;
> { > {
h3 { h3 {
margin: 45px 0 20px; margin: 45px 0 20px;
@ -83,15 +116,15 @@
</style> </style>
<template> <template>
<div class="page-container page-component"> <div class="page-container page-component">
<el-row> <div
<el-col :xs="24" :sm="6"> class="page-component__nav"
<side-nav :data="navsData[lang]" :base="`/${ lang }/component`"></side-nav> :class="{ 'is-extended': !showHeader }">
</el-col> <side-nav :data="navsData[lang]" :base="`/${ lang }/component`"></side-nav>
<el-col :xs="24" :sm="18"> </div>
<router-view class="content"></router-view> <div class="page-component__content">
<footer-nav></footer-nav> <router-view class="content"></router-view>
</el-col> <footer-nav></footer-nav>
</el-row> </div>
<transition name="back-top-fade"> <transition name="back-top-fade">
<div <div
class="page-component-up" class="page-component-up"
@ -106,6 +139,7 @@
</div> </div>
</template> </template>
<script> <script>
import bus from '../../bus';
import navsData from '../../nav.config.json'; import navsData from '../../nav.config.json';
import throttle from 'throttle-debounce/throttle'; import throttle from 'throttle-debounce/throttle';
@ -115,7 +149,9 @@
lang: this.$route.meta.lang, lang: this.$route.meta.lang,
navsData, navsData,
hover: false, hover: false,
showBackToTop: false showBackToTop: false,
scrollTop: 0,
showHeader: true
}; };
}, },
methods: { methods: {
@ -126,7 +162,17 @@
document.documentElement.scrollTop = 0; document.documentElement.scrollTop = 0;
}, },
handleScroll() { handleScroll() {
this.showBackToTop = (document.body.scrollTop || document.documentElement.scrollTop) >= 0.5 * document.body.clientHeight; const scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
this.showBackToTop = scrollTop >= 0.5 * document.body.clientHeight;
if (this.showHeader !== this.scrollTop > scrollTop) {
this.showHeader = this.scrollTop > scrollTop;
bus.$emit('toggleHeader', this.showHeader);
}
if (scrollTop === 0) {
this.showHeader = true;
bus.$emit('toggleHeader', this.showHeader);
}
this.scrollTop = scrollTop;
} }
}, },
mounted() { mounted() {