* add ignore

* Use postcss

* delete themes/

* fix build script

* fix css, fixed #15, fixed #13

* Add changelog

* Fix horizontal scroll for code block, fixed #11

* Fix sidebar animation
This commit is contained in:
cinwell.li 2016-11-30 21:33:44 +08:00 committed by GitHub
commit 02a0adb872
17 changed files with 888 additions and 1359 deletions

View file

@ -48,8 +48,8 @@ export function renderApp (dom, replace, opts) {
/**
* article
*/
export function renderArticle (content = 'not found', OPTIONS) {
renderTo('article', marked(content))
export function renderArticle (content, OPTIONS) {
renderTo('article', content ? marked(content) : 'not found')
if (!renderSidebar.rendered) renderSidebar(null, OPTIONS)
if (!renderNavbar.rendered) renderNavbar(null, OPTIONS)
}

View file

@ -0,0 +1,279 @@
* {
box-sizing: border-box;
-webkit-overflow-scrolling: touch;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-webkit-text-size-adjust: none;
-webkit-touch-callout: none;
-webkit-font-smoothing: antialiased;
}
html, body {
height: 100%;
}
body {
background-color: #fff;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif;
font-size: 15px;
letter-spacing: 0;
margin: 0;
overflow-x: hidden;
}
/* navbar */
nav {
position: absolute;
right: 0;
left: 0;
z-index: 10;
margin: 25px 60px 0 0;
text-align: right;
p {
margin: 0;
}
ul, li {
list-style: none;
display: inline-block;
margin: 0;
}
a {
margin: 0 1em;
padding: 5px 0;
font-size: 16px;
text-decoration: none;
color: inherit;
transition: color .3s;
&:hover {
color: $color-primary;
}
&.active {
color: $color-primary;
border-bottom: 2px solid $color-primary;
}
}
/* navbar dropdown */
li {
position: relative;
display: inline-block;
ul {
background-color: rgba(#fff, .6);
border: 1px solid $color-primary;
opacity: 0;
overflow: hidden;
padding: 0;
position: absolute;
right: 1em;
top: 26px;
transform-origin: 100% 0%;
transform: scale(1, 0);
transition: opacity .4s ease-out, transform .2s ease;
transition-delay: .3s;
li {
display: block;
font-size: 14px;
margin: 0;
padding: 4px 10px;
white-space: nowrap;
}
a {
display: block;
margin: 0;
padding: 0;
&.active {
border-bottom: 0;
}
}
}
&:hover ul {
opacity: 1;
transform: scale(1, 1);
transition: opacity .4s ease, transform .2s ease-out;
transition-delay: 0;
}
}
}
/* github corner */
.github-corner {
position: absolute;
top: 0;
right: 0;
z-index: 1;
&:hover .octo-arm {
animation:octocat-wave 560ms ease-in-out;
}
svg {
color: #fff;
height: 80px;
width: 80px;
fill: $color-primary;
}
}
/* main */
main {
size: 100% 100%;
position: relative;
}
/* sidebar */
.sidebar {
background-color: #fff;
border-right: 1px solid rgba(0, 0, 0, .07);
overflow-y: auto;
padding-top: 40px;
position: absolute 0 * 0 0;
transition: transform 250ms ease-out;
width: $sidebar-width;
z-index: 20;
ul {
margin: 0;
padding: 0;
}
ul, ul li {
list-style: none;
}
ul li a {
display: block;
border-bottom: none;
}
ul li ul {
padding-left: 20px;
}
}
/* sidebar toggle */
.sidebar-toggle {
background-color: transparent;
border: 0;
bottom: 10px;
left: 10px;
outline: none;
position: absolute;
text-align: center;
transition: opacity .3s;
width: 30px;
z-index: 30;
outline: none;
&:hover {
opacity: .4;
}
span {
background-color: $color-primary;
display: block;
size: 16px 2px;
margin-bottom: 4px;
}
}
/* main content */
.content {
overflow-y: auto;
position: absolute 0 0 0 $sidebar-width;
overflow-x: hidden;
padding-top: 20px;
transition: left 250ms ease;
}
/* markdown content found on pages */
.markdown-section {
position: relative;
margin: 0 auto;
max-width: 800px;
padding: 20px 15px 40px 15px;
> * {
box-sizing: border-box;
font-size: inherit;
}
>:first-child {
margin-top: 0!important;
}
}
body.close {
.sidebar {
transform: translateX(-$sidebar-width);
}
.content {
left: 0;
}
}
@media (max-width: 600px) {
nav {
margin-top: 16px;
}
nav li ul {
top: 30px;
}
.sidebar {
left: -$sidebar-width;
transition: transform 250ms ease-out;
}
.content {
left: 0;
min-width: 100vw;
transition: transform 250ms ease;
}
nav, .github-corner {
transition: transform 250ms ease-out;
}
body.close {
.sidebar {
transform: translateX($sidebar-width);
}
.content {
transform: translateX($sidebar-width);
}
nav, .github-corner {
transform: translateX($sidebar-width);
}
}
.github-corner {
&:hover .octo-arm {
animation: none;
}
.octo-arm {
animation: octocat-wave 560ms ease-in-out;
}
}
}
@keyframes octocat-wave {
0%,100% { transform: rotate(0); }
20%,60% { transform: rotate(-25deg); }
40%,80% { transform: rotate(10deg); }
}

260
src/themes/buble.css Normal file
View file

@ -0,0 +1,260 @@
@import url('https://fonts.googleapis.com/css?family=Inconsolata|Inconsolata-Bold');
$color-primary: #0074D9;
$sidebar-width: 16em;
@import "basic/layout";
body {
color: #34495e;
}
/* sidebar */
.sidebar {
color: #364149;
a {
color: #666;
text-decoration: none;
}
li {
list-style: none;
padding: 0.2em 0 0.2em 1em;
margin: 0;
}
ul li ul {
padding: 0;
}
.active {
background-color: #eee;
a {
color: #333;
}
}
}
.markdown-section h1,
.markdown-section h2,
.markdown-section h3,
.markdown-section h4,
.markdown-section strong {
font-weight: 400;
color: #333;
}
.markdown-section a {
color: $color-primary;
font-weight: 400;
}
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
word-spacing: 0.05em;
}
.markdown-section h1 {
margin: 0 0 1em;
font-size: 2em;
font-weight: 500;
}
.markdown-section h2 {
padding: 1rem 0 0 0;
margin: 0 0 1rem 0;
font-size: 1.8em;
font-weight: 400;
}
.markdown-section h3 {
margin: 52px 0 1.2em;
font-size: 1.5em;
}
.markdown-section h4 {
font-size: 1.25em;
}
.markdown-section h5 {
font-size: 1em;
}
.markdown-section h6 {
font-size: 1em;
color: #777;
}
.markdown-section figure,
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
margin: 1.2em 0;
}
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
margin: 0 0 1em 0;
line-height: 1.5;
}
.markdown-section ul,
.markdown-section ol {
padding-left: 1.5em;
}
.markdown-section li {
margin: 0;
line-height: 1.5;
}
.markdown-section blockquote {
color: #858585;
border-left: 4px solid $color-primary;
margin: 2em 0;
padding-left: 20px;
}
.markdown-section blockquote p {
font-weight: 600;
margin-left: 0;
}
.markdown-section iframe {
margin: 1em 0;
}
.markdown-section em {
color: #7f8c8d;
}
.markdown-section code {
background-color: #f9f9f9;
padding: 0.2em 0.4em;
border-radius: 3px;
white-space: pre;
font-family: Inconsolata;
}
.markdown-section pre {
background-color: #f9f9f9;
border-left: 2px solid #eee;
padding: 8px;
margin: 0 0 1em 0;
font-family: Inconsolata;
padding: 12px 10px 12px 12px;
font-size: 16px;
overflow: auto;
word-wrap: normal;
}
/* code highlight */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #93a1a1; /* base1 */
}
.token.punctuation {
color: #586e75; /* base01 */
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #268bd2; /* blue */
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.url,
.token.inserted {
color: #2aa198; /* cyan */
}
.token.entity {
color: #657b83; /* base00 */
background: #eee8d5; /* base2 */
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #a11; /* green */
}
.token.function {
color: #b58900; /* yellow */
}
.token.regex,
.token.important,
.token.variable {
color: #cb4b16; /* orange */
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.markdown-section pre>code {
display: block;
font-family: Inconsolata;
overflow: inherit;
max-width: inherit;
position: relative;
background-color: #f8f8f8;
padding: 0.8em 0.8em 0.4em;
line-height: 1.1em;
border-radius: 2px;
}
.markdown-section code::after, .markdown-section code::before {
letter-spacing: 0.05em;
}
code .token {
min-height: 1.5em;
-webkit-font-smoothing: initial;
-moz-osx-font-smoothing: initial;
}
.content img {
max-width: 100%;
}
.content span.light {
color: #7f8c8d;
}
.content span.info {
display: inline-block;
font-size: 0.85em;
margin-left: 20px;
vertical-align: middle;
width: 280px;
}

3
src/themes/pure.css Normal file
View file

@ -0,0 +1,3 @@
$color-primary: #000;
$sidebar-width: 300px;
@import "basic/layout";

305
src/themes/vue.css Normal file
View file

@ -0,0 +1,305 @@
@import url('https://fonts.googleapis.com/css?family=Roboto+Mono|Source+Sans+Pro:300,400,600');
$color-primary: #42b983;
$sidebar-width: 300px;
@import "basic/layout";
body {
background-color: #fff;
color: #34495e;
}
/* sidebar */
.sidebar {
color: #364149;
li {
margin: 6px 15px;
}
ul li a {
color: #7f8c8d;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
ul li ul {
padding: 0;
}
ul li.active>a {
color: $color-primary;
font-weight: 500;
}
}
/* markdown content found on pages */
.markdown-section h1,
.markdown-section h2,
.markdown-section h3,
.markdown-section h4,
.markdown-section strong {
font-weight: 600;
color: #2c3e50;
}
.markdown-section a {
color: $color-primary;
font-weight: 600;
}
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
word-spacing: 0.05em;
}
.markdown-section h1 {
margin: 0 0 1em;
font-size: 2em;
}
.markdown-section h2 {
font-size: 1.75em;
margin: 45px 0 0.8em;
}
.markdown-section h3 {
margin: 52px 0 1.2em;
font-size: 1.5em;
}
.markdown-section h4 {
font-size: 1.25em;
}
.markdown-section h5 {
font-size: 1em;
}
.markdown-section h6 {
font-size: 1em;
color: #777;
}
.markdown-section figure,
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
margin: 1.2em 0;
}
.markdown-section p,
.markdown-section ul,
.markdown-section ol {
line-height: 1.6em;
}
.markdown-section ul,
.markdown-section ol {
padding-left: 1.5em;
}
.markdown-section blockquote {
color: #858585;
border-left: 4px solid $color-primary;
margin: 2em 0;
padding-left: 20px;
}
.markdown-section blockquote p {
font-weight: 600;
margin-left: 0;
}
.markdown-section iframe {
margin: 1em 0;
}
.markdown-section em {
color: #7f8c8d;
}
.markdown-section code {
border-radius: 2px;
color: #e96900;
margin: 0 2px;
padding: 3px 5px;
white-space: nowrap;
font-size: 0.8em;
font-family: 'Roboto Mono', Monaco, courier, monospace;
background-color: #f8f8f8;
}
.markdown-section pre {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
background-color: #f8f8f8;
font-family: 'Roboto Mono', Monaco, courier, monospace;
line-height: 1.5em;
margin: 1.2em 0;
padding: 1.2em 1.4em;
position: relative;
overflow: auto;
word-wrap: normal;
}
/* code highlight */
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #8e908c;
}
.token.namespace {
opacity: .7;
}
.token.boolean,
.token.number {
color: #c76b29;
}
.token.punctuation {
color: #525252;
}
.token.property {
color: #c08b30;
}
.token.tag {
color: #2973b7;
}
.token.string {
color: $color-primary;
}
.token.selector {
color: #6679cc;
}
.token.attr-name {
color: #2973b7;
}
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #22a2c9;
}
.token.attr-value,
.token.control,
.token.directive,
.token.unit {
color: $color-primary;
}
.token.keyword {
color: #e96900;
}
.token.statement,
.token.regex,
.token.atrule {
color: #22a2c9;
}
.token.placeholder,
.token.variable {
color: #3d8fd1;
}
.token.deleted {
text-decoration: line-through;
}
.token.inserted {
border-bottom: 1px dotted #202746;
text-decoration: none;
}
.token.italic {
font-style: italic;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.important {
color: #c94922;
}
.token.entity {
cursor: help;
}
.markdown-section pre>code {
-moz-osx-font-smoothing: initial;
-webkit-font-smoothing: initial;
background-color: #f8f8f8;
border-radius: 2px;
color: #525252;
display: block;
font-family: 'Roboto Mono', Monaco, courier, monospace;
font-size: 0.8em;
line-height: inherit;
margin: 0 2px;
overflow: inherit;
padding: 3px 5px;
white-space: inherit;
max-width: inherit;
}
.markdown-section code::after, .markdown-section code::before {
letter-spacing: 0.05em;
}
code .token {
min-height: 1.5em;
-webkit-font-smoothing: initial;
-moz-osx-font-smoothing: initial;
}
pre::after {
color: #ccc;
content: attr(data-lang);
font-size: 0.75em;
font-weight: 600;
height: 15px;
line-height: 15px;
padding: 5px 10px 0;
position: absolute;
right: 0;
text-align: right;
top: 0;
}
.content img {
max-width: 100%;
}
.content span.light {
color: #7f8c8d;
}
.content span.info {
display: inline-block;
font-size: 0.85em;
margin-left: 20px;
vertical-align: middle;
width: 280px;
}