vuepress-theme-medium
Version:
Medium-Like blog theme for VuePress
189 lines (161 loc) • 3.19 kB
text/stylus
{$contentClass} {
code {
color: lighten($textColor, 20%);
padding: 0.1rem 0.4rem;
margin: 0.1rem;
font-size: 0.85em;
border-radius: 15px;
.token {
&.deleted {
color: #EC5975;
}
&.inserted {
color: $accentColor;
}
}
}
}
{$contentClass} {
pre, pre[class*='language-'] {
line-height: 1.4;
padding: 1rem;
margin: 2rem 0;
background-color: $codeBgColor;
border-radius: 6px;
overflow: auto;
code {
color: #333;
text-shadow: none;
padding: 0;
background-color: transparent;
border-radius: 0;
}
}
}
div[class*='language-'] {
position: relative;
background-color: $codeBgColor;
border-radius: 6px;
.highlight-lines {
user-select: none;
padding-top: 1.3rem;
position: absolute;
top: 0;
left: 0;
width: 100%;
line-height: 1.4;
.highlighted {
background-color: rgba(0, 0, 0, 66%);
}
}
pre, pre[class*='language-'] {
background: transparent;
position: relative;
z-index: 1;
}
&::before {
position: absolute;
z-index: 3;
top: 0.8em;
right: 1em;
font-size: 0.75rem;
color: rgba(0, 0, 0, 0.4);
}
&:not(.line-numbers-mode) {
.line-numbers-wrapper {
display: none;
}
}
&.line-numbers-mode {
.highlight-lines .highlighted {
position: relative;
&:before {
content: ' ';
position: absolute;
z-index: 3;
left: 0;
top: 0;
display: block;
width: $lineNumbersWrapperWidth;
height: 100%;
background-color: rgba(0, 0, 0, 66%);
}
}
pre {
padding-left: ($lineNumbersWrapperWidth + 1)rem;
vertical-align: middle;
}
.line-numbers-wrapper {
position: absolute;
top: 0;
width: $lineNumbersWrapperWidth;
text-align: center;
color: rgba(255, 255, 255, 0.3);
padding: 1.25rem 0;
line-height: 1.4;
br {
user-select: none;
}
.line-number {
position: relative;
z-index: 4;
user-select: none;
font-size: 0.85em;
}
}
&::after {
content: '';
position: absolute;
z-index: 2;
top: 0;
left: 0;
width: $lineNumbersWrapperWidth;
height: 100%;
border-radius: 6px 0 0 6px;
border-right: 1px solid rgba(0, 0, 0, 66%);
background-color: $codeBgColor;
}
}
}
for lang in $codeLang {
div{'[class~="language-' + lang + '"]'} {
&:before {
content: '' + lang;
}
}
}
div[class~='language-javascript'] {
&:before {
content: 'js';
}
}
div[class~='language-typescript'] {
&:before {
content: 'ts';
}
}
div[class~='language-markup'] {
&:before {
content: 'html';
}
}
div[class~='language-markdown'] {
&:before {
content: 'md';
}
}
div[class~='language-json']:before {
content: 'json';
}
div[class~='language-ruby']:before {
content: 'rb';
}
div[class~='language-python']:before {
content: 'py';
}
div[class~='language-bash']:before {
content: 'sh';
}
div[class~='language-php']:before {
content: 'php';
}