feat(render): add mergeNavbar option, close #125, #124 (#145)

This commit is contained in:
cinwell.li 2017-04-09 12:10:37 +08:00 • committed by GitHub
commit 9220523a40
11 changed files with 67 additions and 28 deletions

View file

@ -29,7 +29,8 @@
loadNavbar: true, loadNavbar: true,
loadSidebar: true, loadSidebar: true,
name: 'docsify', name: 'docsify',
subMaxLevel: 2 subMaxLevel: 2,
mergeNavbar: true
} }
</script> </script>
<script src="/lib/docsify.js"></script> <script src="/lib/docsify.js"></script>

View file

@ -1,4 +1,4 @@
- :uk: - Translations
- [:cn: 中文](/zh-cn/) - [:cn: 中文](/zh-cn/)
- [:de: Deutsch](/de-de/) - [:de: Deutsch](/de-de/)
- [:uk: English](/) - [:uk: English](/)

View file

@ -305,3 +305,13 @@ window.$docsify = {
noEmoji: true noEmoji: true
} }
``` ```
## merge-navbar
Navbar will be merged with the sidebar on smaller screens.
```js
window.$docsify = {
mergeNavbar: true
}
```

View file

@ -1,4 +0,0 @@
- :de:
- [:cn: 中文](/zh-cn/)
- [:de: Deutsch](/de-de/)
- [:uk: English](/)

View file

@ -305,3 +305,13 @@ window.$docsify = {
noEmoji: true noEmoji: true
} }
``` ```
## merge-navbar
Navbar will be merged with the sidebar on smaller screens.
```js
window.$docsify = {
mergeNavbar: true
}
```

View file

@ -32,6 +32,7 @@
executeScript: true, executeScript: true,
loadSidebar: true, loadSidebar: true,
loadNavbar: true, loadNavbar: true,
mergeNavbar: true,
maxLevel: 4, maxLevel: 4,
name: 'docsify', name: 'docsify',
search: { search: {

View file

@ -1,4 +0,0 @@
- :cn:
- [:cn: 中文](/zh-cn/)
- [:de: Deutsch](/de-de/)
- [:uk: English](/)

View file

@ -315,3 +315,14 @@ window.$docsify = {
noEmoji: true noEmoji: true
} }
``` ```
## merge-navbar
小屏设备下合并导航栏到侧边栏。
```js
window.$docsify = {
mergeNavbar: true
}
```

View file

@ -17,7 +17,8 @@ const config = merge({
autoHeader: false, autoHeader: false,
executeScript: null, executeScript: null,
noEmoji: false, noEmoji: false,
ga: '' ga: '',
mergeNavbar: false
}, window.$docsify) }, window.$docsify)
const script = document.currentScript || const script = document.currentScript ||

View file

@ -7,6 +7,7 @@ import { markdown, sidebar, subSidebar, cover } from './compiler'
import { callHook } from '../init/lifecycle' import { callHook } from '../init/lifecycle'
import { getBasePath, getPath, isAbsolutePath } from '../route/util' import { getBasePath, getPath, isAbsolutePath } from '../route/util'
import { isPrimitive } from '../util/core' import { isPrimitive } from '../util/core'
import { isMobile } from '../util/env'
function executeScript () { function executeScript () {
const script = dom.findAll('.markdown-section>script') const script = dom.findAll('.markdown-section>script')
@ -153,12 +154,8 @@ export function initRender (vm) {
let el = dom.find(id) let el = dom.find(id)
let html = '' let html = ''
let navAppendToTarget = dom.body
navEl.classList.add('app-nav')
if (!config.repo) {
navEl.classList.add('no-badge')
}
if (!el) { if (!el) {
el = dom.create(id) el = dom.create(id)
dom.appendTo(dom.body, el) dom.appendTo(dom.body, el)
@ -173,8 +170,19 @@ export function initRender (vm) {
html += tpl.main(config) html += tpl.main(config)
// Render main app // Render main app
vm._renderTo(el, html, true) vm._renderTo(el, html, true)
if (config.mergeNavbar && isMobile) {
navAppendToTarget = dom.find('.sidebar')
} else {
navEl.classList.add('app-nav')
if (!config.repo) {
navEl.classList.add('no-badge')
}
}
// Add nav // Add nav
dom.before(dom.body, navEl) dom.before(navAppendToTarget, navEl)
if (config.themeColor) { if (config.themeColor) {
dom.$.head.innerHTML += tpl.theme(config.themeColor) dom.$.head.innerHTML += tpl.theme(config.themeColor)

View file

@ -10,7 +10,7 @@
body:not(.ready) { body:not(.ready) {
overflow: hidden; overflow: hidden;
[data-cloak], nav { [data-cloak], .app-nav {
display: none; display: none;
} }
} }
@ -83,7 +83,7 @@ kbd {
} }
/* navbar */ /* navbar */
nav.app-nav { .app-nav {
left: 0; left: 0;
margin: 25px 60px 0 0; margin: 25px 60px 0 0;
position: absolute; position: absolute;
@ -238,6 +238,11 @@ main {
color: inherit; color: inherit;
text-decoration: none; text-decoration: none;
} }
.app-nav {
display: block;
position: static;
}
} }
ul { ul {
@ -325,7 +330,7 @@ body.sticky {
.markdown-section { .markdown-section {
margin: 0 auto; margin: 0 auto;
max-width: 800px; max-width: 800px;
padding: 20px 15px 40px 15px; padding: 30px 15px 40px 15px;
position: relative; position: relative;
> * { > * {
@ -430,7 +435,7 @@ body.close {
display: none; display: none;
} }
nav { .app-nav {
display: none; display: none;
} }
} }
@ -440,11 +445,11 @@ body.close {
position: fixed; position: fixed;
} }
nav { .app-nav {
margin-top: 16px; margin-top: 16px;
} }
nav li ul { .app-nav li ul {
top: 30px; top: 30px;
} }
@ -465,7 +470,7 @@ body.close {
transition: transform 250ms ease; transition: transform 250ms ease;
} }
nav, .github-corner { .app-nav, .github-corner {
transition: transform 250ms ease-out; transition: transform 250ms ease-out;
} }
@ -489,7 +494,7 @@ body.close {
transform: translateX($sidebar-width); transform: translateX($sidebar-width);
} }
nav, .github-corner { .app-nav, .github-corner {
display: none; display: none;
} }
} }