commit
1cdf45f578
|
@ -9,4 +9,4 @@ community_bridge: # Replace with a single Community Bridge project-name e.g., cl
|
||||||
liberapay: # Replace with a single Liberapay username
|
liberapay: # Replace with a single Liberapay username
|
||||||
issuehunt: # Replace with a single IssueHunt username
|
issuehunt: # Replace with a single IssueHunt username
|
||||||
otechie: # Replace with a single Otechie username
|
otechie: # Replace with a single Otechie username
|
||||||
custom: ['https://cdn.jsdelivr.net/gh/XPoet/image-hosting@master/FE-Cheerleaders/play-tour.png']
|
custom: ['https://cdn.staticaly.com/gh/XPoet/image-hosting@master/FE-Cheerleaders/play-tour.png']
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
name: npm publish
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
publish-npm:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
registry-url: https://registry.npmjs.org/
|
||||||
|
- run: npm publish
|
||||||
|
env:
|
||||||
|
NODE_AUTH_TOKEN: ${{secrets.NPM_PUBLISH_TOKEN}}
|
|
@ -2,3 +2,5 @@ node_modules
|
||||||
/.github/FUNDING.yml
|
/.github/FUNDING.yml
|
||||||
package-lock.json
|
package-lock.json
|
||||||
yarn.lock
|
yarn.lock
|
||||||
|
.vscode/*
|
||||||
|
.idea/*
|
||||||
|
|
31
_config.yml
31
_config.yml
|
@ -1,5 +1,5 @@
|
||||||
## ======================================================================================
|
## ======================================================================================
|
||||||
## Keep v3.4.9
|
## Keep v3.5.0
|
||||||
## Repository: https://github.com/XPoet/hexo-theme-keep
|
## Repository: https://github.com/XPoet/hexo-theme-keep
|
||||||
## Document: https://keep-docs.xpoet.cn
|
## Document: https://keep-docs.xpoet.cn
|
||||||
## ======================================================================================
|
## ======================================================================================
|
||||||
|
@ -42,12 +42,6 @@ style:
|
||||||
# e.g. font_family: STKaiti, STSong, STHeiti
|
# e.g. font_family: STKaiti, STSong, STHeiti
|
||||||
font_family:
|
font_family:
|
||||||
|
|
||||||
# Left side TOC width (you don't usually have to change it)
|
|
||||||
left_side_width: 260px
|
|
||||||
|
|
||||||
# Content area max width (you don't usually have to change it)
|
|
||||||
content_max_width: 920px
|
|
||||||
|
|
||||||
# Mouse hover style settings
|
# Mouse hover style settings
|
||||||
hover:
|
hover:
|
||||||
# Shadow effect when the mouse hover. Option values: true | false
|
# Shadow effect when the mouse hover. Option values: true | false
|
||||||
|
@ -159,12 +153,14 @@ post:
|
||||||
custom_label_list: ["Trainee", "Engineer", "Architect"]
|
custom_label_list: ["Trainee", "Engineer", "Architect"]
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------
|
||||||
# Code block tools
|
# Code block
|
||||||
# Support code copy and code block collapse
|
# Support code copy and code block collapse
|
||||||
# ---------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------
|
||||||
code_block_tools:
|
code_block:
|
||||||
enable: false # Option values: true | false
|
tools: # Include "code copy", "code block collapse" and "code language"
|
||||||
style: default # Option values: default | mac
|
enable: false # Option values: true | false
|
||||||
|
style: default # Option values: default | mac
|
||||||
|
highlight_theme: default # Option values: default | obsidian
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------
|
||||||
# Table of Contents in the Sidebar
|
# Table of Contents in the Sidebar
|
||||||
|
@ -217,6 +213,7 @@ comment:
|
||||||
|
|
||||||
# Valine
|
# Valine
|
||||||
# See: https://github.com/xCss/Valine
|
# See: https://github.com/xCss/Valine
|
||||||
|
# https://valine.js.org
|
||||||
valine:
|
valine:
|
||||||
appid: # Your leancloud application appid
|
appid: # Your leancloud application appid
|
||||||
appkey: # Your leancloud application appkey
|
appkey: # Your leancloud application appkey
|
||||||
|
@ -224,6 +221,7 @@ comment:
|
||||||
|
|
||||||
# Gitalk
|
# Gitalk
|
||||||
# See: https://github.com/gitalk/gitalk
|
# See: https://github.com/gitalk/gitalk
|
||||||
|
# https://gitalk.github.io
|
||||||
gitalk:
|
gitalk:
|
||||||
github_id: # GitHub repo owner
|
github_id: # GitHub repo owner
|
||||||
github_admins: # GitHub Admins (in Array type), optional.
|
github_admins: # GitHub Admins (in Array type), optional.
|
||||||
|
@ -233,10 +231,19 @@ comment:
|
||||||
|
|
||||||
# Twikoo
|
# Twikoo
|
||||||
# See: https://github.com/imaegoo/twikoo
|
# See: https://github.com/imaegoo/twikoo
|
||||||
|
# https://twikoo.js.org
|
||||||
twikoo:
|
twikoo:
|
||||||
env_id: # Tencent Cloud environment id
|
env_id: # Tencent Cloud environment id
|
||||||
region: # Environment region. If select Guangzhou, fill in "ap-guangzhou".
|
region: # Environment region. If select Guangzhou, fill in "ap-guangzhou".
|
||||||
version: 1.6.7 # Twikoo version, default use v1.6.7, you can custom fill
|
version: 1.6.7 # Twikoo version, default use v1.6.7
|
||||||
|
|
||||||
|
# Waline
|
||||||
|
# See: https://github.com/walinejs/waline
|
||||||
|
# https://waline.js.org/guide/get-started.html
|
||||||
|
waline:
|
||||||
|
server_url: # Server URL
|
||||||
|
reaction: # Article reactions
|
||||||
|
version: 2 # Waline version, default use v2
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------------
|
||||||
# RSS
|
# RSS
|
||||||
|
|
|
@ -1,19 +1,27 @@
|
||||||
|
<%
|
||||||
|
const {
|
||||||
|
enable: t_comment_enable,
|
||||||
|
use: t_comment_use
|
||||||
|
} = theme?.comment
|
||||||
|
%>
|
||||||
<div class="comments-container">
|
<div class="comments-container">
|
||||||
<div id="comment-anchor"></div>
|
<div id="comments-anchor"></div>
|
||||||
<div class="comment-area-title">
|
<div class="comment-area-title">
|
||||||
<i class="fas fa-comments"></i> <%- __('comments') %>
|
<i class="fas fa-comments"></i> <%- __('comments') %>
|
||||||
</div>
|
</div>
|
||||||
<% if (theme.comment.enable === true && theme.comment.hasOwnProperty(theme.comment.use)) { %>
|
<% if (t_comment_enable === true && t_comment_use) { %>
|
||||||
|
<% if (t_comment_use === 'valine') { %>
|
||||||
<% if (theme.comment.use === 'valine') { %>
|
|
||||||
<%- partial('valine') %>
|
<%- partial('valine') %>
|
||||||
|
|
||||||
<% } else if (theme.comment.use === 'gitalk') { %>
|
<% } else if (t_comment_use === 'gitalk') { %>
|
||||||
<%- partial('gitalk') %>
|
<%- partial('gitalk') %>
|
||||||
|
|
||||||
<% } else if (theme.comment.use === 'twikoo') { %>
|
<% } else if (t_comment_use === 'twikoo') { %>
|
||||||
<%- partial('twikoo') %>
|
<%- partial('twikoo') %>
|
||||||
|
|
||||||
|
<% } else if (t_comment_use === 'waline') { %>
|
||||||
|
<%- partial('waline') %>
|
||||||
|
|
||||||
<% } %>
|
<% } %>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,49 +1,66 @@
|
||||||
<% const { client_id, client_secret, repository, github_id, github_admins } = theme.comment.gitalk %>
|
<%
|
||||||
|
const { enable: pjax_enable } = theme?.pjax
|
||||||
|
const {
|
||||||
|
client_id,
|
||||||
|
client_secret,
|
||||||
|
repository,
|
||||||
|
github_id,
|
||||||
|
github_admins
|
||||||
|
} = theme.comment?.gitalk
|
||||||
|
let cdn_css = '//cdn.jsdelivr.net/npm/gitalk/dist/gitalk.css'
|
||||||
|
let cdn_js = '//cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.js'
|
||||||
|
const { enable: t_cdn_enable, provider: t_cdn_provider } = theme?.cdn
|
||||||
|
if (t_cdn_enable === true) {
|
||||||
|
switch (t_cdn_provider) {
|
||||||
|
case 'jsdelivr':
|
||||||
|
cdn_css = '//cdn.jsdelivr.net/npm/gitalk/dist/gitalk.css'
|
||||||
|
cdn_js = '//cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.js'
|
||||||
|
break
|
||||||
|
|
||||||
<% if(
|
case 'unpkg':
|
||||||
theme.comment.use === 'gitalk'
|
cdn_css = '//unpkg.com/gitalk/dist/gitalk.css'
|
||||||
&& client_id
|
cdn_js = '//unpkg.com/gitalk/dist/gitalk.min.js'
|
||||||
&& client_secret
|
break
|
||||||
&& github_id
|
}
|
||||||
&& repository
|
}
|
||||||
) { %>
|
%>
|
||||||
<div id="gitalk-container"></div>
|
<% if(client_id && client_secret && github_id && repository) { %>
|
||||||
<script <%= theme.pjax.enable === true ? 'data-pjax' : '' %>
|
<div class="gitalk-comment-container">
|
||||||
src="//cdn.jsdelivr.net/npm/gitalk/dist/gitalk.min.js"></script>
|
<div id="gitalk-container"></div>
|
||||||
<script <%= theme.pjax.enable === true ? 'data-pjax' : '' %>>
|
<link rel="stylesheet" href="<%= cdn_css %>">
|
||||||
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %> src="<%= cdn_js %>"></script>
|
||||||
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %>>
|
||||||
|
function loadGitalk() {
|
||||||
|
let __gitalk__pathname = decodeURI(location.pathname);
|
||||||
|
const __gitalk__pathnameLength = __gitalk__pathname.length;
|
||||||
|
const __gitalk__pathnameMaxLength = 50;
|
||||||
|
if (__gitalk__pathnameLength > __gitalk__pathnameMaxLength) {
|
||||||
|
__gitalk__pathname = __gitalk__pathname.substring(0, __gitalk__pathnameMaxLength - 3) + '...';
|
||||||
|
}
|
||||||
|
|
||||||
function loadGitalk() {
|
try {
|
||||||
let __gitalk__pathname = decodeURI(location.pathname);
|
Gitalk && new Gitalk({
|
||||||
const __gitalk__pathnameLength = __gitalk__pathname.length;
|
clientID: '<%= client_id %>',
|
||||||
const __gitalk__pathnameMaxLength = 50;
|
clientSecret: '<%= client_secret %>',
|
||||||
if (__gitalk__pathnameLength > __gitalk__pathnameMaxLength) {
|
repo: '<%= repository %>',
|
||||||
__gitalk__pathname = __gitalk__pathname.substring(0, __gitalk__pathnameMaxLength - 3) + '...';
|
owner: '<%= github_id %>',
|
||||||
}
|
admin: '<%= github_admins || [github_id] %>',
|
||||||
|
id: __gitalk__pathname,
|
||||||
|
language: '<%= config.language %>'
|
||||||
|
}).render('gitalk-container');
|
||||||
|
} catch (e) {
|
||||||
|
window.Gitalk = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
if ('<%= pjax_enable %>' === 'true') {
|
||||||
|
const loadGitalkTimeout = setTimeout(() => {
|
||||||
Gitalk && new Gitalk({
|
loadGitalk();
|
||||||
clientID: '<%= client_id %>',
|
clearTimeout(loadGitalkTimeout);
|
||||||
clientSecret: '<%= client_secret %>',
|
}, 1000);
|
||||||
repo: '<%= repository %>',
|
} else {
|
||||||
owner: '<%= github_id %>',
|
window.addEventListener('DOMContentLoaded', loadGitalk);
|
||||||
admin: '<%= github_admins || [github_id] %>',
|
}
|
||||||
id: __gitalk__pathname,
|
</script>
|
||||||
language: '<%= config.language %>'
|
</div>
|
||||||
}).render('gitalk-container');
|
|
||||||
|
|
||||||
} catch (e) {
|
|
||||||
window.Gitalk = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('<%= theme.pjax.enable %>') {
|
|
||||||
const loadGitalkTimeout = setTimeout(() => {
|
|
||||||
loadGitalk();
|
|
||||||
clearTimeout(loadGitalkTimeout);
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
window.addEventListener('DOMContentLoaded', loadGitalk);
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
|
@ -1,35 +1,47 @@
|
||||||
<%
|
<%
|
||||||
const { enable: pjax_enable } = theme.pjax
|
const { enable: pjax_enable } = theme?.pjax
|
||||||
let {
|
let {
|
||||||
env_id: tk_env_id, region: tk_region, version: tk_version
|
env_id: tk_env_id,
|
||||||
} = theme.comment.twikoo
|
region: tk_region,
|
||||||
|
version: tk_version
|
||||||
|
} = theme.comment?.twikoo
|
||||||
if (!tk_version) { tk_version = '1.6.7' }
|
if (!tk_version) { tk_version = '1.6.7' }
|
||||||
const twikoo_cdn_url = `//cdn.jsdelivr.net/npm/twikoo@${tk_version}/dist/twikoo.all.min.js`
|
const { enable: t_cdn_enable, provider: t_cdn_provider } = theme?.cdn
|
||||||
|
let twikoo_cdn_url = `//cdn.jsdelivr.net/npm/twikoo@${tk_version}/dist/twikoo.all.min.js`
|
||||||
|
if (t_cdn_enable === true) {
|
||||||
|
switch (t_cdn_provider) {
|
||||||
|
case 'jsdelivr':
|
||||||
|
twikoo_cdn_url = `//cdn.jsdelivr.net/npm/twikoo@${tk_version}/dist/twikoo.all.min.js`
|
||||||
|
break
|
||||||
|
|
||||||
|
case 'unpkg':
|
||||||
|
twikoo_cdn_url = `//unpkg.com/twikoo@${tk_version}/dist/twikoo.all.min.js`
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
%>
|
%>
|
||||||
<% if(theme.comment.use === 'twikoo' && tk_env_id) { %>
|
<% if(tk_env_id) { %>
|
||||||
<div class="twikoo-container">
|
<div class="twikoo-container">
|
||||||
<script <%= pjax_enable === true ? 'data-pjax' : '' %>
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %> src="<%= twikoo_cdn_url %>"></script>
|
||||||
src="<%= twikoo_cdn_url %>"
|
|
||||||
></script>
|
|
||||||
<div id="twikoo-comment"></div>
|
<div id="twikoo-comment"></div>
|
||||||
<script <%= pjax_enable === true ? 'data-pjax' : '' %>>
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %>>
|
||||||
function loadTwikoo() {
|
function loadTwikoo() {
|
||||||
twikoo.init({
|
twikoo.init({
|
||||||
el: '#twikoo-comment',
|
el: '#twikoo-comment',
|
||||||
envId: '<%= tk_env_id %>',
|
envId: '<%= tk_env_id %>',
|
||||||
region: '<%= tk_region %>',
|
region: '<%= tk_region %>',
|
||||||
lang: '<%= config.language %>' || 'zh-CN'
|
lang: '<%= config.language %>' || 'zh-CN'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('<%= pjax_enable === true %>') {
|
if ('<%= pjax_enable %>' === 'true') {
|
||||||
const loadTwikooTimeout = setTimeout(() => {
|
const loadTwikooTimeout = setTimeout(() => {
|
||||||
loadTwikoo();
|
loadTwikoo();
|
||||||
clearTimeout(loadTwikooTimeout);
|
clearTimeout(loadTwikooTimeout);
|
||||||
}, 1000);
|
}, 1000);
|
||||||
} else {
|
} else {
|
||||||
window.addEventListener('DOMContentLoaded', loadTwikoo);
|
window.addEventListener('DOMContentLoaded', loadTwikoo);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
|
@ -1,66 +1,82 @@
|
||||||
<% if(
|
<%
|
||||||
theme.comment.use === 'valine'
|
const { enable: pjax_enable } = theme?.pjax
|
||||||
&& theme.comment.valine.appid
|
const {
|
||||||
&& theme.comment.valine.appkey
|
appid,
|
||||||
) { %>
|
appkey,
|
||||||
|
placeholder
|
||||||
|
} = theme.comment?.valine
|
||||||
|
let cdn_url = '//cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js'
|
||||||
|
const { enable: t_cdn_enable, provider: t_cdn_provider } = theme?.cdn
|
||||||
|
if (t_cdn_enable === true) {
|
||||||
|
switch (t_cdn_provider) {
|
||||||
|
case 'jsdelivr':
|
||||||
|
cdn_url = '//cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js'
|
||||||
|
break
|
||||||
|
|
||||||
|
case 'unpkg':
|
||||||
|
cdn_url = '//unpkg.com/valine@latest/dist/Valine.min.js'
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<% if(appid && appkey) { %>
|
||||||
<div class="valine-container">
|
<div class="valine-container">
|
||||||
<script <%= theme.pjax.enable === true ? 'data-pjax' : '' %>
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %> src="<%= cdn_url %>"></script>
|
||||||
src="//cdn.jsdelivr.net/npm/valine@latest/dist/Valine.min.js"></script>
|
|
||||||
<div id="vcomments"></div>
|
<div id="vcomments"></div>
|
||||||
<script <%= theme.pjax.enable === true ? 'data-pjax' : '' %>>
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %>>
|
||||||
function loadValine() {
|
function loadValine() {
|
||||||
new Valine({
|
new Valine({
|
||||||
el: '#vcomments',
|
el: '#vcomments',
|
||||||
appId: '<%= theme.comment.valine.appid %>',
|
appId: '<%= appid %>',
|
||||||
appKey: '<%= theme.comment.valine.appkey %>',
|
appKey: '<%= appkey %>',
|
||||||
meta: ['nick', 'mail', 'link'],
|
meta: ['nick', 'mail', 'link'],
|
||||||
avatar: 'wavatar',
|
avatar: 'wavatar',
|
||||||
enableQQ: true,
|
enableQQ: true,
|
||||||
placeholder: '<%= theme.comment.valine.placeholder %>',
|
placeholder: '<%= placeholder %>',
|
||||||
lang: '<%= config.language %>'.toLowerCase()
|
lang: '<%= config.language %>'.toLowerCase()
|
||||||
});
|
});
|
||||||
|
|
||||||
function getAuthor(language) {
|
function getAuthor(language) {
|
||||||
switch (language) {
|
switch (language) {
|
||||||
case 'en':
|
case 'en':
|
||||||
return 'Author';
|
return 'Author';
|
||||||
case 'zh-CN':
|
case 'zh-CN':
|
||||||
return '博主';
|
return '博主';
|
||||||
default:
|
default:
|
||||||
return 'Master';
|
return 'Master';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add "Author" identify
|
||||||
|
const getValineDomTimer = setInterval(() => {
|
||||||
|
const vcards = document.querySelectorAll('#vcomments .vcards .vcard');
|
||||||
|
if (vcards.length > 0) {
|
||||||
|
let author = '<%= theme.base_info.author || config.author %>';
|
||||||
|
|
||||||
|
if (author) {
|
||||||
|
for (let vcard of vcards) {
|
||||||
|
const vnick_dom = vcard.querySelector('.vhead .vnick');
|
||||||
|
const vnick = vnick_dom.innerHTML;
|
||||||
|
if (vnick === author) {
|
||||||
|
vnick_dom.innerHTML = `${vnick} <span class="author">${getAuthor(KEEP.hexo_config.language)}</span>`
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
clearInterval(getValineDomTimer);
|
||||||
|
} else {
|
||||||
|
clearInterval(getValineDomTimer);
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
// Add "Author" identify
|
if ('<%= pjax_enable %>' === 'true') {
|
||||||
const getValineDomTimer = setInterval(() => {
|
const loadValineTimeout = setTimeout(() => {
|
||||||
const vcards = document.querySelectorAll('#vcomments .vcards .vcard');
|
loadValine();
|
||||||
if (vcards.length > 0) {
|
clearTimeout(loadValineTimeout);
|
||||||
let author = '<%= theme.base_info.author || config.author %>';
|
}, 1000);
|
||||||
|
} else {
|
||||||
if (author) {
|
window.addEventListener('DOMContentLoaded', loadValine);
|
||||||
for (let vcard of vcards) {
|
}
|
||||||
const vnick_dom = vcard.querySelector('.vhead .vnick');
|
|
||||||
const vnick = vnick_dom.innerHTML;
|
|
||||||
if (vnick === author) {
|
|
||||||
vnick_dom.innerHTML = `${vnick} <span class="author">${getAuthor(KEEP.hexo_config.language)}</span>`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
clearInterval(getValineDomTimer);
|
|
||||||
} else {
|
|
||||||
clearInterval(getValineDomTimer);
|
|
||||||
}
|
|
||||||
}, 2000);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('<%= theme.pjax.enable %>') {
|
|
||||||
const loadValineTimeout = setTimeout(() => {
|
|
||||||
loadValine();
|
|
||||||
clearTimeout(loadValineTimeout);
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
window.addEventListener('DOMContentLoaded', loadValine);
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
<%
|
||||||
|
const { enable: pjax_enable } = theme?.pjax
|
||||||
|
let {
|
||||||
|
server_url: waline_env_server_url,
|
||||||
|
version: waline_version,
|
||||||
|
reaction: waline_reaction
|
||||||
|
} = theme.comment?.waline
|
||||||
|
if (!waline_version) { waline_version = '2' }
|
||||||
|
let cdn_css = `//cdn.jsdelivr.net/npm/@waline/client@v${waline_version}/dist/waline.css`
|
||||||
|
let cdn_css_meta = `//cdn.jsdelivr.net/npm/@waline/client@v${waline_version}/dist/waline-meta.css`
|
||||||
|
let cdn_js = `//cdn.jsdelivr.net/npm/@waline/client@v${waline_version}/dist/waline.js`
|
||||||
|
const { enable: t_cdn_enable, provider: t_cdn_provider } = theme?.cdn
|
||||||
|
if (t_cdn_enable === true) {
|
||||||
|
switch (t_cdn_provider) {
|
||||||
|
case 'jsdelivr':
|
||||||
|
cdn_css = `//cdn.jsdelivr.net/npm/@waline/client@v${waline_version}/dist/waline.css`
|
||||||
|
cdn_css_meta = `//cdn.jsdelivr.net/npm/@waline/client@v${waline_version}/dist/waline-meta.css`
|
||||||
|
cdn_js = `//cdn.jsdelivr.net/npm/@waline/client@v${waline_version}/dist/waline.js`
|
||||||
|
break
|
||||||
|
|
||||||
|
case 'unpkg':
|
||||||
|
cdn_css = `//unpkg.com/@waline/client@v${waline_version}/dist/waline.css`
|
||||||
|
cdn_css_meta = `//unpkg.com/@waline/client@v${waline_version}/dist/waline-meta.css`
|
||||||
|
cdn_js = `//unpkg.com/@waline/client@v${waline_version}/dist/waline.js`
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
%>
|
||||||
|
<% if(waline_env_server_url) { %>
|
||||||
|
<div class="waline-comment-container">
|
||||||
|
<link rel="stylesheet" href="<%= cdn_css %>"/>
|
||||||
|
<link rel="stylesheet" href="<%= cdn_css_meta %>"/>
|
||||||
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %> src="<%= cdn_js %>"></script>
|
||||||
|
<div id="waline-comment"></div>
|
||||||
|
<script <%= pjax_enable === true ? 'data-pjax' : '' %>>
|
||||||
|
function loadWaline() {
|
||||||
|
Waline.init({
|
||||||
|
el: '#waline-comment',
|
||||||
|
serverURL: '<%= waline_env_server_url %>',
|
||||||
|
lang: '<%= config.language %>' || 'zh-CN',
|
||||||
|
comment: '.post-comments-count',
|
||||||
|
reaction: '<%= waline_reaction %>' === 'true'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('<%= pjax_enable %>' === 'true') {
|
||||||
|
setTimeout(() => {
|
||||||
|
loadWaline()
|
||||||
|
}, 1000)
|
||||||
|
} else {
|
||||||
|
window.addEventListener('DOMContentLoaded', loadWaline)
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
<% } %>
|
|
@ -32,7 +32,7 @@ const { site_uv: bsz_site_uv, site_pv: bsz_site_pv, enable: bsz_enable } = theme
|
||||||
<div class="theme-info info-item">
|
<div class="theme-info info-item">
|
||||||
<%- __('powered_by', '<a target="_blank" href="https://hexo.io">Hexo</a>') %> | <%- __('theme') %>
|
<%- __('powered_by', '<a target="_blank" href="https://hexo.io">Hexo</a>') %> | <%- __('theme') %>
|
||||||
|
|
||||||
<a class="theme-version" target="_blank" href="https://github.com/XPoet/hexo-theme-keep">Keep v3.4.9</a>
|
<a class="theme-version" target="_blank" href="https://github.com/XPoet/hexo-theme-keep">Keep v3.5.0</a>
|
||||||
</div>
|
</div>
|
||||||
<% if (f_icp) { %>
|
<% if (f_icp) { %>
|
||||||
<div class="icp-info info-item">
|
<div class="icp-info info-item">
|
||||||
|
|
|
@ -4,7 +4,7 @@ const { logo: s_logo, first_screen: s_first_screen } = theme.style
|
||||||
const { enable: s_fs_enable, header_transparent: s_fs_header_transparent } = s_first_screen
|
const { enable: s_fs_enable, header_transparent: s_fs_header_transparent } = s_first_screen
|
||||||
const { title: config_title } = config
|
const { title: config_title } = config
|
||||||
%>
|
%>
|
||||||
<header class="header-wrapper<%= is_home() && s_fs_header_transparent ? ' transparent-1' : '' %>">
|
<header class="header-wrapper<%= s_fs_enable === true && is_home() && s_fs_header_transparent ? ' transparent-1' : '' %>">
|
||||||
|
|
||||||
<div class="header-content<%- (s_fs_enable === true && is_home() && !page.prev) ? ' has-first-screen' : '' %>">
|
<div class="header-content<%- (s_fs_enable === true && is_home() && !page.prev) ? ' has-first-screen' : '' %>">
|
||||||
<div class="left">
|
<div class="left">
|
||||||
|
|
|
@ -39,5 +39,5 @@ const target_date = post.date !== post.updated ? post.updated : post.date
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a href="<%- url_for(post.path) %>"><%- __('read_more') %> <i class="fas fa-angle-right"></i></a>
|
<a class="read-more" href="<%- url_for(post.path) %>"><%- __('read_more') %> <i class="fas fa-angle-right"></i></a>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<% if (isLoadFriendsLink) { %>
|
<% if (isLoadFriendsLink) { %>
|
||||||
<%- partial('_partial/friends-link') %>
|
<%- partial('_partial/friends-link') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
<div class="page-template-content markdown-body">
|
<div class="page-template-content keep-markdown-body">
|
||||||
<% if (isLoadFriendsLink || page.content) { %>
|
<% if (isLoadFriendsLink || page.content) { %>
|
||||||
<%- page.content %>
|
<%- page.content %>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
|
|
|
@ -2,15 +2,16 @@
|
||||||
<ul class="tools-list">
|
<ul class="tools-list">
|
||||||
<!-- TOC aside toggle -->
|
<!-- TOC aside toggle -->
|
||||||
<% if (theme.toc.enable) { %>
|
<% if (theme.toc.enable) { %>
|
||||||
<li class="tools-item page-aside-toggle">
|
<li class="tools-item flex-center toggle-show-toc">
|
||||||
<i class="fas fa-outdent"></i>
|
<i class="fas fa-list"></i>
|
||||||
</li>
|
</li>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<!-- go comment -->
|
<!-- go comment -->
|
||||||
<% if (theme.comment.enable === true && theme.comment.hasOwnProperty(theme.comment.use)) { %>
|
<% if (theme.comment.enable === true && theme.comment.hasOwnProperty(theme.comment.use)) { %>
|
||||||
<li class="go-comment">
|
<li class="tools-item flex-center go-to-comments">
|
||||||
<i class="fas fa-comment"></i>
|
<i class="fas fa-comment"></i>
|
||||||
|
<span class="post-comments-count"></span>
|
||||||
</li>
|
</li>
|
||||||
<% } %>
|
<% } %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
const {
|
const {
|
||||||
local_search: t_local_search,
|
local_search: t_local_search,
|
||||||
code_copy: t_code_copy,
|
code_copy: t_code_copy,
|
||||||
code_block_tools: t_code_block_tools,
|
code_block: t_code_block,
|
||||||
lazyload: t_lazyload,
|
lazyload: t_lazyload,
|
||||||
toc: t_toc,
|
toc: t_toc,
|
||||||
pjax: t_pjax
|
pjax: t_pjax
|
||||||
|
@ -21,8 +21,8 @@ const {
|
||||||
<%- __js('js/local-search.js') %>
|
<%- __js('js/local-search.js') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<% if (t_code_block_tools?.enable === true || t_code_copy?.enable === true) { %>
|
<% if (t_code_copy?.enable === true || t_code_block?.enable === true || t_code_block?.tools?.enable === true) { %>
|
||||||
<%- __js('js/code-block-tools.js') %>
|
<%- __js('js/code-block.js') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<% if (t_lazyload?.enable === true) { %>
|
<% if (t_lazyload?.enable === true) { %>
|
||||||
|
@ -32,9 +32,9 @@ const {
|
||||||
<div class="post-scripts<%= theme.pjax?.enable === true ? ' pjax' : '' %>">
|
<div class="post-scripts<%= theme.pjax?.enable === true ? ' pjax' : '' %>">
|
||||||
<% if (t_toc?.enable === true && is_post()) { %>
|
<% if (t_toc?.enable === true && is_post()) { %>
|
||||||
<%- __js([
|
<%- __js([
|
||||||
'js/left-side-toggle.js',
|
'js/post-helper.js',
|
||||||
'js/libs/anime.min.js',
|
'js/toc.js',
|
||||||
'js/toc.js'
|
'js/libs/anime.min.js'
|
||||||
]) %>
|
]) %>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,10 +8,6 @@
|
||||||
<i class="fas fa-search-minus"></i>
|
<i class="fas fa-search-minus"></i>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="tools-item tool-expand-width flex-center">
|
|
||||||
<i class="fas fa-up-right-and-down-left-from-center"></i>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="tools-item tool-dark-light-toggle flex-center">
|
<li class="tools-item tool-dark-light-toggle flex-center">
|
||||||
<i class="fas fa-moon"></i>
|
<i class="fas fa-moon"></i>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
page.content,
|
page.content,
|
||||||
{
|
{
|
||||||
class: 'nav',
|
class: 'nav',
|
||||||
list_number: theme.toc.number
|
list_number: theme.toc.number || false
|
||||||
}
|
}
|
||||||
) %>
|
) %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,95 +1,103 @@
|
||||||
<div class="fade-in-down-animation">
|
<div class="fade-in-down-animation">
|
||||||
<div class="article-content-container">
|
<div class="post-page-container">
|
||||||
|
<div class="article-content-container">
|
||||||
|
|
||||||
<div class="article-title">
|
<div class="article-title">
|
||||||
<span class="title-hover-animation"><%= page.title %></span>
|
<span class="title-hover-animation"><%= page.title %></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if (theme.base_info.author || config.author) { %>
|
<% if (theme.base_info.author || config.author) { %>
|
||||||
<div class="article-header">
|
<div class="article-header">
|
||||||
<div class="avatar">
|
<div class="avatar">
|
||||||
<%- image_tag(theme.style.avatar) %>
|
<%- image_tag(theme.style.avatar) %>
|
||||||
</div>
|
|
||||||
<div class="info">
|
|
||||||
<div class="author">
|
|
||||||
<span class="name"><%= theme.base_info.author || config.author %></span>
|
|
||||||
<% if (theme.hasOwnProperty('post') && theme.post.author_label.enable === true) { %>
|
|
||||||
<span class="author-label"><%- getAuthorLabel(site.posts.length, theme.post.author_label.auto, theme.post.author_label.custom_label_list) %></span>
|
|
||||||
<% } %>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="info">
|
||||||
|
<div class="author">
|
||||||
|
<span class="name"><%= theme.base_info.author || config.author %></span>
|
||||||
|
<% if (theme.hasOwnProperty('post') && theme.post.author_label.enable === true) { %>
|
||||||
|
<span class="author-label"><%- getAuthorLabel(site.posts.length, theme.post.author_label.auto, theme.post.author_label.custom_label_list) %></span>
|
||||||
|
<% } %>
|
||||||
|
</div>
|
||||||
|
<div class="meta-info">
|
||||||
|
<%- partial('_partial/article-meta-info', {articleObject: page, index: true}) %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<% } else { %>
|
||||||
|
<div class="article-header-meta-info">
|
||||||
<div class="meta-info">
|
<div class="meta-info">
|
||||||
<%- partial('_partial/article-meta-info', {articleObject: page, index: true}) %>
|
<%- partial('_partial/article-meta-info', {articleObject: page, index: true}) %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
|
<div class="article-content keep-markdown-body">
|
||||||
|
<%- page.content %>
|
||||||
</div>
|
</div>
|
||||||
<% } else { %>
|
|
||||||
<div class="article-header-meta-info">
|
<% if (theme.copyright_info.enable) { %>
|
||||||
<div class="meta-info">
|
<div class="post-copyright-info">
|
||||||
<%- partial('_partial/article-meta-info', {articleObject: page, index: true}) %>
|
<%- partial('_partial/article-copyright-info') %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<% } %>
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<div class="article-content markdown-body">
|
<% if (page.tags.length) { %>
|
||||||
<%- page.content %>
|
<ul class="post-tags-box">
|
||||||
</div>
|
<% page.tags.forEach((tag) => { %>
|
||||||
|
<li class="tag-item">
|
||||||
|
<a href="<%- url_for(tag.path) %>">#<%= tag.name %></a>
|
||||||
|
</li>
|
||||||
|
<% }); %>
|
||||||
|
</ul>
|
||||||
|
<% } %>
|
||||||
|
|
||||||
<% if (theme.copyright_info.enable) { %>
|
<% if (page.prev || page.next) { %>
|
||||||
<div class="post-copyright-info">
|
<div class="article-nav">
|
||||||
<%- partial('_partial/article-copyright-info') %>
|
<% if (page.prev) { %>
|
||||||
</div>
|
<div class="article-prev">
|
||||||
<% } %>
|
<a class="prev"
|
||||||
|
rel="prev"
|
||||||
<% if (page.tags.length) { %>
|
href="<%= url_for(page.prev.path) %>"
|
||||||
<ul class="post-tags-box">
|
>
|
||||||
<% page.tags.forEach((tag) => { %>
|
|
||||||
<li class="tag-item">
|
|
||||||
<a href="<%- url_for(tag.path) %>">#<%= tag.name %></a>
|
|
||||||
</li>
|
|
||||||
<% }); %>
|
|
||||||
</ul>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<% if (page.prev || page.next) { %>
|
|
||||||
<div class="article-nav">
|
|
||||||
<% if (page.prev) { %>
|
|
||||||
<div class="article-prev">
|
|
||||||
<a class="prev"
|
|
||||||
rel="prev"
|
|
||||||
href="<%= url_for(page.prev.path) %>"
|
|
||||||
>
|
|
||||||
<span class="left arrow-icon flex-center">
|
<span class="left arrow-icon flex-center">
|
||||||
<i class="fas fa-chevron-left"></i>
|
<i class="fas fa-chevron-left"></i>
|
||||||
</span>
|
</span>
|
||||||
<span class="title flex-center">
|
<span class="title flex-center">
|
||||||
<span class="post-nav-title-item"><%= page.prev.title %></span>
|
<span class="post-nav-title-item"><%= page.prev.title %></span>
|
||||||
<span class="post-nav-item"><%= __('prev_posts') %></span>
|
<span class="post-nav-item"><%= __('prev_posts') %></span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
<% if (page.next) { %>
|
<% if (page.next) { %>
|
||||||
<div class="article-next">
|
<div class="article-next">
|
||||||
<a class="next"
|
<a class="next"
|
||||||
rel="next"
|
rel="next"
|
||||||
href="<%= url_for(page.next.path) %>"
|
href="<%= url_for(page.next.path) %>"
|
||||||
>
|
>
|
||||||
<span class="title flex-center">
|
<span class="title flex-center">
|
||||||
<span class="post-nav-title-item"><%= page.next.title %></span>
|
<span class="post-nav-title-item"><%= page.next.title %></span>
|
||||||
<span class="post-nav-item"><%= __('next_posts') %></span>
|
<span class="post-nav-item"><%= __('next_posts') %></span>
|
||||||
</span>
|
</span>
|
||||||
<span class="right arrow-icon flex-center">
|
<span class="right arrow-icon flex-center">
|
||||||
<i class="fas fa-chevron-right"></i>
|
<i class="fas fa-chevron-right"></i>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<% if (theme.comment.enable === true && theme.comment.hasOwnProperty(theme.comment.use)) { %>
|
<% if (theme.comment.enable === true && theme.comment.hasOwnProperty(theme.comment.use)) { %>
|
||||||
<div class="comment-container">
|
<div class="comment-container">
|
||||||
<%- partial('_partial/comment/comment') %>
|
<%- partial('_partial/comment/comment') %>
|
||||||
|
</div>
|
||||||
|
<% } %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<% if (is_post() && theme.toc.enable === true && page.toc !== false) { %>
|
||||||
|
<div class="toc-content-container">
|
||||||
|
<%- partial('_partial/toc') %>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
</a>
|
</a>
|
||||||
</h3>
|
</h3>
|
||||||
|
|
||||||
<div class="home-article-content markdown-body">
|
<div class="home-article-content keep-markdown-body">
|
||||||
<% if (post.excerpt) { %>
|
<% if (post.excerpt) { %>
|
||||||
<%- post.excerpt %>
|
<%- post.excerpt %>
|
||||||
<% } else { %>
|
<% } else { %>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<%- partial('_partial/progress-bar') %>
|
<%- partial('_partial/progress-bar') %>
|
||||||
<main class="page-container">
|
<main class="page-container">
|
||||||
|
|
||||||
<% if (theme.style.first_screen.enable === true && is_home() && !page.prev) { %>
|
<% if (theme.style.first_screen?.enable === true && is_home() && !page.prev) { %>
|
||||||
<%- partial('_partial/first-screen') %>
|
<%- partial('_partial/first-screen') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
<div class="page-main-content<%= is_home() ? ' home' : '' %>">
|
<div class="page-main-content<%= is_home() ? ' is-home' : '' %>">
|
||||||
|
|
||||||
<div class="page-main-content-top">
|
<div class="page-main-content-top">
|
||||||
<%- partial('_partial/header') %>
|
<%- partial('_partial/header') %>
|
||||||
|
@ -59,15 +59,9 @@
|
||||||
<%- partial('_partial/side-tools') %>
|
<%- partial('_partial/side-tools') %>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<% if (is_post() && theme.toc.enable === true && page.toc !== false) { %>
|
|
||||||
<aside class="page-aside">
|
|
||||||
<%- partial('_partial/toc') %>
|
|
||||||
</aside>
|
|
||||||
<% } %>
|
|
||||||
|
|
||||||
<%- partial('_partial/image-viewer') %>
|
<%- partial('_partial/image-viewer') %>
|
||||||
|
|
||||||
<% if (theme.local_search.enable) { %>
|
<% if (theme.local_search?.enable) { %>
|
||||||
<%- partial('_partial/local-search') %>
|
<%- partial('_partial/local-search') %>
|
||||||
<% } %>
|
<% } %>
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "hexo-theme-keep",
|
"name": "hexo-theme-keep",
|
||||||
"version": "3.4.9",
|
"version": "3.5.0",
|
||||||
"private": false,
|
"private": false,
|
||||||
"description": "A simple and elegant theme for Hexo.",
|
"description": "A simple and elegant theme for Hexo.",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
@ -40,7 +40,7 @@ hexo.extend.helper.register('export_config', function () {
|
||||||
style: theme.style || {},
|
style: theme.style || {},
|
||||||
local_search: theme.local_search || {},
|
local_search: theme.local_search || {},
|
||||||
code_copy: theme.code_copy || {},
|
code_copy: theme.code_copy || {},
|
||||||
code_block_tools: theme.code_block_tools || {},
|
code_block: theme.code_block || {},
|
||||||
side_tools: theme.side_tools || {},
|
side_tools: theme.side_tools || {},
|
||||||
pjax: theme.pjax || {},
|
pjax: theme.pjax || {},
|
||||||
lazyload: theme.lazyload || {},
|
lazyload: theme.lazyload || {},
|
||||||
|
|
|
@ -55,7 +55,8 @@ hexo.extend.helper.register('getPostUrl', function (rootUrl, path) {
|
||||||
|
|
||||||
const getSourceCdnUrl = (tyle, themeConfig, path) => {
|
const getSourceCdnUrl = (tyle, themeConfig, path) => {
|
||||||
const version = require('../../package.json').version
|
const version = require('../../package.json').version
|
||||||
const { provider = 'jsdelivr' } = themeConfig?.cdn
|
const cdn = themeConfig?.cdn || {}
|
||||||
|
const { provider = 'jsdelivr' } = cdn
|
||||||
|
|
||||||
let urlPrefix = ''
|
let urlPrefix = ''
|
||||||
switch (provider.toLocaleLowerCase()) {
|
switch (provider.toLocaleLowerCase()) {
|
||||||
|
|
|
@ -26,10 +26,10 @@ transition-t(property, delay, duration, function) {
|
||||||
for f in convert(function) {
|
for f in convert(function) {
|
||||||
$temp-function += ("," + f)
|
$temp-function += ("," + f)
|
||||||
}
|
}
|
||||||
|
|
||||||
transition-delay convert($temp-delay)
|
transition-delay convert($temp-delay)
|
||||||
transition-timing-function convert($temp-function)
|
transition-timing-function convert($temp-function)
|
||||||
transition-duration convert($temp-duration)
|
transition-duration convert($temp-duration)
|
||||||
|
|
||||||
transition-property convert($temp-property)
|
transition-property convert($temp-property)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ transition-t(property, delay, duration, function) {
|
||||||
.title-hover-animation {
|
.title-hover-animation {
|
||||||
position relative
|
position relative
|
||||||
display inline-block
|
display inline-block
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
line-height 1.3
|
line-height 1.3
|
||||||
vertical-align top
|
vertical-align top
|
||||||
border-bottom none
|
border-bottom none
|
||||||
|
@ -97,7 +97,7 @@ transition-t(property, delay, duration, function) {
|
||||||
left 0
|
left 0
|
||||||
width 100%
|
width 100%
|
||||||
height 2px
|
height 2px
|
||||||
background-color var(--second-text-color)
|
background-color var(--text-color-2)
|
||||||
transform scaleX(0)
|
transform scaleX(0)
|
||||||
visibility hidden
|
visibility hidden
|
||||||
content ""
|
content ""
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&::-webkit-scrollbar-track {
|
&::-webkit-scrollbar-track {
|
||||||
background var(--scroll-bar-bg-color)
|
background var(--scrollbar-background-color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,18 +43,33 @@ body {
|
||||||
height 100%
|
height 100%
|
||||||
margin 0
|
margin 0
|
||||||
padding 0
|
padding 0
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-weight $default-font-weight
|
font-weight $default-font-weight
|
||||||
font-size $default-font-size
|
font-size $default-font-size
|
||||||
font-family $default-font-family
|
font-family $default-font-family
|
||||||
line-height $default-font-line-height
|
line-height $default-font-line-height
|
||||||
background var(--background-color)
|
letter-spacing 0.2px
|
||||||
|
background var(--background-color-1)
|
||||||
|
|
||||||
&::-webkit-scrollbar {
|
&::-webkit-scrollbar {
|
||||||
width 0.6rem
|
width 0.6rem
|
||||||
height 0.6rem
|
height 0.6rem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width 0.5rem
|
||||||
|
height 0.5rem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+keep-mobile() {
|
||||||
|
&::-webkit-scrollbar {
|
||||||
|
width 0.4rem
|
||||||
|
height 0.4rem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
font-size $default-font-size * 0.96
|
font-size $default-font-size * 0.96
|
||||||
line-height $default-font-line-height * 0.96
|
line-height $default-font-line-height * 0.96
|
||||||
|
@ -93,12 +108,12 @@ li {
|
||||||
// a
|
// a
|
||||||
// ======================================================================
|
// ======================================================================
|
||||||
a {
|
a {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
text-decoration none
|
text-decoration none
|
||||||
|
|
||||||
i
|
i
|
||||||
span {
|
span {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
|
@ -134,7 +149,7 @@ img {
|
||||||
display block
|
display block
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
content ''
|
content ''
|
||||||
transition-t("background", "0", "0.2", "ease")
|
transition-t("background", "0", "0.2", "ease")
|
||||||
}
|
}
|
||||||
|
@ -149,7 +164,7 @@ img {
|
||||||
width 2rem
|
width 2rem
|
||||||
height 2rem
|
height 2rem
|
||||||
margin auto
|
margin auto
|
||||||
border 2px solid var(--fourth-text-color)
|
border 2px solid var(--text-color-6)
|
||||||
border-top-color var(--selection-color)
|
border-top-color var(--selection-color)
|
||||||
border-left-color var(--selection-color)
|
border-left-color var(--selection-color)
|
||||||
border-radius 50%
|
border-radius 50%
|
||||||
|
@ -179,14 +194,14 @@ button {
|
||||||
padding 0.4rem 1rem
|
padding 0.4rem 1rem
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
text-align center
|
text-align center
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
border-radius 5px
|
border-radius 5px
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
hover-style(true, 1.06, 1.06)
|
hover-style(true, 1.06, 1.06)
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--background-color)
|
color var(--background-color-1)
|
||||||
background var(--primary-color)
|
background var(--primary-color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -244,10 +259,10 @@ button {
|
||||||
display none
|
display none
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
padding 0.2rem 0.6rem
|
padding 0.2rem 0.6rem
|
||||||
color var(--fourth-text-color)
|
color var(--text-color-6)
|
||||||
font-size 0.8rem
|
font-size 0.8rem
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
background var(--first-text-color)
|
background var(--text-color-1)
|
||||||
border-radius 0.3rem
|
border-radius 0.3rem
|
||||||
transform translateX(-50%) translateY(-100%)
|
transform translateX(-50%) translateY(-100%)
|
||||||
transition-t("display", "0", "0.2", "ease")
|
transition-t("display", "0", "0.2", "ease")
|
||||||
|
@ -276,8 +291,8 @@ button {
|
||||||
justify-content center
|
justify-content center
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
min-height 6rem
|
min-height 6rem
|
||||||
background var(--fourth-text-color)
|
background var(--text-color-6)
|
||||||
border 0.2rem solid var(--default-text-color)
|
border 0.2rem solid var(--text-color-3)
|
||||||
border-radius 0.3rem
|
border-radius 0.3rem
|
||||||
transform translateX(-50%) translateY(-100%)
|
transform translateX(-50%) translateY(-100%)
|
||||||
transition-t("display", "0", "0.2", "ease")
|
transition-t("display", "0", "0.2", "ease")
|
||||||
|
|
|
@ -3,6 +3,76 @@
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
margin 1.4rem 0
|
margin 1.4rem 0
|
||||||
|
|
||||||
|
&.mac {
|
||||||
|
margin 1.4rem 0 1.8rem 0
|
||||||
|
box-shadow 0 0.8rem 2rem 0 rgba(0, 0, 0, 0.4)
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
.code-tools-box .copy {
|
||||||
|
opacity 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.code-tools-box {
|
||||||
|
justify-content flex-end
|
||||||
|
padding 0.4rem 0.6rem 0.7rem 0.4rem
|
||||||
|
background #21252b
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position absolute
|
||||||
|
left 0.8rem
|
||||||
|
width 0.76rem
|
||||||
|
height 0.76rem
|
||||||
|
background #fc625d
|
||||||
|
border-radius 50%
|
||||||
|
box-shadow 1.3rem 0 #fdbc40, 2.6rem 0 #35cd4b
|
||||||
|
content ''
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
&.folded {
|
||||||
|
border-bottom-right-radius 0
|
||||||
|
border-bottom-left-radius 0
|
||||||
|
|
||||||
|
.copy {
|
||||||
|
display none
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.code-lang {
|
||||||
|
order 1
|
||||||
|
color #bbb
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.fold {
|
||||||
|
order 2
|
||||||
|
padding 0 0.1rem 0 0.6rem
|
||||||
|
|
||||||
|
i {
|
||||||
|
color #ccc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.copy {
|
||||||
|
position absolute
|
||||||
|
top 3rem
|
||||||
|
right 0.5rem
|
||||||
|
padding 0 0.1rem
|
||||||
|
opacity 0
|
||||||
|
transition-t("opacity", "0", "0.2", "ease-in-out")
|
||||||
|
|
||||||
|
i {
|
||||||
|
font-size 1rem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.code-tools-box {
|
.code-tools-box {
|
||||||
display flex
|
display flex
|
||||||
align-items center
|
align-items center
|
||||||
|
@ -10,30 +80,32 @@
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
padding 0.3rem 0.4rem
|
padding 0.3rem 0.4rem
|
||||||
background var(--fourth-text-color)
|
color var(--toolbar-foreground)
|
||||||
|
background var(--toolbar-background)
|
||||||
border-top-left-radius 0.3rem
|
border-top-left-radius 0.3rem
|
||||||
border-top-right-radius 0.3rem
|
border-top-right-radius 0.3rem
|
||||||
|
|
||||||
|
|
||||||
&.folded {
|
&.folded {
|
||||||
border-bottom-right-radius 0.3rem
|
border-bottom-right-radius 0.3rem
|
||||||
border-bottom-left-radius 0.3rem
|
border-bottom-left-radius 0.3rem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.code-lang {
|
.code-lang {
|
||||||
justify-content flex-start
|
justify-content flex-start
|
||||||
margin-left 0.2rem
|
margin-left 0.2rem
|
||||||
color var(--default-text-color)
|
|
||||||
font-weight 600
|
font-weight 600
|
||||||
font-size 0.9rem
|
font-size 0.9rem
|
||||||
font-family "Source Code Pro", consolas, Menlo
|
font-family "Source Code Pro", consolas, Menlo
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tool {
|
.tool {
|
||||||
disable-user-select()
|
disable-user-select()
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--second-text-color)
|
|
||||||
font-size 0.8rem
|
font-size 0.8rem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,69 +124,4 @@
|
||||||
height 0
|
height 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (hexo-config('code_block_tools.style') == 'mac' || hexo-config('code_copy.style') == 'mac') {
|
|
||||||
margin 1.4rem 0 1.8rem 0
|
|
||||||
box-shadow 0 0.8rem 2rem 0 rgba(0, 0, 0, 0.4)
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
.code-tools-box .copy {
|
|
||||||
opacity 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.code-tools-box {
|
|
||||||
justify-content flex-end
|
|
||||||
padding 0.4rem 0.6rem 0.7rem 0.4rem
|
|
||||||
background #21252b
|
|
||||||
|
|
||||||
&::before {
|
|
||||||
position absolute
|
|
||||||
left 0.8rem
|
|
||||||
width 0.76rem
|
|
||||||
height 0.76rem
|
|
||||||
background #fc625d
|
|
||||||
border-radius 50%
|
|
||||||
box-shadow 1.3rem 0 #fdbc40, 2.6rem 0 #35cd4b
|
|
||||||
content ''
|
|
||||||
}
|
|
||||||
|
|
||||||
&.folded {
|
|
||||||
border-bottom-right-radius 0
|
|
||||||
border-bottom-left-radius 0
|
|
||||||
|
|
||||||
.copy {
|
|
||||||
display none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.code-lang {
|
|
||||||
order 1
|
|
||||||
color #bbb
|
|
||||||
}
|
|
||||||
|
|
||||||
.fold {
|
|
||||||
order 2
|
|
||||||
padding 0 0.1rem 0 0.6rem
|
|
||||||
i {
|
|
||||||
color #ccc
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.copy {
|
|
||||||
position absolute
|
|
||||||
right 0.5rem
|
|
||||||
bottom 0.3rem
|
|
||||||
padding 0 0.1rem
|
|
||||||
opacity 0
|
|
||||||
transition-t("opacity", "0", "0.2", "ease-in-out")
|
|
||||||
|
|
||||||
i {
|
|
||||||
font-size 1rem
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,54 +1,101 @@
|
||||||
@import "../variables.styl"
|
@import "../variables.styl"
|
||||||
|
|
||||||
$code-foreground = lighten($default-text-color, 2%)
|
// A single line block of code
|
||||||
$code-background = darken($background-color, 5%)
|
$code-foreground = lighten($text-color-3, 2%)
|
||||||
$highlight-foreground = lighten($default-text-color, 2%)
|
$code-background = darken($background-color-1, 5%)
|
||||||
$highlight-background = darken($background-color, 2%)
|
$dark-code-foreground = lighten($dark-text-color-3, 2%)
|
||||||
$highlight-gutter-color = lighten($default-text-color, 5%)
|
$dark-code-background = darken($dark-background-color-1, 10%)
|
||||||
$highlight-gutter-bg-color = darken($background-color, 5%)
|
|
||||||
$highlight-comment = #8e908c
|
|
||||||
$highlight-red = #c82829
|
if (hexo-config('code_block.highlight_theme') == 'obsidian') {
|
||||||
$highlight-orange = #f5871f
|
$toolbar-foreground = #b5b5b5
|
||||||
$highlight-yellow = #eab700
|
$toolbar-background = #3a3f40
|
||||||
$highlight-green = #718c00
|
$highlight-foreground = #faf5d6
|
||||||
$highlight-aqua = #3e999f
|
$highlight-background = #273036
|
||||||
$highlight-blue = #4271ae
|
$highlight-gutter-color = #7a979a
|
||||||
$highlight-purple = #8959a8
|
$highlight-gutter-bg-color = #273130
|
||||||
$highlight-deletion = #fdd
|
$highlight-comment = #76888e
|
||||||
$highlight-addition = #dfd
|
$highlight-red = #ee5758
|
||||||
|
$highlight-orange = #ec7600
|
||||||
|
$highlight-yellow = #ffcd22
|
||||||
|
$highlight-green = #93c763
|
||||||
|
$highlight-aqua = #458383
|
||||||
|
$highlight-blue = #6e95bd
|
||||||
|
$highlight-purple = #b18bb7
|
||||||
|
$highlight-deletion = #ff9999
|
||||||
|
$highlight-addition = #ccff99
|
||||||
|
|
||||||
|
$dark-toolbar-foreground = darken($toolbar-foreground, 2%)
|
||||||
|
$dark-toolbar-background = darken($toolbar-background, 2%)
|
||||||
|
$dark-highlight-foreground = darken($highlight-foreground, 10%)
|
||||||
|
$dark-highlight-background = darken($highlight-background, 2%)
|
||||||
|
$dark-highlight-gutter-color = lighten($highlight-gutter-color, 1%)
|
||||||
|
$dark-highlight-gutter-bg-color = darken($highlight-gutter-bg-color, 2%)
|
||||||
|
$dark-highlight-comment = $highlight-comment
|
||||||
|
$dark-highlight-red = darken($highlight-red, 2%)
|
||||||
|
$dark-highlight-orange = darken($highlight-orange, 2%)
|
||||||
|
$dark-highlight-yellow = darken($highlight-yellow, 2%)
|
||||||
|
$dark-highlight-green = darken($highlight-green, 2%)
|
||||||
|
$dark-highlight-aqua = darken($highlight-aqua, 2%)
|
||||||
|
$dark-highlight-blue = darken($highlight-blue, 2%)
|
||||||
|
$dark-highlight-purple = darken($highlight-purple, 2%)
|
||||||
|
$dark-highlight-deletion = darken($highlight-deletion, 2%)
|
||||||
|
$dark-highlight-addition = darken($highlight-addition, 2%)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$toolbar-foreground = $text-color-3
|
||||||
|
$toolbar-background = $background-color-3
|
||||||
|
$highlight-foreground = lighten($text-color-3, 2%)
|
||||||
|
$highlight-background = darken($background-color-1, 2%)
|
||||||
|
$highlight-gutter-color = lighten($text-color-3, 5%)
|
||||||
|
$highlight-gutter-bg-color = darken($background-color-1, 5%)
|
||||||
|
$highlight-comment = #8e908c
|
||||||
|
$highlight-red = #c82829
|
||||||
|
$highlight-orange = #f5871f
|
||||||
|
$highlight-yellow = #eab700
|
||||||
|
$highlight-green = #718c00
|
||||||
|
$highlight-aqua = #3e999f
|
||||||
|
$highlight-blue = #4271ae
|
||||||
|
$highlight-purple = #8959a8
|
||||||
|
$highlight-deletion = #fdd
|
||||||
|
$highlight-addition = #dfd
|
||||||
|
|
||||||
|
$dark-toolbar-foreground = $dark-text-color-3
|
||||||
|
$dark-toolbar-background = $dark-background-color-3
|
||||||
|
$dark-highlight-foreground = lighten($dark-text-color-3, 2%)
|
||||||
|
$dark-highlight-background = darken($dark-background-color-1, 8%)
|
||||||
|
$dark-highlight-gutter-color = lighten($dark-text-color-3, 5%)
|
||||||
|
$dark-highlight-gutter-bg-color = darken($dark-background-color-1, 10%)
|
||||||
|
$dark-highlight-comment = #969896
|
||||||
|
$dark-highlight-red = #cc6666
|
||||||
|
$dark-highlight-orange = #de935f
|
||||||
|
$dark-highlight-yellow = #f0c674
|
||||||
|
$dark-highlight-green = #b5bd68
|
||||||
|
$dark-highlight-aqua = #8abeb7
|
||||||
|
$dark-highlight-blue = #81a2be
|
||||||
|
$dark-highlight-purple = #b294bb
|
||||||
|
$dark-highlight-deletion = #008000
|
||||||
|
$dark-highlight-addition = #800000
|
||||||
|
}
|
||||||
|
|
||||||
$night-code-foreground = lighten($dark-default-text-color, 2%)
|
|
||||||
$night-code-background = darken($dark-background-color, 10%)
|
|
||||||
$night-highlight-foreground = lighten($dark-default-text-color, 2%)
|
|
||||||
$night-highlight-background = darken($dark-background-color, 8%)
|
|
||||||
$night-highlight-gutter-color = lighten($dark-default-text-color, 5%)
|
|
||||||
$night-highlight-gutter-bg-color = darken($dark-background-color, 10%)
|
|
||||||
$night-highlight-comment = #969896
|
|
||||||
$night-highlight-red = #cc6666
|
|
||||||
$night-highlight-orange = #de935f
|
|
||||||
$night-highlight-yellow = #f0c674
|
|
||||||
$night-highlight-green = #b5bd68
|
|
||||||
$night-highlight-aqua = #8abeb7
|
|
||||||
$night-highlight-blue = #81a2be
|
|
||||||
$night-highlight-purple = #b294bb
|
|
||||||
$night-highlight-deletion = #008000
|
|
||||||
$night-highlight-addition = #800000
|
|
||||||
|
|
||||||
code-theme(mode) {
|
code-theme(mode) {
|
||||||
--code-foreground mode == 'light' ? $code-foreground : $night-code-foreground
|
--toolbar-foreground mode == 'light' ? $toolbar-foreground : $dark-toolbar-foreground
|
||||||
--code-background mode == 'light' ? $code-background : $night-code-background
|
--toolbar-background mode == 'light' ? $toolbar-background : $dark-toolbar-background
|
||||||
--highlight-background mode == 'light' ? $highlight-background : $night-highlight-background
|
--code-foreground mode == 'light' ? $code-foreground : $dark-code-foreground
|
||||||
--highlight-foreground mode == 'light' ? $highlight-foreground : $night-highlight-foreground
|
--code-background mode == 'light' ? $code-background : $dark-code-background
|
||||||
--highlight-comment mode == 'light' ? $highlight-comment : $night-highlight-comment
|
--highlight-background mode == 'light' ? $highlight-background : $dark-highlight-background
|
||||||
--highlight-red mode == 'light' ? $highlight-red : $night-highlight-red
|
--highlight-foreground mode == 'light' ? $highlight-foreground : $dark-highlight-foreground
|
||||||
--highlight-orange mode == 'light' ? $highlight-orange : $night-highlight-orange
|
--highlight-comment mode == 'light' ? $highlight-comment : $dark-highlight-comment
|
||||||
--highlight-yellow mode == 'light' ? $highlight-yellow : $night-highlight-yellow
|
--highlight-red mode == 'light' ? $highlight-red : $dark-highlight-red
|
||||||
--highlight-green mode == 'light' ? $highlight-green : $night-highlight-green
|
--highlight-orange mode == 'light' ? $highlight-orange : $dark-highlight-orange
|
||||||
--highlight-aqua mode == 'light' ? $highlight-aqua : $night-highlight-aqua
|
--highlight-yellow mode == 'light' ? $highlight-yellow : $dark-highlight-yellow
|
||||||
--highlight-blue mode == 'light' ? $highlight-blue : $night-highlight-blue
|
--highlight-green mode == 'light' ? $highlight-green : $dark-highlight-green
|
||||||
--highlight-purple mode == 'light' ? $highlight-purple : $night-highlight-purple
|
--highlight-aqua mode == 'light' ? $highlight-aqua : $dark-highlight-aqua
|
||||||
--highlight-gutter-color mode == 'light' ? $highlight-gutter-color : $night-highlight-gutter-color
|
--highlight-blue mode == 'light' ? $highlight-blue : $dark-highlight-blue
|
||||||
--highlight-gutter-bg-color mode == 'light' ? $highlight-gutter-bg-color : $night-highlight-gutter-bg-color
|
--highlight-purple mode == 'light' ? $highlight-purple : $dark-highlight-purple
|
||||||
|
--highlight-gutter-color mode == 'light' ? $highlight-gutter-color : $dark-highlight-gutter-color
|
||||||
|
--highlight-gutter-bg-color mode == 'light' ? $highlight-gutter-bg-color : $dark-highlight-gutter-bg-color
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ $code-block {
|
||||||
font-size 0.96rem
|
font-size 0.96rem
|
||||||
line-height 1.5rem
|
line-height 1.5rem
|
||||||
background var(--highlight-background)
|
background var(--highlight-background)
|
||||||
-webkit-text-size-adjust none
|
not-text-size-adjust()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,8 @@ pre {
|
||||||
|
|
||||||
.highlight {
|
.highlight {
|
||||||
@extend $code-block
|
@extend $code-block
|
||||||
border-radius 0.1rem
|
border-bottom-right-radius 0.1rem
|
||||||
|
border-bottom-left-radius 0.1rem
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
margin 0
|
margin 0
|
||||||
|
@ -95,24 +96,27 @@ pre {
|
||||||
|
|
||||||
.line {
|
.line {
|
||||||
height 1.5rem
|
height 1.5rem
|
||||||
color var(--default-text-color)
|
color var(--highlight-foreground)
|
||||||
|
|
||||||
.attr {
|
.attr {
|
||||||
color var(--default-text-color)
|
color var(--highlight-foreground)
|
||||||
}
|
}
|
||||||
|
|
||||||
.string {
|
.string {
|
||||||
color var(--default-text-color)
|
color var(--highlight-foreground)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.gutter {
|
.gutter {
|
||||||
-webkit-user-select none
|
disable-user-select()
|
||||||
-moz-user-select none
|
color var(--highlight-gutter-color)
|
||||||
-ms-user-select none
|
background var(--highlight-gutter-bg-color)
|
||||||
user-select none
|
|
||||||
|
.line {
|
||||||
|
color var(--highlight-gutter-color)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.gist table {
|
.gist table {
|
||||||
|
@ -123,7 +127,6 @@ pre {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// For diff highlight
|
|
||||||
pre .deletion {
|
pre .deletion {
|
||||||
background var(--highlight-deletion)
|
background var(--highlight-deletion)
|
||||||
}
|
}
|
||||||
|
@ -157,6 +160,10 @@ pre {
|
||||||
color var(--highlight-red)
|
color var(--highlight-red)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.property {
|
||||||
|
color var(--highlight-blue)
|
||||||
|
}
|
||||||
|
|
||||||
.number
|
.number
|
||||||
.preprocessor
|
.preprocessor
|
||||||
.built_in
|
.built_in
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
$keep-container-border-radius = 5px
|
$keep-container-border-radius = 0.4rem
|
||||||
|
|
||||||
hover-style(isTransform, scaleX, scaleY) {
|
hover-style(isTransform, scaleX, scaleY) {
|
||||||
box-shadow 2px 2px 5px var(--shadow-color)
|
box-shadow 2px 2px 5px var(--shadow-color)
|
||||||
|
@ -22,7 +22,7 @@ hover-style(isTransform, scaleX, scaleY) {
|
||||||
keep-container(isTransform, scaleX, scaleY, padding, marginBottomValue) {
|
keep-container(isTransform, scaleX, scaleY, padding, marginBottomValue) {
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
padding padding
|
padding padding
|
||||||
background var(--background-color)
|
background var(--content-background-color)
|
||||||
border-radius $keep-container-border-radius
|
border-radius $keep-container-border-radius
|
||||||
|
|
||||||
if (marginBottomValue != 0) {
|
if (marginBottomValue != 0) {
|
||||||
|
@ -58,3 +58,12 @@ disable-user-select() {
|
||||||
-webkit-user-select none
|
-webkit-user-select none
|
||||||
user-select none
|
user-select none
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
not-text-size-adjust() {
|
||||||
|
-ms-text-size-adjust none
|
||||||
|
-moz-text-size-adjust none
|
||||||
|
-webkit-text-size-adjust none
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.markdown-body {
|
.keep-markdown-body {
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
|
|
||||||
blockquote {
|
blockquote {
|
||||||
|
@ -11,14 +11,14 @@
|
||||||
|
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
margin 1.4rem 0
|
margin 1.4rem 0
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
background var(--second-background-color)
|
background var(--background-color-2)
|
||||||
border-left 0.4rem solid var(--default-text-color)
|
border-left 0.4rem solid var(--text-color-4)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
p {
|
p {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
line-height 2
|
line-height 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
padding-bottom 0.2rem
|
padding-bottom 0.2rem
|
||||||
text-decoration none
|
text-decoration none
|
||||||
overflow-wrap break-word
|
overflow-wrap break-word
|
||||||
border-bottom 0.1rem solid var(--third-text-color)
|
border-bottom 0.1rem solid var(--text-color-4)
|
||||||
outline 0
|
outline 0
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
.fab {
|
.fab {
|
||||||
position relative
|
position relative
|
||||||
margin 0 0.2rem 0 0.4rem
|
margin 0 0.2rem 0 0.4rem
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
font-size 0.88rem
|
font-size 0.88rem
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,12 +54,12 @@
|
||||||
|
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
em {
|
em {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
|
|
||||||
|
|
||||||
li {
|
li {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@
|
||||||
h4
|
h4
|
||||||
h5
|
h5
|
||||||
h6 {
|
h6 {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
line-height 1.5
|
line-height 1.5
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
@ -209,6 +209,10 @@
|
||||||
opacity 0
|
opacity 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&[lazyload] {
|
||||||
|
margin 0.8rem auto 0.2rem
|
||||||
|
}
|
||||||
|
|
||||||
if (hexo-config('post.img_align') == 'center' || hexo-config('style.article_img_align') == 'center') {
|
if (hexo-config('post.img_align') == 'center' || hexo-config('style.article_img_align') == 'center') {
|
||||||
margin 0.8rem auto 0.2rem
|
margin 0.8rem auto 0.2rem
|
||||||
}
|
}
|
||||||
|
@ -246,12 +250,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
tr {
|
tr {
|
||||||
background-color var(--background-color)
|
background-color var(--background-color-1)
|
||||||
border 0.1rem solid var(--fourth-text-color)
|
border 0.1rem solid var(--text-color-6)
|
||||||
}
|
}
|
||||||
|
|
||||||
tr:nth-child(2n) {
|
tr:nth-child(2n) {
|
||||||
background-color var(--second-background-color)
|
background-color var(--background-color-2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,16 +14,19 @@ $main-content-width-tablet = 86% // main content
|
||||||
$main-content-width-mobile = 90% // main content width (mobile)
|
$main-content-width-mobile = 90% // main content width (mobile)
|
||||||
$post-tool-button-width = 38px // post tool button width
|
$post-tool-button-width = 38px // post tool button width
|
||||||
$component-spacing-value = 38px // component-spacing-value (PC)
|
$component-spacing-value = 38px // component-spacing-value (PC)
|
||||||
|
$content-max-width = 928px // main content max width
|
||||||
|
|
||||||
// main content max width
|
// main content max width of has TOC
|
||||||
$temp-content-max-width = hexo-config('style.content_max_width')
|
$has-toc-content-max-width = $content-max-width * 1.2
|
||||||
$content-max-width = $temp-content-max-width ? convert($temp-content-max-width) : 1000px
|
|
||||||
|
// main content max width of has first screen
|
||||||
|
$has-fs-content-max-width = $content-max-width * 1.2
|
||||||
|
|
||||||
|
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
// media query
|
// media query
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
$media-max-width = 780px // media query max width (tablet)
|
$media-max-width = 800px // media query max width (tablet)
|
||||||
$media-max-width-mobile = 500px // media query max width (mobile)
|
$media-max-width-mobile = 500px // media query max width (mobile)
|
||||||
|
|
||||||
keep-tablet() {
|
keep-tablet() {
|
||||||
|
@ -60,53 +63,89 @@ $z-index-10 = 1010
|
||||||
$temp-color = hexo-config('style.primary_color')
|
$temp-color = hexo-config('style.primary_color')
|
||||||
$primary-color = $temp-color ? convert($temp-color) : #0066cc
|
$primary-color = $temp-color ? convert($temp-color) : #0066cc
|
||||||
|
|
||||||
|
// light
|
||||||
|
$primary-color-light-1 = lighten($primary-color, 10%)
|
||||||
|
$primary-color-light-2 = lighten($primary-color, 20%)
|
||||||
|
|
||||||
|
// dark
|
||||||
|
$primary-color-dark-1 = darken($primary-color, 10%)
|
||||||
|
$primary-color-dark-2 = darken($primary-color, 20%)
|
||||||
|
|
||||||
|
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
// theme light mode color set
|
// theme light mode color set
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
$background-color = #fff
|
$background-color-1 = #fff
|
||||||
$second-background-color = darken($background-color, 3%)
|
$background-color-2= darken($background-color-1, 3%)
|
||||||
$default-text-color = #50505c
|
$background-color-3= darken($background-color-1, 6%)
|
||||||
$first-text-color = darken($default-text-color, 10%)
|
$content-background-color = #fff
|
||||||
$second-text-color = darken($default-text-color, 5%)
|
|
||||||
$third-text-color = lighten($default-text-color, 30%)
|
$text-color-3 = #50505c
|
||||||
$fourth-text-color = lighten($default-text-color, 90%)
|
$text-color-1 = darken($text-color-3, 10%)
|
||||||
$border-color = darken($background-color, 30%)
|
$text-color-2 = darken($text-color-3, 5%)
|
||||||
|
$text-color-4 = lighten($text-color-3, 30%)
|
||||||
|
$text-color-5 = lighten($text-color-3, 60%)
|
||||||
|
$text-color-6 = lighten($text-color-3, 90%)
|
||||||
|
|
||||||
|
$toc-text-color = lighten($text-color-3, 20%)
|
||||||
|
|
||||||
|
$badge-color = darken($background-color-1, 6%)
|
||||||
|
$badge-background-color = lighten($text-color-3, 40%)
|
||||||
|
|
||||||
|
$border-color = darken($background-color-1, 30%)
|
||||||
$selection-color = lighten($primary-color, 10%)
|
$selection-color = lighten($primary-color, 10%)
|
||||||
|
|
||||||
$shadow-color = rgba(0, 0, 0, 0.2)
|
$shadow-color = rgba(0, 0, 0, 0.2)
|
||||||
$shadow-hover-color = rgba(0, 0, 0, 0.28)
|
$shadow-hover-color = rgba(0, 0, 0, 0.3)
|
||||||
$scrollbar-color = lighten($default-text-color, 6%)
|
|
||||||
$scroll-bar-bg-color = darken($background-color, 10%)
|
$scrollbar-color = lighten($text-color-3, 10%)
|
||||||
$link-color = darken($default-text-color, 10%)
|
$scrollbar-background-color = darken($background-color-1, 10%)
|
||||||
|
$toc-scrollbar-color = alpha($text-color-3, 0.1)
|
||||||
|
|
||||||
$copyright-info-color = #cc0033
|
$copyright-info-color = #cc0033
|
||||||
$avatar-background-color = #0066cc
|
$avatar-background-color = $primary-color-dark-1
|
||||||
$header-transparent-background-1 = alpha($background-color, 0.28)
|
$header-transparent-background-1 = alpha($background-color-1, 0.28)
|
||||||
$header-transparent-background-2 = alpha($background-color, 0.58)
|
$header-transparent-background-2 = alpha($background-color-1, 0.58)
|
||||||
|
|
||||||
$pjax-progress-bar-color = linear-gradient(45deg, #f10006, #ef5b00, #e59c01, #19ca05, #00cab5, #0264c8, #c303c3)
|
$pjax-progress-bar-color = linear-gradient(45deg, #f10006, #ef5b00, #e59c01, #19ca05, #00cab5, #0264c8, #c303c3)
|
||||||
|
|
||||||
|
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
// theme dark mode color set
|
// theme dark mode color set
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
$dark-primary-color = $primary-color
|
$dark-background-color-1 = #383940
|
||||||
$dark-background-color = #383940
|
$dark-background-color-2= lighten($dark-background-color-1, 3%)
|
||||||
$dark-second-background-color = darken($dark-background-color, 10%)
|
$dark-background-color-3= lighten($dark-background-color-1, 6%)
|
||||||
$dark-default-text-color = #bebec6
|
$dark-content-background-color = darken($dark-background-color-1, 2%)
|
||||||
$dark-first-text-color = lighten($dark-default-text-color, 30%)
|
|
||||||
$dark-second-text-color = lighten($dark-default-text-color, 20%)
|
$dark-text-color-3 = #bebec6
|
||||||
$dark-third-text-color = darken($dark-default-text-color, 20%)
|
$dark-text-color-1 = lighten($dark-text-color-3, 10%)
|
||||||
$dark-fourth-text-color = darken($dark-default-text-color, 75%)
|
$dark-text-color-2 = lighten($dark-text-color-3, 5%)
|
||||||
$dark-border-color = lighten($dark-background-color, 20%)
|
$dark-text-color-4 = darken($dark-text-color-3, 20%)
|
||||||
$dark-selection-color = $selection-color
|
$dark-text-color-5 = darken($dark-text-color-3, 50%)
|
||||||
|
$dark-text-color-6 = darken($dark-text-color-3, 70%)
|
||||||
|
|
||||||
|
$dark-toc-text-color = darken($dark-text-color-3, 15%)
|
||||||
|
|
||||||
|
$dark-badge-color = lighten($dark-background-color-1, 10%)
|
||||||
|
$dark-badge-background-color = lighten($dark-text-color-3, 40%)
|
||||||
|
|
||||||
|
$dark-border-color = lighten($dark-background-color-1, 30%)
|
||||||
|
$dark-selection-color = darken($selection-color, 20%)
|
||||||
|
|
||||||
$dark-shadow-color = rgba(128, 128, 128, 0.2)
|
$dark-shadow-color = rgba(128, 128, 128, 0.2)
|
||||||
$dark-shadow-hover-color = rgba(128, 128, 128, 0.28)
|
$dark-shadow-hover-color = rgba(128, 128, 128, 0.28)
|
||||||
$dark-scrollbar-color = darken($dark-background-color, 10%)
|
|
||||||
$dark-scroll-bar-bg-color = lighten($dark-background-color, 20%)
|
$dark-scrollbar-color = darken($dark-background-color-1, 10%)
|
||||||
$dark-link-color = lighten($dark-default-text-color, 10%)
|
$dark-scrollbar-background-color = lighten($dark-background-color-1, 20%)
|
||||||
|
$dark-toc-scrollbar-color = alpha($dark-text-color-3, 0.1)
|
||||||
|
|
||||||
$dark-copyright-info-color = darken($copyright-info-color, 20%)
|
$dark-copyright-info-color = darken($copyright-info-color, 20%)
|
||||||
$dark-avatar-background-color = darken($avatar-background-color, 10%)
|
$dark-avatar-background-color = darken($avatar-background-color, 20%)
|
||||||
$dark-header-transparent-background-1 = alpha($dark-background-color, 0.28)
|
|
||||||
$dark-header-transparent-background-2 = alpha($dark-background-color, 0.58)
|
$dark-header-transparent-background-1 = alpha($dark-background-color-1, 0.28)
|
||||||
|
$dark-header-transparent-background-2 = alpha($dark-background-color-1, 0.58)
|
||||||
|
|
||||||
$dark-pjax-progress-bar-color = linear-gradient(45deg, #ea404a, #ea722f, #e9a71f, #67e559, #18ecec, #1b85f1, #ee1dee)
|
$dark-pjax-progress-bar-color = linear-gradient(45deg, #ea404a, #ea722f, #e9a71f, #67e559, #18ecec, #1b85f1, #ee1dee)
|
||||||
|
|
||||||
|
|
||||||
|
@ -126,25 +165,57 @@ $default-font-weight = 400
|
||||||
// light/dark mode color
|
// light/dark mode color
|
||||||
// ==============================================================================================
|
// ==============================================================================================
|
||||||
root-color(mode) {
|
root-color(mode) {
|
||||||
--background-color mode == 'light' ? $background-color : $dark-background-color
|
// primary color
|
||||||
--second-background-color mode == 'light' ? $second-background-color : $dark-second-background-color
|
--primary-color $primary-color
|
||||||
--primary-color mode == 'light' ? $primary-color : $dark-primary-color
|
--primary-color-light-1 $primary-color-light-1
|
||||||
--first-text-color mode == 'light' ? $first-text-color : $dark-first-text-color
|
--primary-color-light-2 $primary-color-light-2
|
||||||
--second-text-color mode == 'light' ? $second-text-color : $dark-second-text-color
|
--primary-color-dark-1 $primary-color-dark-1
|
||||||
--third-text-color mode == 'light' ? $third-text-color : $dark-third-text-color
|
--primary-color-dark-2 $primary-color-dark-2
|
||||||
--fourth-text-color mode == 'light' ? $fourth-text-color : $dark-fourth-text-color
|
|
||||||
--default-text-color mode == 'light' ? $default-text-color : $dark-default-text-color
|
// background color
|
||||||
|
--background-color-1 mode == 'light' ? $background-color-1 : $dark-background-color-1
|
||||||
|
--background-color-2 mode == 'light' ? $background-color-2 : $dark-background-color-2
|
||||||
|
--background-color-3 mode == 'light' ? $background-color-3 : $dark-background-color-3
|
||||||
|
|
||||||
|
// content background color
|
||||||
|
--content-background-color mode == 'light' ? $content-background-color : $dark-content-background-color
|
||||||
|
|
||||||
|
// text color
|
||||||
|
--text-color-1 mode == 'light' ? $text-color-1 : $dark-text-color-1
|
||||||
|
--text-color-2 mode == 'light' ? $text-color-2 : $dark-text-color-2
|
||||||
|
--text-color-3 mode == 'light' ? $text-color-3 : $dark-text-color-3
|
||||||
|
--text-color-4 mode == 'light' ? $text-color-4 : $dark-text-color-4
|
||||||
|
--text-color-5 mode == 'light' ? $text-color-5 : $dark-text-color-5
|
||||||
|
--text-color-6 mode == 'light' ? $text-color-6 : $dark-text-color-6
|
||||||
|
|
||||||
|
// toc text color
|
||||||
|
--toc-text-color mode == 'light' ? $toc-text-color : $dark-toc-text-color
|
||||||
|
|
||||||
|
// badge color
|
||||||
|
--badge-color mode == 'light' ? $badge-color : $dark-badge-color
|
||||||
|
--badge-background-color mode == 'light' ? $badge-background-color : $dark-badge-background-color
|
||||||
|
|
||||||
|
// border color
|
||||||
--border-color mode == 'light' ? $border-color : $dark-border-color
|
--border-color mode == 'light' ? $border-color : $dark-border-color
|
||||||
|
|
||||||
|
// selection color
|
||||||
--selection-color mode == 'light' ? $selection-color : $dark-selection-color
|
--selection-color mode == 'light' ? $selection-color : $dark-selection-color
|
||||||
|
|
||||||
|
// shadow color
|
||||||
--shadow-color mode == 'light' ? $shadow-color : $dark-shadow-color
|
--shadow-color mode == 'light' ? $shadow-color : $dark-shadow-color
|
||||||
--shadow-hover-color mode == 'light' ? $shadow-hover-color : $dark-shadow-hover-color
|
--shadow-hover-color mode == 'light' ? $shadow-hover-color : $dark-shadow-hover-color
|
||||||
|
|
||||||
|
// scrollbar color
|
||||||
--scrollbar-color mode == 'light' ? $scrollbar-color : $dark-scrollbar-color
|
--scrollbar-color mode == 'light' ? $scrollbar-color : $dark-scrollbar-color
|
||||||
--scroll-bar-bg-color mode == 'light' ? $scroll-bar-bg-color : $dark-scroll-bar-bg-color
|
--scrollbar-background-color mode == 'light' ? $scrollbar-background-color : $dark-scrollbar-background-color
|
||||||
--link-color mode == 'light' ? $link-color : $dark-link-color
|
--toc-scrollbar-color mode == 'light' ? $toc-scrollbar-color : $dark-toc-scrollbar-color
|
||||||
|
|
||||||
--copyright-info-color mode == 'light' ? $copyright-info-color : $dark-copyright-info-color
|
--copyright-info-color mode == 'light' ? $copyright-info-color : $dark-copyright-info-color
|
||||||
--avatar-background-color mode == 'light' ? $avatar-background-color : $dark-avatar-background-color
|
--avatar-background-color mode == 'light' ? $avatar-background-color : $dark-avatar-background-color
|
||||||
|
|
||||||
--header-transparent-background-1 mode == 'light' ? $header-transparent-background-1 : $dark-header-transparent-background-1
|
--header-transparent-background-1 mode == 'light' ? $header-transparent-background-1 : $dark-header-transparent-background-1
|
||||||
--header-transparent-background-2 mode == 'light' ? $header-transparent-background-2 : $dark-header-transparent-background-2
|
--header-transparent-background-2 mode == 'light' ? $header-transparent-background-2 : $dark-header-transparent-background-2
|
||||||
|
|
||||||
--pjax-progress-bar-color mode == 'light' ? $pjax-progress-bar-color : $dark-pjax-progress-bar-color
|
--pjax-progress-bar-color mode == 'light' ? $pjax-progress-bar-color : $dark-pjax-progress-bar-color
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@ $article-date-font-size = 1rem
|
||||||
|
|
||||||
.archive-year {
|
.archive-year {
|
||||||
margin-right 6px
|
margin-right 6px
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
font-weight 600
|
font-weight 600
|
||||||
font-size $archive-year-font-size
|
font-size $archive-year-font-size
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ $article-date-font-size = 1rem
|
||||||
|
|
||||||
|
|
||||||
.archive-year-post-count {
|
.archive-year-post-count {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
font-weight 500
|
font-weight 500
|
||||||
font-size $archive-year-count-font-size
|
font-size $archive-year-count-font-size
|
||||||
|
|
||||||
|
@ -68,12 +68,12 @@ $article-date-font-size = 1rem
|
||||||
|
|
||||||
|
|
||||||
a.article-title {
|
a.article-title {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
.article-date {
|
.article-date {
|
||||||
float right
|
float right
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size $article-date-font-size
|
font-size $article-date-font-size
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
width 100%
|
width 100%
|
||||||
overflow hidden
|
overflow hidden
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
background var(--second-background-color)
|
background var(--background-color-2)
|
||||||
|
|
||||||
&::after {
|
&::after {
|
||||||
position absolute
|
position absolute
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&::-webkit-scrollbar-thumb {
|
&::-webkit-scrollbar-thumb {
|
||||||
background var(--third-text-color)
|
background var(--text-color-4)
|
||||||
}
|
}
|
||||||
|
|
||||||
&::-webkit-scrollbar-track {
|
&::-webkit-scrollbar-track {
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
li {
|
li {
|
||||||
margin-bottom 0.4rem
|
margin-bottom 0.4rem
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
|
|
||||||
.license {
|
.license {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
.article-meta-item {
|
.article-meta-item {
|
||||||
margin-right 0.6rem
|
margin-right 0.6rem
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
margin-right 0
|
margin-right 0
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--primary-color)
|
color var(--primary-color)
|
||||||
|
|
|
@ -8,6 +8,9 @@ if (hexo-config('comment.enable') == true && hexo-config('comment.use') != "") {
|
||||||
else if (hexo-config('comment.use') == "twikoo") {
|
else if (hexo-config('comment.use') == "twikoo") {
|
||||||
@import "./twikoo.styl"
|
@import "./twikoo.styl"
|
||||||
}
|
}
|
||||||
|
else if (hexo-config('comment.use') == "waline") {
|
||||||
|
@import "./waline.styl"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.comments-container {
|
.comments-container {
|
||||||
|
@ -15,7 +18,7 @@ if (hexo-config('comment.enable') == true && hexo-config('comment.use') != "") {
|
||||||
width 100%
|
width 100%
|
||||||
margin-top $component-spacing-value
|
margin-top $component-spacing-value
|
||||||
|
|
||||||
#comment-anchor {
|
#comments-anchor {
|
||||||
width 100%
|
width 100%
|
||||||
height 0.8rem
|
height 0.8rem
|
||||||
}
|
}
|
||||||
|
@ -23,11 +26,11 @@ if (hexo-config('comment.enable') == true && hexo-config('comment.use') != "") {
|
||||||
.comment-area-title {
|
.comment-area-title {
|
||||||
width 100%
|
width 100%
|
||||||
margin 0.8rem 0
|
margin 0.8rem 0
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size 1.38rem
|
font-size 1.38rem
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
|
|
@ -1,562 +1,105 @@
|
||||||
// variables
|
.gitalk-comment-container {
|
||||||
$gt-color-main := #6190e8
|
|
||||||
$gt-color-sub := #a1a1a1
|
|
||||||
$gt-color-loader := #999999
|
|
||||||
$gt-color-error := #ff3860
|
|
||||||
$gt-color-hr := #e9e9e9
|
|
||||||
$gt-color-comment-txt := #333333
|
|
||||||
$gt-color-link-active := #333333
|
|
||||||
$gt-color-btn := #ffffff
|
|
||||||
$gt-size-base := 16px // default font-size
|
|
||||||
$gt-size-border-radius := 5px
|
|
||||||
$gt-breakpoint-mobile := 479px
|
|
||||||
$gt-mask-z-index := 9999
|
|
||||||
|
|
||||||
// functions & mixins
|
transition-t("color, background", "0, 0", "0.2, 0.2", "ease, ease")
|
||||||
clearfix() {
|
|
||||||
&:before
|
|
||||||
&:after {
|
|
||||||
display table
|
|
||||||
clear both
|
|
||||||
content ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
em($px, $base-size = $gt-size-base) {
|
|
||||||
u = unit($px)
|
|
||||||
if (u is 'px') {
|
|
||||||
unit($px / $base-size, 'em')
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
unit($px, u)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mobile() {
|
|
||||||
@media (max-width $gt-breakpoint-mobile) {
|
|
||||||
{block}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// variables - calculated
|
|
||||||
$gt-size-loader-dot := em(6px)
|
|
||||||
$gt-size-loader := em(28px)
|
|
||||||
$gt-size-avatar := em(50px)
|
|
||||||
$gt-size-avatar-mobi := em(32px)
|
|
||||||
|
|
||||||
// styles
|
|
||||||
// Put everything under container to avoid style conflicts
|
|
||||||
.comments-container {
|
|
||||||
.gt-container {
|
.gt-container {
|
||||||
box-sizing border-box
|
|
||||||
* {
|
|
||||||
box-sizing border-box
|
|
||||||
}
|
|
||||||
font-size $gt-size-base
|
|
||||||
// common
|
|
||||||
a {
|
|
||||||
color $gt-color-main
|
|
||||||
&:hover {
|
|
||||||
color lighten($gt-color-main, 20%)
|
|
||||||
border-color lighten($gt-color-main, 20%)
|
|
||||||
}
|
|
||||||
&.is--active {
|
|
||||||
color $gt-color-link-active
|
|
||||||
cursor default !important
|
|
||||||
&:hover {
|
|
||||||
color $gt-color-link-active
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.hide {
|
|
||||||
display none !important
|
|
||||||
}
|
|
||||||
// icons
|
|
||||||
.gt-svg {
|
|
||||||
display inline-block
|
|
||||||
width em(16px)
|
|
||||||
height em(16px)
|
|
||||||
vertical-align sub
|
|
||||||
svg {
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
fill $gt-color-main
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.gt-ico {
|
|
||||||
display inline-block
|
|
||||||
&-text {
|
|
||||||
margin-left em(5px)
|
|
||||||
}
|
|
||||||
&-github {
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
.gt-svg {
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
}
|
|
||||||
svg {
|
|
||||||
fill inherit
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// loader
|
|
||||||
.gt-spinner {
|
|
||||||
position relative
|
|
||||||
&::before {
|
|
||||||
position absolute
|
|
||||||
top 3px
|
|
||||||
box-sizing border-box
|
|
||||||
width em(12px)
|
|
||||||
height em(12px)
|
|
||||||
margin-top em(-3px)
|
|
||||||
margin-left em(-6px)
|
|
||||||
border 1px solid $gt-color-btn
|
|
||||||
border-top-color $gt-color-main
|
|
||||||
border-radius 50%
|
|
||||||
animation gt-kf-rotate 0.6s linear infinite
|
|
||||||
content ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.gt-loader {
|
|
||||||
position relative
|
|
||||||
display inline-block
|
|
||||||
width $gt-size-loader
|
|
||||||
height $gt-size-loader
|
|
||||||
font-style normal
|
|
||||||
// font-size: $gt-size-loader
|
|
||||||
line-height $gt-size-loader
|
|
||||||
border 1px solid $gt-color-loader
|
|
||||||
border-radius 50%
|
|
||||||
animation ease gt-kf-rotate 1.5s infinite
|
|
||||||
&:before {
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
left 50%
|
|
||||||
display block
|
|
||||||
width $gt-size-loader-dot
|
|
||||||
height $gt-size-loader-dot
|
|
||||||
margin-top -($gt-size-loader-dot / 2)
|
|
||||||
margin-left -($gt-size-loader-dot / 2)
|
|
||||||
background-color $gt-color-loader
|
|
||||||
border-radius 50%
|
|
||||||
content ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// avatar
|
|
||||||
.gt-avatar {
|
|
||||||
display inline-block
|
|
||||||
width $gt-size-avatar
|
|
||||||
height $gt-size-avatar
|
|
||||||
+mobile() {
|
|
||||||
width $gt-size-avatar-mobi
|
|
||||||
height $gt-size-avatar-mobi
|
|
||||||
}
|
|
||||||
img {
|
|
||||||
width 100%
|
|
||||||
height auto
|
|
||||||
border-radius 3px
|
|
||||||
}
|
|
||||||
&-github {
|
|
||||||
width $gt-size-avatar - em(2px)
|
|
||||||
height $gt-size-avatar - em(2px)
|
|
||||||
cursor pointer
|
|
||||||
+mobile() {
|
|
||||||
width $gt-size-avatar-mobi - em(2px)
|
|
||||||
height $gt-size-avatar-mobi - em(2px)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// button
|
|
||||||
.gt-btn {
|
.gt-btn {
|
||||||
display inline-block
|
background-color var(--primary-color-light-1)
|
||||||
padding em(12px) em(20px)
|
border 1px solid var(--primary-color-light-1)
|
||||||
color $gt-color-btn
|
transition-t("color, background", "0, 0", "0.2, 0.2", "ease, ease")
|
||||||
font-size em(12px)
|
}
|
||||||
line-height 1
|
|
||||||
white-space nowrap
|
|
||||||
text-decoration none
|
.gt-initing-text {
|
||||||
background-color $gt-color-main
|
color var(--text-color-3)
|
||||||
border 1px solid $gt-color-main
|
}
|
||||||
border-radius $gt-size-border-radius
|
|
||||||
outline none
|
|
||||||
cursor pointer
|
.gt-meta {
|
||||||
&-text {
|
.gt-counts {
|
||||||
font-weight 400
|
a {
|
||||||
}
|
color var(--primary-color)
|
||||||
&-loading {
|
|
||||||
position relative
|
|
||||||
display inline-block
|
|
||||||
width em(12px)
|
|
||||||
height em(16px)
|
|
||||||
margin-left em(8px)
|
|
||||||
vertical-align top
|
|
||||||
}
|
|
||||||
&.is--disable {
|
|
||||||
cursor not-allowed
|
|
||||||
opacity 0.5
|
|
||||||
}
|
|
||||||
&-login {
|
|
||||||
margin-right 0
|
|
||||||
}
|
|
||||||
&-preview {
|
|
||||||
color $gt-color-main
|
|
||||||
background-color var(--background-color)
|
|
||||||
&:hover {
|
|
||||||
background-color var(--second-background-color)
|
|
||||||
}
|
}
|
||||||
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
&-public {
|
|
||||||
&:hover {
|
.gt-user {
|
||||||
background-color lighten($gt-color-main, 20%)
|
.gt-user-name {
|
||||||
border-color lighten($gt-color-main, 20%)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-loadmore
|
|
||||||
// loadmore
|
|
||||||
|
|
||||||
/* error */
|
|
||||||
.gt-error {
|
|
||||||
margin em(10px)
|
|
||||||
color $gt-color-error
|
|
||||||
text-align center
|
|
||||||
}
|
|
||||||
|
|
||||||
// initing
|
|
||||||
.gt-initing {
|
|
||||||
padding em(20px) 0
|
|
||||||
text-align center
|
|
||||||
&-text {
|
|
||||||
margin em(10px) auto
|
|
||||||
font-size 92%
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// no int
|
|
||||||
.gt-no-init {
|
|
||||||
padding em(20px) 0
|
|
||||||
text-align center
|
|
||||||
}
|
|
||||||
|
|
||||||
// link
|
|
||||||
.gt-link {
|
|
||||||
border-bottom 1px dotted $gt-color-main
|
|
||||||
&-counts
|
|
||||||
&-project {
|
|
||||||
text-decoration none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// meta
|
|
||||||
.gt-meta {
|
|
||||||
position relative
|
|
||||||
z-index 10
|
|
||||||
margin em(20px) 0
|
|
||||||
padding em(16px) 0
|
|
||||||
font-size em(16px)
|
|
||||||
border-bottom 1px solid $gt-color-hr
|
|
||||||
clearfix()
|
|
||||||
}
|
|
||||||
|
|
||||||
.gt-counts {
|
|
||||||
margin 0 em(10px) 0 0
|
|
||||||
color var(--default-text-color)
|
|
||||||
}
|
|
||||||
|
|
||||||
.gt-user {
|
|
||||||
float right
|
|
||||||
margin 0
|
|
||||||
font-size 92%
|
|
||||||
&-pic {
|
|
||||||
width 16px
|
|
||||||
height 16px
|
|
||||||
margin-right em(8px)
|
|
||||||
vertical-align top
|
|
||||||
}
|
|
||||||
&-inner {
|
|
||||||
display inline-block
|
|
||||||
cursor pointer
|
|
||||||
.gt-user-name {
|
|
||||||
color var(--default-text-color)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.gt-ico {
|
|
||||||
margin 0 0 0 em(5px)
|
|
||||||
svg {
|
|
||||||
fill var(--default-text-color)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.is--poping {
|
|
||||||
.gt-ico {
|
|
||||||
svg {
|
svg {
|
||||||
fill $gt-color-main
|
path {
|
||||||
|
fill var(--text-color-3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.gt-popup {
|
||||||
|
top 2.6rem
|
||||||
|
background var(--background-color-2)
|
||||||
|
border 1px solid var(--border-color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.gt-header {
|
||||||
|
.gt-header-comment {
|
||||||
|
textarea {
|
||||||
|
color var(--text-color-3)
|
||||||
|
background-color var(--background-color-2)
|
||||||
|
transition-t("color, background", "0, 0", "0.2, 0.2", "ease, ease")
|
||||||
|
}
|
||||||
|
|
||||||
|
.gt-header-controls {
|
||||||
|
|
||||||
|
.gt-btn-preview {
|
||||||
|
color #fff
|
||||||
|
background-color var(--primary-color-light-1)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.gt-version {
|
|
||||||
margin-left em(6px)
|
|
||||||
color $gt-color-sub
|
|
||||||
}
|
|
||||||
|
|
||||||
.gt-copyright {
|
.gt-comments {
|
||||||
margin 0 em(15px) em(8px)
|
.gt-comments-null {
|
||||||
padding-top em(8px)
|
color var(--text-color-4)
|
||||||
border-top 1px solid var(--border-color)
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// popup
|
|
||||||
.gt-popup {
|
|
||||||
position absolute
|
|
||||||
top em(38px)
|
|
||||||
right 0
|
|
||||||
display inline-block
|
|
||||||
padding em(10px) 0
|
|
||||||
font-size em(14px)
|
|
||||||
letter-spacing 0.5px
|
|
||||||
background var(--background-color)
|
|
||||||
border 1px solid var(--border-color)
|
|
||||||
.gt-action {
|
|
||||||
position relative
|
|
||||||
display block
|
|
||||||
margin em(8px) 0
|
|
||||||
padding 0 em(18px)
|
|
||||||
text-decoration none
|
|
||||||
cursor pointer
|
|
||||||
&.is--active {
|
|
||||||
&:before {
|
|
||||||
position absolute
|
|
||||||
top em(7px)
|
|
||||||
left em(8px)
|
|
||||||
width em(4px)
|
|
||||||
height em(4px)
|
|
||||||
background $gt-color-main
|
|
||||||
content ''
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// header
|
|
||||||
.gt-header {
|
|
||||||
position relative
|
|
||||||
display flex
|
|
||||||
&-comment {
|
|
||||||
flex 1
|
|
||||||
margin-left em(20px)
|
|
||||||
+mobile() {
|
|
||||||
margin-left em(14px)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-textarea {
|
|
||||||
display block
|
|
||||||
box-sizing border-box
|
|
||||||
width 100%
|
|
||||||
min-height em(82px)
|
|
||||||
max-height em(240px)
|
|
||||||
padding em(12px)
|
|
||||||
color var(--default-text-color)
|
|
||||||
font-size em(14px)
|
|
||||||
word-wrap break-word
|
|
||||||
background-color var(--fourth-text-color)
|
|
||||||
border 1px solid var(--border-color)
|
|
||||||
border-radius $gt-size-border-radius
|
|
||||||
outline none
|
|
||||||
transition all 0.25s ease
|
|
||||||
resize vertical
|
|
||||||
&:hover {
|
|
||||||
background-color var(--background-color)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-preview {
|
|
||||||
padding em(12px)
|
|
||||||
background-color var(--background-color)
|
|
||||||
border 1px solid var(--border-color)
|
|
||||||
border-radius $gt-size-border-radius
|
|
||||||
}
|
|
||||||
&-controls {
|
|
||||||
position relative
|
|
||||||
margin em(12px) 0 0
|
|
||||||
clearfix()
|
|
||||||
+mobile() {
|
|
||||||
margin 0
|
|
||||||
}
|
|
||||||
&-tip {
|
|
||||||
color $gt-color-main
|
|
||||||
font-size em(14px)
|
|
||||||
text-decoration none
|
|
||||||
vertical-align sub
|
|
||||||
+mobile() {
|
|
||||||
display none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.gt-btn {
|
|
||||||
float right
|
|
||||||
margin-left em(20px)
|
|
||||||
+mobile() {
|
|
||||||
float none
|
|
||||||
width 100%
|
|
||||||
margin em(12px) 0 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
position fixed
|
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
bottom 100%
|
|
||||||
left 0
|
|
||||||
opacity 0
|
|
||||||
content ''
|
|
||||||
}
|
|
||||||
&.gt-input-focused {
|
|
||||||
position relative
|
|
||||||
&:after {
|
|
||||||
position fixed
|
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
bottom 0
|
|
||||||
left 0
|
|
||||||
z-index $gt-mask-z-index
|
|
||||||
background #000
|
|
||||||
opacity 0.6
|
|
||||||
transition opacity 0.3s, bottom 0s
|
|
||||||
content ''
|
|
||||||
}
|
|
||||||
.gt-header-comment {
|
|
||||||
z-index $gt-mask-z-index + 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// comments
|
|
||||||
.gt-comments {
|
|
||||||
padding-top em(20px)
|
|
||||||
&-null {
|
|
||||||
text-align center
|
|
||||||
}
|
|
||||||
&-controls {
|
|
||||||
margin em(20px) 0
|
|
||||||
text-align center
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// comment
|
|
||||||
.gt-comment {
|
|
||||||
position relative
|
|
||||||
display flex
|
|
||||||
padding em(10px) 0
|
|
||||||
&-content {
|
|
||||||
flex 1
|
|
||||||
margin-left em(20px)
|
|
||||||
padding em(12px) em(16px)
|
|
||||||
overflow auto
|
|
||||||
background-color var(--second-background-color)
|
|
||||||
transition all ease 0.25s
|
|
||||||
+mobile() {
|
|
||||||
margin-left em(14px)
|
|
||||||
padding em(10px) em(12px)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-header {
|
|
||||||
position relative
|
|
||||||
margin-bottom em(8px)
|
|
||||||
font-size em(14px)
|
|
||||||
}
|
|
||||||
&-block-1 {
|
|
||||||
float right
|
|
||||||
width em(32px)
|
|
||||||
height em(22px)
|
|
||||||
}
|
|
||||||
&-block-2 {
|
|
||||||
float right
|
|
||||||
width em(64px)
|
|
||||||
height em(22px)
|
|
||||||
}
|
|
||||||
&-username {
|
|
||||||
color $gt-color-main
|
|
||||||
font-weight 500
|
|
||||||
text-decoration none
|
|
||||||
&:hover {
|
|
||||||
text-decoration underline
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-text {
|
|
||||||
margin-left em(8px)
|
|
||||||
color $gt-color-sub
|
|
||||||
}
|
|
||||||
&-date {
|
|
||||||
margin-left em(8px)
|
|
||||||
color $gt-color-sub
|
|
||||||
}
|
|
||||||
&-like
|
|
||||||
&-edit
|
|
||||||
&-reply {
|
|
||||||
position absolute
|
|
||||||
height em(22px)
|
|
||||||
&:hover {
|
|
||||||
cursor pointer
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-like {
|
|
||||||
top 0
|
|
||||||
right em(32px)
|
|
||||||
}
|
|
||||||
&-edit
|
|
||||||
&-reply {
|
|
||||||
top 0
|
|
||||||
right 0
|
|
||||||
}
|
|
||||||
&-body {
|
|
||||||
// color: $gt-color-comment-txt !important
|
|
||||||
color var(--second-text-color) !important
|
|
||||||
.email-hidden-toggle a {
|
|
||||||
display inline-block
|
|
||||||
height 12px
|
|
||||||
padding 0 9px
|
|
||||||
color #444d56
|
|
||||||
font-weight 600
|
|
||||||
font-size 12px
|
|
||||||
line-height 6px
|
|
||||||
text-decoration none
|
|
||||||
vertical-align middle
|
|
||||||
background #dfe2e5
|
|
||||||
border-radius 1px
|
|
||||||
&:hover {
|
|
||||||
background-color #c6cbd1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.email-hidden-reply {
|
|
||||||
display none
|
|
||||||
white-space pre-wrap
|
|
||||||
.email-signature-reply {
|
|
||||||
margin 15px 0
|
|
||||||
padding 0 15px
|
|
||||||
color #586069
|
|
||||||
border-left 4px solid #dfe2e5
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.email-hidden-reply.expanded {
|
|
||||||
display block
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&-admin {
|
|
||||||
.gt-comment-content {
|
.gt-comment-content {
|
||||||
background-color var(--fourth-text-color)
|
background-color var(--background-color-2)
|
||||||
}
|
transition-t("color, background", "0, 0", "0.2, 0.2", "ease, ease")
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes gt-kf-rotate {
|
&:hover {
|
||||||
0% {
|
box-shadow none
|
||||||
transform rotate(0)
|
}
|
||||||
}
|
|
||||||
100% {
|
.gt-comment-body {
|
||||||
transform rotate(360deg)
|
p
|
||||||
|
li {
|
||||||
|
color var(--text-color-3)
|
||||||
|
}
|
||||||
|
|
||||||
|
.email-fragment {
|
||||||
|
color var(--text-color-3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.notranslate {
|
||||||
|
background-color var(--background-color-3)
|
||||||
|
|
||||||
|
code {
|
||||||
|
color var(--text-color-2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background-color var(--background-color-3)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,11 +5,11 @@
|
||||||
.tk-meta-input {
|
.tk-meta-input {
|
||||||
.el-input {
|
.el-input {
|
||||||
.el-input-group__prepend {
|
.el-input-group__prepend {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
input {
|
input {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,47 +17,50 @@
|
||||||
|
|
||||||
.tk-input {
|
.tk-input {
|
||||||
textarea {
|
textarea {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.actions {
|
.actions {
|
||||||
|
|
||||||
.tk-row-actions-start {
|
.tk-row-actions-start {
|
||||||
.tk-action-icon {
|
|
||||||
|
.tk-submit-action-icon {
|
||||||
|
|
||||||
svg {
|
svg {
|
||||||
fill var(--default-text-color)
|
path {
|
||||||
|
fill var(--text-color-3)
|
||||||
|
transition-t("fill", "0", "0.2", "ease")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.OwO {
|
.OwO-body {
|
||||||
|
color var(--text-color-3)
|
||||||
.OwO-body {
|
background-color var(--background-color-1)
|
||||||
color var(--default-text-color)
|
|
||||||
background-color var(--background-color)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tk-preview {
|
.tk-preview {
|
||||||
span {
|
span {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
background var(--second-background-color)
|
background var(--background-color-2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tk-preview-container {
|
.tk-preview-container {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tk-comments-container {
|
.tk-comments-container {
|
||||||
.tk-comments-count {
|
.tk-comments-count {
|
||||||
span {
|
span {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -67,10 +70,16 @@
|
||||||
margin-bottom 1.4rem
|
margin-bottom 1.4rem
|
||||||
|
|
||||||
.tk-meta {
|
.tk-meta {
|
||||||
|
|
||||||
.tk-nick {
|
.tk-nick {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strong {
|
||||||
|
color var(--text-color-3)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
.tk-tag {
|
.tk-tag {
|
||||||
|
|
||||||
&.tk-tag-green {
|
&.tk-tag-green {
|
||||||
|
@ -85,18 +94,26 @@
|
||||||
|
|
||||||
.tk-time {
|
.tk-time {
|
||||||
time {
|
time {
|
||||||
color var(--default-text-color)
|
color var(--text-color-4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tk-content {
|
.tk-content {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
|
|
||||||
|
span {
|
||||||
|
color var(--text-color-3)
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
color var(--text-color-3)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.tk-expand {
|
.tk-expand {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,14 +4,14 @@
|
||||||
|
|
||||||
.vwrap {
|
.vwrap {
|
||||||
|
|
||||||
border 0.1rem solid var(--third-text-color)
|
border 0.1rem solid var(--text-color-4)
|
||||||
|
|
||||||
.vheader {
|
.vheader {
|
||||||
|
|
||||||
.vinput {
|
.vinput {
|
||||||
|
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
border-color var(--third-text-color)
|
border-color var(--text-color-4)
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
border-bottom 0.1rem dashed var(--primary-color) !important
|
border-bottom 0.1rem dashed var(--primary-color) !important
|
||||||
|
@ -23,14 +23,14 @@
|
||||||
.vedit {
|
.vedit {
|
||||||
|
|
||||||
.veditor {
|
.veditor {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
.vctrl {
|
.vctrl {
|
||||||
|
|
||||||
.vicon {
|
.vicon {
|
||||||
|
|
||||||
fill var(--default-text-color)
|
fill var(--text-color-3)
|
||||||
|
|
||||||
&.actived {
|
&.actived {
|
||||||
fill var(--primary-color)
|
fill var(--primary-color)
|
||||||
|
@ -41,9 +41,9 @@
|
||||||
|
|
||||||
|
|
||||||
button.vsubmit {
|
button.vsubmit {
|
||||||
color var(--default-text-color) !important
|
color var(--text-color-3) !important
|
||||||
background transparent !important
|
background transparent !important
|
||||||
border 0.1rem solid var(--default-text-color) !important
|
border 0.1rem solid var(--text-color-3) !important
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--primary-color) !important
|
color var(--primary-color) !important
|
||||||
|
@ -54,10 +54,10 @@
|
||||||
|
|
||||||
|
|
||||||
.vcount {
|
.vcount {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
|
|
||||||
.vnum {
|
.vnum {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,15 +85,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.vsys {
|
.vsys {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
background var(--fourth-text-color) !important
|
background var(--background-color-2) !important
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.vcontent {
|
.vcontent {
|
||||||
P {
|
P {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
|
|
||||||
code {
|
code {
|
||||||
color var(--code-foreground)
|
color var(--code-foreground)
|
||||||
|
@ -114,14 +114,14 @@
|
||||||
|
|
||||||
|
|
||||||
.vcopy {
|
.vcopy {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.vpage {
|
.vpage {
|
||||||
|
|
||||||
.vmore {
|
.vmore {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
border 0.1rem solid var(--border-color)
|
border 0.1rem solid var(--border-color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,62 @@
|
||||||
|
.waline-comment-container {
|
||||||
|
#waline-comment {
|
||||||
|
--waline-theme-color var(--primary-color)
|
||||||
|
--waline-active-color var(--primary-color-light-1)
|
||||||
|
--waline-color var(--text-color-3)
|
||||||
|
--waline-bgcolor var(--background-color-1)
|
||||||
|
--waline-border-color var(--border-color)
|
||||||
|
--waline-disable-bgcolor var(--background-color-2)
|
||||||
|
--waline-disable-color var(--text-color-3)
|
||||||
|
--waline-code-bgcolor rgba(40, 44, 52, 0.9)
|
||||||
|
--waline-info-bgcolor var(--background-color-3)
|
||||||
|
--waline-info-color var(--text-color-3)
|
||||||
|
--waline-border 1px solid var(--waline-border-color)
|
||||||
|
|
||||||
|
input
|
||||||
|
textarea {
|
||||||
|
position relative
|
||||||
|
box-sizing border-box
|
||||||
|
padding 0.6rem 1rem
|
||||||
|
color var(--text-color-3)
|
||||||
|
background transparent
|
||||||
|
border-radius 0.4rem
|
||||||
|
outline none
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background var(--background-color-2)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.wl-header {
|
||||||
|
box-sizing border-box
|
||||||
|
padding 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
button {
|
||||||
|
transition-t("color, background", "0, 0", "0.2, 0.2", "ease, ease")
|
||||||
|
}
|
||||||
|
|
||||||
|
.wl-logout-btn {
|
||||||
|
svg {
|
||||||
|
width 1rem
|
||||||
|
height 1rem
|
||||||
|
path {
|
||||||
|
color var(--background-color-3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.wl-panel {
|
||||||
|
border-radius 0.4rem
|
||||||
|
}
|
||||||
|
|
||||||
|
.wl-count
|
||||||
|
.wl-num
|
||||||
|
.wl-preview h4
|
||||||
|
.wl-like span {
|
||||||
|
color var(--text-color-4)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,12 +5,13 @@ $temp-img = hexo-config('style.first_screen.background_img')
|
||||||
$first-screen-img = $temp-img ? $temp-img : '/images/bg.svg'
|
$first-screen-img = $temp-img ? $temp-img : '/images/bg.svg'
|
||||||
|
|
||||||
$temp-font-color = hexo-config('style.first_screen.font_color')
|
$temp-font-color = hexo-config('style.first_screen.font_color')
|
||||||
$first-screen-font-color = $temp-font-color ? convert($temp-font-color) : var(--default-text-color)
|
$first-screen-font-color = $temp-font-color ? convert($temp-font-color) : var(--text-color-3)
|
||||||
|
|
||||||
.first-screen-container {
|
.first-screen-container {
|
||||||
position relative
|
position relative
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
|
height 100vh
|
||||||
overflow hidden
|
overflow hidden
|
||||||
background url($first-screen-img) center center / cover no-repeat
|
background url($first-screen-img) center center / cover no-repeat
|
||||||
|
|
||||||
|
@ -66,7 +67,7 @@ $first-screen-font-color = $temp-font-color ? convert($temp-font-color) : var(--
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
.footer {
|
.footer {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--primary-color)
|
color var(--primary-color)
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
.info-item {
|
.info-item {
|
||||||
margin 0.3rem 0
|
margin 0.3rem 0
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
|
|
||||||
&.ypyun-info a {
|
&.ypyun-info a {
|
||||||
display flex
|
display flex
|
||||||
|
|
|
@ -11,7 +11,7 @@ $logo-image-box-width = 46px
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
padding-top $scroll-progress-bar-height
|
padding-top $scroll-progress-bar-height
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
|
|
||||||
hover-style(false, 0, 0)
|
hover-style(false, 0, 0)
|
||||||
|
|
||||||
|
@ -25,10 +25,15 @@ $logo-image-box-width = 46px
|
||||||
width $main-content-width
|
width $main-content-width
|
||||||
max-width $content-max-width
|
max-width $content-max-width
|
||||||
height 100%
|
height 100%
|
||||||
|
transition-t("max-width, width", "0, 0", "0.1, 0.1", "ease, ease")
|
||||||
|
|
||||||
|
|
||||||
&.has-first-screen {
|
&.has-first-screen {
|
||||||
max-width $content-max-width * 1.2
|
max-width $has-fs-content-max-width
|
||||||
|
}
|
||||||
|
|
||||||
|
.has-toc & {
|
||||||
|
max-width $has-toc-content-max-width
|
||||||
}
|
}
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
@ -75,7 +80,7 @@ $logo-image-box-width = 46px
|
||||||
}
|
}
|
||||||
|
|
||||||
.logo-title {
|
.logo-title {
|
||||||
color var(--first-text-color)
|
color var(--text-color-1)
|
||||||
font-weight bold
|
font-weight bold
|
||||||
font-size $logo-title-font-size
|
font-size $logo-title-font-size
|
||||||
line-height 1
|
line-height 1
|
||||||
|
@ -109,7 +114,7 @@ $logo-image-box-width = 46px
|
||||||
position relative
|
position relative
|
||||||
float left
|
float left
|
||||||
margin-left 2rem
|
margin-left 2rem
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
|
@ -143,7 +148,7 @@ $logo-image-box-width = 46px
|
||||||
font-size $pc-search-icon-font-size
|
font-size $pc-search-icon-font-size
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,12 +167,12 @@ $logo-image-box-width = 46px
|
||||||
width 20px
|
width 20px
|
||||||
height 20px
|
height 20px
|
||||||
margin-left 12px
|
margin-left 12px
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size 18px
|
font-size 18px
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
&:first-child {
|
&:first-child {
|
||||||
|
@ -187,7 +192,7 @@ $logo-image-box-width = 46px
|
||||||
position relative
|
position relative
|
||||||
width 18px
|
width 18px
|
||||||
height $menu-bar-line-height
|
height $menu-bar-line-height
|
||||||
background var(--default-text-color)
|
background var(--text-color-3)
|
||||||
|
|
||||||
.header-drawer-show & {
|
.header-drawer-show & {
|
||||||
background transparent
|
background transparent
|
||||||
|
@ -200,7 +205,7 @@ $logo-image-box-width = 46px
|
||||||
left 0
|
left 0
|
||||||
width 100%
|
width 100%
|
||||||
height $menu-bar-line-height
|
height $menu-bar-line-height
|
||||||
background var(--default-text-color)
|
background var(--text-color-3)
|
||||||
content ''
|
content ''
|
||||||
transition-t("transform", "0", "0.38", "ease")
|
transition-t("transform", "0", "0.38", "ease")
|
||||||
}
|
}
|
||||||
|
@ -236,7 +241,7 @@ $logo-image-box-width = 46px
|
||||||
z-index $z-index-2
|
z-index $z-index-2
|
||||||
width 100%
|
width 100%
|
||||||
padding $header-height 0 20px 0
|
padding $header-height 0 20px 0
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
transform scaleY(0)
|
transform scaleY(0)
|
||||||
transform-origin top
|
transform-origin top
|
||||||
transition-t("transform", "0", "0.38", "ease")
|
transition-t("transform", "0", "0.38", "ease")
|
||||||
|
@ -258,18 +263,18 @@ $logo-image-box-width = 46px
|
||||||
|
|
||||||
a {
|
a {
|
||||||
padding 6px 20px
|
padding 6px 20px
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
border-radius 20px
|
border-radius 20px
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
border 1px solid var(--default-text-color)
|
border 1px solid var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
&.active {
|
&.active {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
border 1px solid var(--default-text-color)
|
border 1px solid var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@ $search-header-height = 3rem
|
||||||
width 70%
|
width 70%
|
||||||
height 80%
|
height 80%
|
||||||
margin auto
|
margin auto
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
border-radius 0.4rem
|
border-radius 0.4rem
|
||||||
transform scale(0)
|
transform scale(0)
|
||||||
transition-t("transform", "0", "0.3", "ease")
|
transition-t("transform", "0", "0.3", "ease")
|
||||||
|
@ -46,13 +46,13 @@ $search-header-height = 3rem
|
||||||
align-items center
|
align-items center
|
||||||
height $search-header-height
|
height $search-header-height
|
||||||
padding 0 1rem
|
padding 0 1rem
|
||||||
background var(--fourth-text-color)
|
background var(--text-color-6)
|
||||||
border-top-left-radius 0.2rem
|
border-top-left-radius 0.2rem
|
||||||
border-top-right-radius 0.2rem
|
border-top-right-radius 0.2rem
|
||||||
|
|
||||||
.search-input-field-pre {
|
.search-input-field-pre {
|
||||||
margin-right 0.2rem
|
margin-right 0.2rem
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
cursor pointer
|
cursor pointer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ $search-header-height = 3rem
|
||||||
|
|
||||||
.search-input {
|
.search-input {
|
||||||
width 100%
|
width 100%
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size 1.2rem
|
font-size 1.2rem
|
||||||
background transparent
|
background transparent
|
||||||
border 0
|
border 0
|
||||||
|
@ -73,7 +73,7 @@ $search-header-height = 3rem
|
||||||
}
|
}
|
||||||
|
|
||||||
&::-webkit-input-placeholder {
|
&::-webkit-input-placeholder {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,12 +81,12 @@ $search-header-height = 3rem
|
||||||
|
|
||||||
|
|
||||||
.close-popup-btn {
|
.close-popup-btn {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size $icon-size
|
font-size $icon-size
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--first-text-color)
|
color var(--text-color-1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -130,7 +130,7 @@ $search-header-height = 3rem
|
||||||
left 0
|
left 0
|
||||||
width 0.4rem
|
width 0.4rem
|
||||||
height 0.4rem
|
height 0.4rem
|
||||||
background var(--default-text-color)
|
background var(--text-color-3)
|
||||||
border-radius 50%
|
border-radius 50%
|
||||||
transform translateY(-50%)
|
transform translateY(-50%)
|
||||||
content ''
|
content ''
|
||||||
|
@ -147,7 +147,7 @@ $search-header-height = 3rem
|
||||||
|
|
||||||
a {
|
a {
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@ $search-header-height = 3rem
|
||||||
|
|
||||||
#no-result {
|
#no-result {
|
||||||
margin auto
|
margin auto
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ $friend-link-item-border-radius = 6px
|
||||||
keep-container(false, 0, 0, 2rem, 2rem)
|
keep-container(false, 0, 0, 2rem, 2rem)
|
||||||
|
|
||||||
.page-template-content {
|
.page-template-content {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
|
|
||||||
h1
|
h1
|
||||||
h2
|
h2
|
||||||
|
@ -87,9 +87,9 @@ $friend-link-item-border-radius = 6px
|
||||||
justify-content center
|
justify-content center
|
||||||
width $friend-link-item-height - $friend-link-item-interval
|
width $friend-link-item-height - $friend-link-item-interval
|
||||||
height 100%
|
height 100%
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
font-size 2rem
|
font-size 2rem
|
||||||
background var(--second-background-color)
|
background var(--background-color-2)
|
||||||
|
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
@ -123,7 +123,7 @@ $friend-link-item-border-radius = 6px
|
||||||
.name {
|
.name {
|
||||||
width 100%
|
width 100%
|
||||||
height 60%
|
height 60%
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
font-size 1.28rem
|
font-size 1.28rem
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
@ -134,7 +134,7 @@ $friend-link-item-border-radius = 6px
|
||||||
.description {
|
.description {
|
||||||
width 100%
|
width 100%
|
||||||
height 40%
|
height 40%
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
font-size 1rem
|
font-size 1rem
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,32 +2,34 @@ $li-border-radius = 0.4rem
|
||||||
$li-margin-bottom = 0.8rem
|
$li-margin-bottom = 0.8rem
|
||||||
|
|
||||||
.post-tools-container {
|
.post-tools-container {
|
||||||
|
position relative
|
||||||
|
box-sizing border-box
|
||||||
|
padding-top 2rem
|
||||||
|
|
||||||
.tools-list {
|
.tools-list {
|
||||||
|
|
||||||
li {
|
li {
|
||||||
display flex
|
position relative
|
||||||
align-items center
|
box-sizing border-box
|
||||||
justify-content center
|
|
||||||
width $post-tool-button-width
|
width $post-tool-button-width
|
||||||
height $post-tool-button-width
|
height $post-tool-button-width
|
||||||
margin-bottom $li-margin-bottom
|
margin-bottom $li-margin-bottom
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size 1.2rem
|
font-size 1.2rem
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
border-radius 50%
|
border-radius 50%
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--background-color)
|
color var(--background-color-1)
|
||||||
background var(--primary-color)
|
background var(--primary-color)
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--background-color)
|
color var(--background-color-1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,13 +41,37 @@ $li-margin-bottom = 0.8rem
|
||||||
|
|
||||||
hover-style(true, 1.06, 1.06)
|
hover-style(true, 1.06, 1.06)
|
||||||
|
|
||||||
&.page-aside-toggle {
|
&.toggle-show-toc {
|
||||||
display none
|
display none
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
display none !important
|
display none !important
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
&.go-to-comments {
|
||||||
|
.post-comments-count {
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
right -1rem
|
||||||
|
display none
|
||||||
|
align-items center
|
||||||
|
justify-content center
|
||||||
|
box-sizing border-box
|
||||||
|
min-width 1.1rem
|
||||||
|
height 1.1rem
|
||||||
|
padding 0 0.2rem
|
||||||
|
color var(--badge-color)
|
||||||
|
font-size 12px
|
||||||
|
background var(--badge-background-color)
|
||||||
|
border-radius 0.4rem
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
display none !important
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
top 0.4rem
|
top 0.4rem
|
||||||
right 0.3rem
|
right 0.3rem
|
||||||
z-index $z-index-8
|
z-index $z-index-8
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size 1.1rem
|
font-size 1.1rem
|
||||||
visibility hidden
|
visibility hidden
|
||||||
|
|
||||||
|
|
|
@ -10,25 +10,25 @@ $tools-item-border-radius = 0.1rem
|
||||||
width $tools-item-width
|
width $tools-item-width
|
||||||
height $tools-item-width
|
height $tools-item-width
|
||||||
margin-bottom 0.2rem
|
margin-bottom 0.2rem
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
font-size $tools-item-font-size
|
font-size $tools-item-font-size
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
border-right none
|
border-right none
|
||||||
border-radius $tools-item-border-radius
|
border-radius $tools-item-border-radius
|
||||||
box-shadow 0.1rem 0.1rem 0.2rem var(--shadow-color)
|
box-shadow 0.1rem 0.1rem 0.2rem var(--shadow-color)
|
||||||
cursor pointer
|
cursor pointer
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
}
|
}
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--background-color)
|
color var(--background-color-1)
|
||||||
background var(--primary-color)
|
background var(--primary-color)
|
||||||
box-shadow 0.2rem 0.2rem 0.4rem var(--shadow-color)
|
box-shadow 0.2rem 0.2rem 0.4rem var(--shadow-color)
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--background-color)
|
color var(--background-color-1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ $tools-item-border-radius = 0.1rem
|
||||||
border-radius $tools-item-border-radius
|
border-radius $tools-item-border-radius
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--background-color)
|
color var(--background-color-1)
|
||||||
background var(--primary-color)
|
background var(--primary-color)
|
||||||
box-shadow 0.2rem 0.2rem 0.4rem var(--shadow-color)
|
box-shadow 0.2rem 0.2rem 0.4rem var(--shadow-color)
|
||||||
}
|
}
|
||||||
|
@ -61,13 +61,6 @@ $tools-item-border-radius = 0.1rem
|
||||||
opacity 0
|
opacity 0
|
||||||
transition-t("transform, opacity", "0, 0", "0.2, 0.2", "linear, linear")
|
transition-t("transform, opacity", "0, 0", "0.2, 0.2", "linear, linear")
|
||||||
|
|
||||||
.tool-expand-width {
|
|
||||||
+keep-tablet() {
|
|
||||||
display none
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
&.show {
|
&.show {
|
||||||
transform translateX(0)
|
transform translateX(0)
|
||||||
opacity 1
|
opacity 1
|
||||||
|
|
|
@ -1,13 +1,25 @@
|
||||||
.post-toc-wrap {
|
.post-toc-wrap {
|
||||||
|
position relative
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
|
height 100%
|
||||||
|
overflow-y auto
|
||||||
font-size 0.92rem
|
font-size 0.92rem
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-thumb {
|
||||||
|
background var(--toc-scrollbar-color)
|
||||||
|
border-radius 0.3rem
|
||||||
|
}
|
||||||
|
|
||||||
|
&::-webkit-scrollbar-track {
|
||||||
|
background transparent
|
||||||
|
}
|
||||||
|
|
||||||
.post-toc {
|
.post-toc {
|
||||||
|
|
||||||
ol {
|
ol {
|
||||||
margin 0
|
margin 0
|
||||||
padding 0 2px 12px 10px
|
padding 0 0.1rem 0.8rem 0.6rem
|
||||||
text-align left
|
text-align left
|
||||||
list-style none
|
list-style none
|
||||||
|
|
||||||
|
@ -27,6 +39,7 @@
|
||||||
|
|
||||||
|
|
||||||
.nav-item {
|
.nav-item {
|
||||||
|
margin-bottom 0.2rem
|
||||||
overflow hidden
|
overflow hidden
|
||||||
line-height 1.8
|
line-height 1.8
|
||||||
white-space nowrap
|
white-space nowrap
|
||||||
|
@ -36,7 +49,7 @@
|
||||||
|
|
||||||
.nav {
|
.nav {
|
||||||
.nav-child {
|
.nav-child {
|
||||||
display hexo-config('toc.expand_all') ? block : none
|
display hexo-config('toc.expand_all') ? block:none
|
||||||
}
|
}
|
||||||
|
|
||||||
.active > .nav-child {
|
.active > .nav-child {
|
||||||
|
@ -54,7 +67,7 @@
|
||||||
|
|
||||||
.nav-number
|
.nav-number
|
||||||
.nav-text {
|
.nav-text {
|
||||||
color var(--default-text-color)
|
color var(--toc-text-color)
|
||||||
}
|
}
|
||||||
|
|
||||||
.active > a {
|
.active > a {
|
||||||
|
|
|
@ -1,217 +1,280 @@
|
||||||
$avatarWidth = 46px
|
$avatarWidth = 3rem
|
||||||
$arrow-icon-width = 16px
|
$arrow-icon-width = 1rem
|
||||||
$post-nav-max-width = 220px
|
$post-nav-max-width = 14rem
|
||||||
$article-title-font-size = 1.6rem
|
$article-title-font-size = 1.6rem
|
||||||
|
$toc-container-width = 15rem
|
||||||
|
|
||||||
.article-content-container {
|
|
||||||
|
|
||||||
keep-container(false, 0, 0, 2rem, 2rem)
|
.post-page-container {
|
||||||
|
position relative
|
||||||
|
display flex
|
||||||
|
justify-content space-between
|
||||||
|
box-sizing border-box
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
|
||||||
+keep-mobile() {
|
|
||||||
padding 1.2rem 0.2rem
|
|
||||||
box-shadow none
|
|
||||||
}
|
|
||||||
|
|
||||||
.article-title {
|
&.show-toc {
|
||||||
color var(--second-text-color)
|
.toc-content-container {
|
||||||
font-weight 600
|
display block
|
||||||
font-size $article-title-font-size
|
|
||||||
|
|
||||||
+keep-tablet() {
|
|
||||||
font-size $article-title-font-size * 0.9
|
|
||||||
}
|
}
|
||||||
|
|
||||||
+keep-mobile() {
|
.article-content-container {
|
||||||
font-size $article-title-font-size * 0.8
|
width 'calc(100% - %s)' % $toc-container-width
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.article-header {
|
+keep-tablet() {
|
||||||
|
.toc-content-container {
|
||||||
|
display none !important
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-content-container {
|
||||||
|
width 100% !important
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.article-content-container {
|
||||||
position relative
|
position relative
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
height $avatarWidth
|
height 100%
|
||||||
padding-left $avatarWidth
|
keep-container(false, 0, 0, 2rem, 2rem)
|
||||||
|
|
||||||
.avatar {
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
left 0
|
|
||||||
box-sizing border-box
|
|
||||||
width $avatarWidth
|
|
||||||
height $avatarWidth
|
|
||||||
padding 1px
|
|
||||||
border 1px solid var(--border-color)
|
|
||||||
border-radius 50%
|
|
||||||
|
|
||||||
img {
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
background var(--avatar-background-color)
|
|
||||||
border-radius 50%
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.info {
|
|
||||||
display flex
|
|
||||||
flex-direction column
|
|
||||||
justify-content space-between
|
|
||||||
box-sizing border-box
|
|
||||||
width 100%
|
|
||||||
height 100%
|
|
||||||
margin-left 10px
|
|
||||||
padding 2px 0
|
|
||||||
|
|
||||||
.author {
|
|
||||||
display flex
|
|
||||||
align-items center
|
|
||||||
font-weight 600
|
|
||||||
font-size 1.18rem
|
|
||||||
|
|
||||||
.name {
|
|
||||||
color var(--default-text-color)
|
|
||||||
}
|
|
||||||
|
|
||||||
.author-label {
|
|
||||||
margin-left 10px
|
|
||||||
padding 0 5px
|
|
||||||
color #fff
|
|
||||||
font-weight 500
|
|
||||||
font-size 0.8rem
|
|
||||||
background var(--selection-color)
|
|
||||||
border-radius 5px
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.article-header
|
|
||||||
.article-header-meta-info {
|
|
||||||
margin-top 16px
|
|
||||||
+keep-tablet() {
|
|
||||||
transform scale(0.9)
|
|
||||||
transform-origin left top
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.article-content {
|
|
||||||
margin-top $component-spacing-value
|
|
||||||
padding-bottom 10px
|
|
||||||
color var(--default-text-color)
|
|
||||||
word-wrap break-word
|
|
||||||
border-bottom 1px solid var(--border-color)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.post-tags-box {
|
|
||||||
display none
|
|
||||||
justify-content center
|
|
||||||
margin-top 1.6rem
|
|
||||||
font-size 1.1rem
|
|
||||||
|
|
||||||
+keep-tablet() {
|
|
||||||
display flex
|
|
||||||
}
|
|
||||||
|
|
||||||
+keep-mobile() {
|
+keep-mobile() {
|
||||||
margin-top 1.2rem
|
padding 1.2rem 0.2rem
|
||||||
font-size 1rem
|
box-shadow none
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
box-shadow none
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.tag-item {
|
.article-title {
|
||||||
margin 0 0.25rem
|
color var(--text-color-2)
|
||||||
|
font-weight 600
|
||||||
|
font-size $article-title-font-size
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
font-size $article-title-font-size * 0.9
|
||||||
|
}
|
||||||
|
|
||||||
|
+keep-mobile() {
|
||||||
|
font-size $article-title-font-size * 0.8
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.post-copyright-info {
|
|
||||||
width 100%
|
|
||||||
margin-top $component-spacing-value
|
|
||||||
|
|
||||||
+keep-tablet() {
|
|
||||||
margin-top $component-spacing-value * 0.8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.article-nav {
|
.article-header {
|
||||||
height 40px
|
position relative
|
||||||
margin-top $component-spacing-value
|
|
||||||
|
|
||||||
.article-prev
|
|
||||||
.article-next {
|
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
max-width $post-nav-max-width
|
width 100%
|
||||||
height 100%
|
height $avatarWidth
|
||||||
|
padding-left $avatarWidth
|
||||||
|
|
||||||
keep-container(true, 1.03, 1.03, 10px, 0)
|
.avatar {
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
left 0
|
||||||
|
box-sizing border-box
|
||||||
|
width $avatarWidth
|
||||||
|
height $avatarWidth
|
||||||
|
padding 0.1rem
|
||||||
|
border 1px solid var(--border-color)
|
||||||
|
border-radius 50%
|
||||||
|
|
||||||
a {
|
img {
|
||||||
position relative
|
width 100%
|
||||||
display block
|
height 100%
|
||||||
|
background var(--avatar-background-color)
|
||||||
|
border-radius 50%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.info {
|
||||||
|
display flex
|
||||||
|
flex-direction column
|
||||||
|
justify-content space-between
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
|
margin-left 0.8rem
|
||||||
|
padding 0.2rem 0
|
||||||
|
|
||||||
&.prev {
|
.author {
|
||||||
padding-left $arrow-icon-width
|
display flex
|
||||||
}
|
align-items center
|
||||||
|
font-weight 600
|
||||||
|
font-size 1.18rem
|
||||||
|
|
||||||
&.next {
|
.name {
|
||||||
padding-right $arrow-icon-width
|
color var(--text-color-3)
|
||||||
}
|
|
||||||
|
|
||||||
.arrow-icon {
|
|
||||||
position absolute
|
|
||||||
top 0
|
|
||||||
width $arrow-icon-width
|
|
||||||
height 100%
|
|
||||||
|
|
||||||
&.left {
|
|
||||||
left 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
&.right {
|
.author-label {
|
||||||
right 0
|
margin-left 0.8rem
|
||||||
|
padding 0 0.4rem
|
||||||
|
color #fff
|
||||||
|
font-weight 500
|
||||||
|
font-size 0.8rem
|
||||||
|
background var(--selection-color)
|
||||||
|
border-radius 0.4rem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.title {
|
|
||||||
|
.article-header
|
||||||
|
.article-header-meta-info {
|
||||||
|
margin-top 1rem
|
||||||
|
+keep-tablet() {
|
||||||
|
transform scale(0.9)
|
||||||
|
transform-origin left top
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.article-content {
|
||||||
|
margin-top $component-spacing-value
|
||||||
|
padding-bottom 2rem
|
||||||
|
color var(--text-color-3)
|
||||||
|
word-wrap break-word
|
||||||
|
|
||||||
|
if (hexo-config('copyright_info.enable') == true) {
|
||||||
|
border-bottom 0.1rem dashed var(--border-color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.post-tags-box {
|
||||||
|
display none
|
||||||
|
justify-content center
|
||||||
|
margin-top 1.6rem
|
||||||
|
font-size 1.1rem
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
display flex
|
||||||
|
}
|
||||||
|
|
||||||
|
+keep-mobile() {
|
||||||
|
margin-top 1.2rem
|
||||||
|
font-size 1rem
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.tag-item {
|
||||||
|
margin 0 0.25rem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.post-copyright-info {
|
||||||
|
width 100%
|
||||||
|
margin-top $component-spacing-value
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
margin-top $component-spacing-value * 0.8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.article-nav {
|
||||||
|
height 2.8rem
|
||||||
|
margin-top $component-spacing-value
|
||||||
|
|
||||||
|
.article-prev
|
||||||
|
.article-next {
|
||||||
|
box-sizing border-box
|
||||||
|
max-width $post-nav-max-width
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
keep-container(true, 1.03, 1.03, 0.8rem, 0)
|
||||||
|
|
||||||
|
a {
|
||||||
|
position relative
|
||||||
|
display block
|
||||||
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
height 100%
|
height 100%
|
||||||
|
|
||||||
|
&.prev {
|
||||||
|
padding-left $arrow-icon-width
|
||||||
|
}
|
||||||
|
|
||||||
|
&.next {
|
||||||
|
padding-right $arrow-icon-width
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow-icon {
|
||||||
|
position absolute
|
||||||
|
top 0
|
||||||
|
width $arrow-icon-width
|
||||||
|
height 100%
|
||||||
|
|
||||||
|
&.left {
|
||||||
|
left 0
|
||||||
|
}
|
||||||
|
|
||||||
|
&.right {
|
||||||
|
right 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
width 100%
|
||||||
|
height 100%
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-prev {
|
||||||
|
float left
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-next {
|
||||||
|
float right
|
||||||
|
}
|
||||||
|
|
||||||
|
.post-nav-item {
|
||||||
|
display none
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
display inline-block
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.post-nav-title-item {
|
||||||
|
overflow hidden
|
||||||
|
white-space nowrap
|
||||||
|
text-overflow ellipsis
|
||||||
|
|
||||||
|
+keep-tablet() {
|
||||||
|
display none
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
.article-prev {
|
|
||||||
float left
|
|
||||||
}
|
|
||||||
|
|
||||||
.article-next {
|
|
||||||
float right
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-nav-item {
|
|
||||||
display none
|
|
||||||
|
|
||||||
+keep-tablet() {
|
|
||||||
display inline-block
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.post-nav-title-item {
|
.toc-content-container {
|
||||||
overflow hidden
|
position sticky
|
||||||
white-space nowrap
|
top $header-height + $component-spacing-value
|
||||||
text-overflow ellipsis
|
display none
|
||||||
|
box-sizing border-box
|
||||||
|
width $toc-container-width
|
||||||
|
max-height 'calc(100vh - %s)' % ($header-height + $component-spacing-value)
|
||||||
|
padding 2rem 0 2rem 1.4rem
|
||||||
|
transition-t("top, display, max-height", "0, 0, 0", "0.2, 0.1, 0.2", "ease, ease, ease")
|
||||||
|
|
||||||
+keep-tablet() {
|
.header-shrink & {
|
||||||
display none
|
top $header-shrink-height + $component-spacing-value
|
||||||
}
|
max-height 'calc(100vh - %s)' % ($header-shrink-height + $component-spacing-value)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,14 +7,14 @@ $category-name-font-size = 1.6rem
|
||||||
.category-name {
|
.category-name {
|
||||||
margin-bottom $component-spacing-value
|
margin-bottom $component-spacing-value
|
||||||
padding-bottom 20px
|
padding-bottom 20px
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
|
|
||||||
font-weight 600
|
font-weight 600
|
||||||
font-size $category-name-font-size
|
font-size $category-name-font-size
|
||||||
border-bottom 1px solid var(--border-color)
|
border-bottom 1px solid var(--border-color)
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
}
|
}
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
|
|
||||||
span.all-category-list-count {
|
span.all-category-list-count {
|
||||||
float right
|
float right
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
|
|
||||||
|
|
||||||
&::before {
|
&::before {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.home-content-container {
|
.home-content-container {
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
|
|
||||||
|
|
||||||
.home-article-list {
|
.home-article-list {
|
||||||
|
@ -13,7 +13,7 @@
|
||||||
position absolute
|
position absolute
|
||||||
top 10px
|
top 10px
|
||||||
right 12px
|
right 12px
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
font-size 1.2rem
|
font-size 1.2rem
|
||||||
transform rotate(45deg)
|
transform rotate(45deg)
|
||||||
|
|
||||||
|
@ -27,7 +27,7 @@
|
||||||
.home-article-title {
|
.home-article-title {
|
||||||
position relative
|
position relative
|
||||||
margin 0
|
margin 0
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
font-weight 600
|
font-weight 600
|
||||||
font-size 1.4rem
|
font-size 1.4rem
|
||||||
line-height 1.5
|
line-height 1.5
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
.home-article-content {
|
.home-article-content {
|
||||||
margin 20px 0
|
margin 20px 0
|
||||||
color var(--default-text-color)
|
color var(--text-color-3)
|
||||||
text-align justify
|
text-align justify
|
||||||
word-wrap break-word
|
word-wrap break-word
|
||||||
}
|
}
|
||||||
|
@ -56,10 +56,9 @@
|
||||||
display flex
|
display flex
|
||||||
align-items center
|
align-items center
|
||||||
justify-content space-between
|
justify-content space-between
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
font-size 0.92rem
|
font-size 0.92rem
|
||||||
|
|
||||||
|
|
||||||
.home-article-meta-info {
|
.home-article-meta-info {
|
||||||
letter-spacing 0.5px
|
letter-spacing 0.5px
|
||||||
|
|
||||||
|
@ -90,6 +89,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.read-more {
|
||||||
|
display flex
|
||||||
|
align-items center
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
flex 1
|
flex 1
|
||||||
height 1px
|
height 1px
|
||||||
|
@ -98,8 +103,9 @@
|
||||||
border none
|
border none
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color var(--third-text-color)
|
color var(--text-color-4)
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color var(--primary-color)
|
color var(--primary-color)
|
||||||
|
|
|
@ -1,14 +1,9 @@
|
||||||
$temp-width = hexo-config('style.left_side_width')
|
|
||||||
$page-aside-width = $temp-width ? convert($temp-width) : 260px
|
|
||||||
|
|
||||||
.page-container {
|
.page-container {
|
||||||
position relative
|
position relative
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
height auto
|
height auto
|
||||||
background var(--background-color)
|
background var(--background-color-1)
|
||||||
transition-t("padding-left", "0", "0.3", "ease-out")
|
|
||||||
|
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
padding-left 0 !important
|
padding-left 0 !important
|
||||||
|
@ -17,9 +12,10 @@ $page-aside-width = $temp-width ? convert($temp-width) : 260px
|
||||||
|
|
||||||
.page-main-content {
|
.page-main-content {
|
||||||
position relative
|
position relative
|
||||||
|
box-sizing border-box
|
||||||
padding-top $header-height
|
padding-top $header-height
|
||||||
|
|
||||||
&.home {
|
&.is-home {
|
||||||
.transparent-1 {
|
.transparent-1 {
|
||||||
background var(--header-transparent-background-1)
|
background var(--header-transparent-background-1)
|
||||||
}
|
}
|
||||||
|
@ -61,7 +57,7 @@ $page-aside-width = $temp-width ? convert($temp-width) : 260px
|
||||||
box-sizing border-box
|
box-sizing border-box
|
||||||
width 100%
|
width 100%
|
||||||
height $header-height
|
height $header-height
|
||||||
transition-t("transform, padding-left, height", "0, 0, 0", "0.3, 0.2, 0.2", "ease-out, linear, ease")
|
transition-t("transform, height", "0, 0", "0.3, 0.2", "ease-out, ease")
|
||||||
|
|
||||||
&.hide {
|
&.hide {
|
||||||
transform translateY(-105%)
|
transform translateY(-105%)
|
||||||
|
@ -113,6 +109,11 @@ $page-aside-width = $temp-width ? convert($temp-width) : 260px
|
||||||
width $main-content-width
|
width $main-content-width
|
||||||
max-width $content-max-width
|
max-width $content-max-width
|
||||||
height 100%
|
height 100%
|
||||||
|
transition-t("max-width, width", "0, 0", "0.1, 0.1", "ease, ease")
|
||||||
|
|
||||||
|
.has-toc & {
|
||||||
|
max-width $has-toc-content-max-width
|
||||||
|
}
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
width $main-content-width-tablet
|
width $main-content-width-tablet
|
||||||
|
@ -131,35 +132,12 @@ $page-aside-width = $temp-width ? convert($temp-width) : 260px
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.page-aside {
|
|
||||||
position fixed
|
|
||||||
top 0
|
|
||||||
bottom 0
|
|
||||||
left - $page-aside-width
|
|
||||||
z-index $z-index-6
|
|
||||||
box-sizing border-box
|
|
||||||
width $page-aside-width
|
|
||||||
height 100%
|
|
||||||
padding 20px
|
|
||||||
overflow-y auto
|
|
||||||
background var(--background-color)
|
|
||||||
|
|
||||||
hover-style(false, 0, 0)
|
|
||||||
|
|
||||||
transition-t("left, transform", "0, 0", "0.3, 0.2", "ease-out, linear")
|
|
||||||
|
|
||||||
+keep-tablet() {
|
|
||||||
left 0 !important
|
|
||||||
display none !important
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.post-tools {
|
.post-tools {
|
||||||
position fixed
|
position fixed
|
||||||
top $header-height + $component-spacing-value
|
top $header-height + $component-spacing-value
|
||||||
right $component-spacing-value
|
left 'calc((100vw - %s / 2) - 5rem)' % $content-max-width
|
||||||
transition-t("top", "0", "0.2", "ease")
|
opacity 0
|
||||||
|
transition-t("top, transform, opacity, left", "0, 0, 0.2, 0", "0.2, 0.2, 0.2, 0.2", "ease, ease, ease, ease")
|
||||||
|
|
||||||
.header-shrink & {
|
.header-shrink & {
|
||||||
top $header-shrink-height + $component-spacing-value
|
top $header-shrink-height + $component-spacing-value
|
||||||
|
@ -167,25 +145,17 @@ $page-aside-width = $temp-width ? convert($temp-width) : 260px
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
top $header-shrink-height * 0.9 + $component-spacing-value
|
top $header-shrink-height * 0.9 + $component-spacing-value
|
||||||
}
|
}
|
||||||
|
|
||||||
+keep-mobile() {
|
|
||||||
top $header-shrink-height * 0.8 + $component-spacing-value
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
top $header-height * 0.9 + $component-spacing-value
|
top $header-height * 0.9 + $component-spacing-value
|
||||||
right 10px
|
|
||||||
transform scale(0.82)
|
transform scale(0.82)
|
||||||
transform-origin right top
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
+keep-mobile() {
|
+keep-mobile() {
|
||||||
top $header-height * 0.8 + $component-spacing-value
|
display none
|
||||||
right 5px
|
|
||||||
transform scale(0.72)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,14 +7,14 @@ $tag-name-font-size = 1.6rem
|
||||||
.tag-name {
|
.tag-name {
|
||||||
margin-bottom $component-spacing-value
|
margin-bottom $component-spacing-value
|
||||||
padding-bottom 20px
|
padding-bottom 20px
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
|
|
||||||
font-weight 600
|
font-weight 600
|
||||||
font-size $tag-name-font-size
|
font-size $tag-name-font-size
|
||||||
border-bottom 1px solid var(--border-color)
|
border-bottom 1px solid var(--border-color)
|
||||||
|
|
||||||
i {
|
i {
|
||||||
color var(--second-text-color)
|
color var(--text-color-2)
|
||||||
}
|
}
|
||||||
|
|
||||||
+keep-tablet() {
|
+keep-tablet() {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
@import "common/basic.styl"
|
@import "common/basic.styl"
|
||||||
@import "common/markdown.styl"
|
@import "common/markdown.styl"
|
||||||
@import "common/code-block/highlight.styl"
|
@import "common/code-block/highlight.styl"
|
||||||
@import "common/code-block/code-block-tools.styl"
|
@import "common/code-block/code-block.styl"
|
||||||
@import "common/code-block/code-theme.styl"
|
@import "common/code-block/code-theme.styl"
|
||||||
@import "layout/page.styl"
|
@import "layout/page.styl"
|
||||||
@import "layout/_partial/local-search.styl"
|
@import "layout/_partial/local-search.styl"
|
||||||
|
|
|
@ -7,9 +7,11 @@ KEEP.initCodeBlockTools = () => {
|
||||||
wrapper.appendChild(this)
|
wrapper.appendChild(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
const { style: codeCopyStyle } = KEEP.theme_config?.code_copy
|
const { style: codeCopyStyle } = KEEP.theme_config?.code_copy || {}
|
||||||
const { style: codeBlockStyle } = KEEP.theme_config?.code_block_tools
|
const { style: codeBlockStyle } = KEEP.theme_config?.code_block || {}
|
||||||
const isMac = (codeBlockStyle || codeCopyStyle || 'default') === 'mac'
|
const { style: codeBlockToolsStyle } = KEEP.theme_config?.code_block?.tools || {}
|
||||||
|
|
||||||
|
const isMac = (codeCopyStyle || codeBlockStyle || codeBlockToolsStyle || 'default') === 'mac'
|
||||||
const foldedIconClassName = isMac ? 'fas fa-chevron-left' : 'fas fa-chevron-right'
|
const foldedIconClassName = isMac ? 'fas fa-chevron-left' : 'fas fa-chevron-right'
|
||||||
const {
|
const {
|
||||||
copy: copyLang,
|
copy: copyLang,
|
||||||
|
@ -17,7 +19,7 @@ KEEP.initCodeBlockTools = () => {
|
||||||
fold: foldLang,
|
fold: foldLang,
|
||||||
folded: foldedLang
|
folded: foldedLang
|
||||||
} = KEEP.language_code_block
|
} = KEEP.language_code_block
|
||||||
const foldDom = `<span class="tool fold tooltip" data-content="${foldLang}"><i class="fas fa-chevron-down"></i></span>`
|
const foldDom = `<span class="tool fold tooltip" data-content="${foldLang}" data-offset-y="-2px"><i class="fas fa-chevron-down"></i></span>`
|
||||||
|
|
||||||
document.querySelectorAll('figure.highlight').forEach((element) => {
|
document.querySelectorAll('figure.highlight').forEach((element) => {
|
||||||
let codeLang = element.classList.length ? element.classList[1].toUpperCase() : ''
|
let codeLang = element.classList.length ? element.classList[1].toUpperCase() : ''
|
||||||
|
@ -26,6 +28,9 @@ KEEP.initCodeBlockTools = () => {
|
||||||
}
|
}
|
||||||
const highlightContainer = document.createElement('div')
|
const highlightContainer = document.createElement('div')
|
||||||
highlightContainer.classList.add('highlight-container')
|
highlightContainer.classList.add('highlight-container')
|
||||||
|
if (isMac) {
|
||||||
|
highlightContainer.classList.add('mac')
|
||||||
|
}
|
||||||
element.wrap(highlightContainer)
|
element.wrap(highlightContainer)
|
||||||
|
|
||||||
const codeLangDom = `${codeLang ? '<span class="code-lang">' + codeLang + '</span>' : ''}`
|
const codeLangDom = `${codeLang ? '<span class="code-lang">' + codeLang + '</span>' : ''}`
|
||||||
|
@ -34,7 +39,7 @@ KEEP.initCodeBlockTools = () => {
|
||||||
'afterbegin',
|
'afterbegin',
|
||||||
`<div class="code-tools-box">
|
`<div class="code-tools-box">
|
||||||
${isMac ? foldDom + codeLangDom : '<span>' + foldDom + codeLangDom + '</span>'}
|
${isMac ? foldDom + codeLangDom : '<span>' + foldDom + codeLangDom + '</span>'}
|
||||||
<span class="tool copy tooltip" data-content="${copyLang}"><i class="fas fa-copy"></i></span>
|
<span class="tool copy tooltip" data-content="${copyLang}" data-offset-y="-2px"><i class="fas fa-copy"></i></span>
|
||||||
</div>`
|
</div>`
|
||||||
)
|
)
|
||||||
const codeToolsBox = element.parentNode.querySelector('.code-tools-box')
|
const codeToolsBox = element.parentNode.querySelector('.code-tools-box')
|
|
@ -1,45 +0,0 @@
|
||||||
/* global KEEP */
|
|
||||||
|
|
||||||
function initLeftSideToggle() {
|
|
||||||
KEEP.utils.leftSideToggle = {
|
|
||||||
toggleBar: document.querySelector('.page-aside-toggle'),
|
|
||||||
pageTopDom: document.querySelector('.page-main-content-top'),
|
|
||||||
containerDom: document.querySelector('.page-container'),
|
|
||||||
leftAsideDom: document.querySelector('.page-aside'),
|
|
||||||
toggleBarIcon: document.querySelector('.page-aside-toggle i'),
|
|
||||||
|
|
||||||
isOpenPageAside: false,
|
|
||||||
|
|
||||||
initToggleBarButton() {
|
|
||||||
this.toggleBar &&
|
|
||||||
this.toggleBar.addEventListener('click', () => {
|
|
||||||
this.isOpenPageAside = !this.isOpenPageAside
|
|
||||||
KEEP.styleStatus.isOpenPageAside = this.isOpenPageAside
|
|
||||||
KEEP.setStyleStatus()
|
|
||||||
this.changePageLayoutWhenOpenToggle(this.isOpenPageAside)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
changePageLayoutWhenOpenToggle(isOpen) {
|
|
||||||
this.toggleBarIcon &&
|
|
||||||
(this.toggleBarIcon.className = isOpen ? 'fas fa-outdent' : 'fas fa-indent')
|
|
||||||
const pageAsideWidth = KEEP.theme_config.style.left_side_width || '260px'
|
|
||||||
this.containerDom.style.paddingLeft = isOpen ? pageAsideWidth : '0'
|
|
||||||
this.pageTopDom.style.paddingLeft = isOpen ? pageAsideWidth : '0'
|
|
||||||
this.leftAsideDom.style.left = isOpen ? '0' : `-${pageAsideWidth}`
|
|
||||||
},
|
|
||||||
|
|
||||||
pageAsideHandleOfTOC(isOpen) {
|
|
||||||
this.toggleBar.style.display = 'flex'
|
|
||||||
this.isOpenPageAside = isOpen
|
|
||||||
this.changePageLayoutWhenOpenToggle(isOpen)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
KEEP.utils.leftSideToggle.initToggleBarButton()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (KEEP.theme_config.pjax.enable === true && KEEP.utils) {
|
|
||||||
initLeftSideToggle()
|
|
||||||
} else {
|
|
||||||
window.addEventListener('DOMContentLoaded', initLeftSideToggle)
|
|
||||||
}
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* global KEEP */
|
/* global KEEP */
|
||||||
|
|
||||||
window.addEventListener('DOMContentLoaded', () => {
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
const { version, local_search, code_block_tools, code_copy, lazyload } = KEEP.theme_config
|
const { version, local_search, code_block, code_copy, lazyload } = KEEP.theme_config
|
||||||
|
|
||||||
KEEP.themeInfo = {
|
KEEP.themeInfo = {
|
||||||
theme: `Keep v${version}`,
|
theme: `Keep v${version}`,
|
||||||
|
@ -15,7 +15,7 @@ window.addEventListener('DOMContentLoaded', () => {
|
||||||
isExpandPageWidth: false,
|
isExpandPageWidth: false,
|
||||||
isDark: false,
|
isDark: false,
|
||||||
fontSizeLevel: 0,
|
fontSizeLevel: 0,
|
||||||
isOpenPageAside: true
|
isShowToc: true
|
||||||
}
|
}
|
||||||
|
|
||||||
// print theme base info
|
// print theme base info
|
||||||
|
@ -56,7 +56,11 @@ window.addEventListener('DOMContentLoaded', () => {
|
||||||
KEEP.initLocalSearch()
|
KEEP.initLocalSearch()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (code_block_tools?.enable === true || code_copy?.enable === true) {
|
if (
|
||||||
|
code_block?.tools?.enable === true ||
|
||||||
|
code_block?.enable === true ||
|
||||||
|
code_copy?.enable === true
|
||||||
|
) {
|
||||||
KEEP.initCodeBlockTools()
|
KEEP.initCodeBlockTools()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,127 @@
|
||||||
|
/* global KEEP */
|
||||||
|
|
||||||
|
function initToggleShowToc() {
|
||||||
|
KEEP.utils.postHelper = {
|
||||||
|
postPageContainerDom: document.querySelector('.post-page-container'),
|
||||||
|
toggleShowTocBtnDom: document.querySelector('.toggle-show-toc'),
|
||||||
|
toggleShowTocIcon: document.querySelector('.toggle-show-toc i'),
|
||||||
|
mainContentDom: document.querySelector('.main-content'),
|
||||||
|
postToolsDom: document.querySelector('.post-tools'),
|
||||||
|
goToCommentsDom: document.querySelector('.post-tools .go-to-comments'),
|
||||||
|
|
||||||
|
isShowToc: false,
|
||||||
|
|
||||||
|
initToggleToc() {
|
||||||
|
this.toggleShowTocBtnDom &&
|
||||||
|
this.toggleShowTocBtnDom.addEventListener('click', () => {
|
||||||
|
this.isShowToc = !this.isShowToc
|
||||||
|
KEEP.styleStatus.isShowToc = this.isShowToc
|
||||||
|
KEEP.setStyleStatus()
|
||||||
|
this.handleToggleToc(this.isShowToc)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
handleToggleToc(isOpen) {
|
||||||
|
if (isOpen) {
|
||||||
|
this.postPageContainerDom.classList.add('show-toc')
|
||||||
|
document.body.classList.add('has-toc')
|
||||||
|
} else {
|
||||||
|
this.postPageContainerDom.classList.remove('show-toc')
|
||||||
|
document.body.classList.remove('has-toc')
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
this.setPostToolsLeft()
|
||||||
|
}, 120)
|
||||||
|
},
|
||||||
|
|
||||||
|
hasToc(isOpen) {
|
||||||
|
this.toggleShowTocBtnDom.style.display = 'flex'
|
||||||
|
this.isShowToc = isOpen
|
||||||
|
this.handleToggleToc(isOpen)
|
||||||
|
},
|
||||||
|
|
||||||
|
setPostToolsLeft(mcw) {
|
||||||
|
const mainContainerWidth = mcw
|
||||||
|
? mcw
|
||||||
|
: this.mainContentDom.getBoundingClientRect().width.toFixed(0)
|
||||||
|
let offsetX = 5
|
||||||
|
|
||||||
|
if (window.innerWidth <= 800) {
|
||||||
|
offsetX = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
this.postToolsDom.style.opacity = `1`
|
||||||
|
this.postToolsDom.style.left = `calc((100vw - ${mainContainerWidth}px) / 2 - ${offsetX}rem)`
|
||||||
|
},
|
||||||
|
|
||||||
|
initSetPostToolsLeft() {
|
||||||
|
setTimeout(() => {
|
||||||
|
this.setPostToolsLeft()
|
||||||
|
}, 150)
|
||||||
|
|
||||||
|
window.addEventListener('resize', () => {
|
||||||
|
this.setPostToolsLeft()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// go comment anchor
|
||||||
|
goToComments() {
|
||||||
|
const commentsAnchor = document.querySelector('#comments-anchor')
|
||||||
|
if (this.goToCommentsDom && commentsAnchor) {
|
||||||
|
this.goToCommentsDom.addEventListener('click', (event) => {
|
||||||
|
event.preventDefault()
|
||||||
|
let winScrollY = window.scrollY
|
||||||
|
winScrollY = winScrollY === 0 ? -20 : winScrollY
|
||||||
|
const offset = commentsAnchor.getBoundingClientRect().top + winScrollY
|
||||||
|
window.anime({
|
||||||
|
targets: document.scrollingElement,
|
||||||
|
duration: 300,
|
||||||
|
easing: 'linear',
|
||||||
|
scrollTop: offset,
|
||||||
|
complete: () => {
|
||||||
|
setTimeout(() => {
|
||||||
|
KEEP.utils.pageTop_dom.classList.add('hide')
|
||||||
|
}, 150)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// watch comments count
|
||||||
|
watchPostCommentsCount() {
|
||||||
|
const commentsCountDom = this.postToolsDom.querySelector('.post-comments-count')
|
||||||
|
if (!commentsCountDom) return
|
||||||
|
const config = { attributes: true, childList: true }
|
||||||
|
|
||||||
|
const callback = function (mutationsList) {
|
||||||
|
mutationsList.forEach((item) => {
|
||||||
|
if (item.type === 'childList') {
|
||||||
|
const count = Number(item.target.innerHTML)
|
||||||
|
if (count > 0) {
|
||||||
|
commentsCountDom.style.display = 'flex'
|
||||||
|
if (count > 99) {
|
||||||
|
commentsCountDom.innerHTML = '99+'
|
||||||
|
observer.disconnect()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const observer = new MutationObserver(callback)
|
||||||
|
observer.observe(commentsCountDom, config)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
KEEP.utils.postHelper.initToggleToc()
|
||||||
|
KEEP.utils.postHelper.initSetPostToolsLeft()
|
||||||
|
KEEP.utils.postHelper.goToComments()
|
||||||
|
KEEP.utils.postHelper.watchPostCommentsCount()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KEEP.theme_config.pjax.enable === true && KEEP.utils) {
|
||||||
|
initToggleShowToc()
|
||||||
|
} else {
|
||||||
|
window.addEventListener('DOMContentLoaded', initToggleShowToc)
|
||||||
|
}
|
|
@ -1,9 +1,10 @@
|
||||||
/* global KEEP */
|
/* global KEEP */
|
||||||
|
|
||||||
function initTOC() {
|
function initTOC() {
|
||||||
KEEP.utils.navItems = document.querySelectorAll('.post-toc-wrap .post-toc li')
|
const postPageContainerDom = document.querySelector('.post-page-container')
|
||||||
|
const tocContentContainer = document.querySelector('.toc-content-container')
|
||||||
|
|
||||||
if (KEEP.utils.navItems.length > 0) {
|
if (KEEP.utils.hasToc) {
|
||||||
KEEP.utils = {
|
KEEP.utils = {
|
||||||
...KEEP.utils,
|
...KEEP.utils,
|
||||||
|
|
||||||
|
@ -28,16 +29,19 @@ function initTOC() {
|
||||||
)
|
)
|
||||||
element.addEventListener('click', (event) => {
|
element.addEventListener('click', (event) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
const offset = target.getBoundingClientRect().top + window.scrollY
|
let winScrollY = window.scrollY
|
||||||
|
winScrollY = winScrollY === 0 ? -20 : winScrollY
|
||||||
|
const offset = target.getBoundingClientRect().top + winScrollY
|
||||||
window.anime({
|
window.anime({
|
||||||
targets: document.scrollingElement,
|
targets: document.scrollingElement,
|
||||||
duration: 500,
|
duration: 500,
|
||||||
easing: 'linear',
|
easing: 'linear',
|
||||||
scrollTop: offset - 10,
|
scrollTop: offset - 10,
|
||||||
complete: function () {
|
complete: () => {
|
||||||
|
history.pushState(null, document.title, element.href)
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
KEEP.utils.pageTop_dom.classList.add('hide')
|
KEEP.utils.pageTop_dom.classList.add('hide')
|
||||||
}, 100)
|
}, 150)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -59,7 +63,7 @@ function initTOC() {
|
||||||
if (parent.matches('li')) parent.classList.add('active')
|
if (parent.matches('li')) parent.classList.add('active')
|
||||||
parent = parent.parentNode
|
parent = parent.parentNode
|
||||||
}
|
}
|
||||||
// Scrolling to center active TOC element if TOC content is taller then viewport.
|
// Scrolling to center active TOC element if TOC content is taller than viewport.
|
||||||
const tocElement = document.querySelector('.post-toc-wrap')
|
const tocElement = document.querySelector('.post-toc-wrap')
|
||||||
window.anime({
|
window.anime({
|
||||||
targets: tocElement,
|
targets: tocElement,
|
||||||
|
@ -73,34 +77,33 @@ function initTOC() {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
showPageAsideWhenHasTOC() {
|
handleShowWhenHasToc() {
|
||||||
const openHandle = () => {
|
const openHandle = () => {
|
||||||
const styleStatus = KEEP.getStyleStatus()
|
const styleStatus = KEEP.getStyleStatus()
|
||||||
const key = 'isOpenPageAside'
|
const key = 'isShowToc'
|
||||||
if (styleStatus && styleStatus.hasOwnProperty(key)) {
|
if (styleStatus && styleStatus.hasOwnProperty(key)) {
|
||||||
KEEP.utils.leftSideToggle.pageAsideHandleOfTOC(styleStatus[key])
|
KEEP.utils.postHelper.hasToc(styleStatus[key])
|
||||||
} else {
|
} else {
|
||||||
KEEP.utils.leftSideToggle.pageAsideHandleOfTOC(true)
|
KEEP.utils.postHelper.hasToc(true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const initOpenKey = 'init_open'
|
const initOpenKey = 'init_open'
|
||||||
|
|
||||||
if (KEEP.theme_config.toc.hasOwnProperty(initOpenKey)) {
|
if (KEEP.theme_config.toc.hasOwnProperty(initOpenKey)) {
|
||||||
KEEP.theme_config.toc[initOpenKey]
|
KEEP.theme_config.toc[initOpenKey] ? openHandle() : KEEP.utils.postHelper.hasToc(false)
|
||||||
? openHandle()
|
|
||||||
: KEEP.utils.leftSideToggle.pageAsideHandleOfTOC(false)
|
|
||||||
} else {
|
} else {
|
||||||
openHandle()
|
openHandle()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
KEEP.utils.showPageAsideWhenHasTOC()
|
KEEP.utils.handleShowWhenHasToc()
|
||||||
KEEP.utils.registerSidebarTOC()
|
KEEP.utils.registerSidebarTOC()
|
||||||
} else {
|
} else {
|
||||||
const pageAsideDom = document.querySelector('.page-aside')
|
if (tocContentContainer && postPageContainerDom) {
|
||||||
pageAsideDom && KEEP.utils.pageContainer_dom.removeChild(pageAsideDom)
|
postPageContainerDom.removeChild(tocContentContainer)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ KEEP.initUtils = () => {
|
||||||
isHasScrollProgressBar: false,
|
isHasScrollProgressBar: false,
|
||||||
isHasScrollPercent: false,
|
isHasScrollPercent: false,
|
||||||
isHeaderTransparent: false,
|
isHeaderTransparent: false,
|
||||||
|
hasToc: false,
|
||||||
|
|
||||||
initData() {
|
initData() {
|
||||||
const { scroll, first_screen } = KEEP.theme_config.style
|
const { scroll, first_screen } = KEEP.theme_config.style
|
||||||
|
@ -76,9 +77,7 @@ KEEP.initUtils = () => {
|
||||||
registerWindowScroll() {
|
registerWindowScroll() {
|
||||||
window.addEventListener('scroll', () => {
|
window.addEventListener('scroll', () => {
|
||||||
// style handle when scroll
|
// style handle when scroll
|
||||||
if (this.isHasScrollPercent || this.isHasScrollProgressBar) {
|
this.styleHandleWhenScroll()
|
||||||
this.styleHandleWhenScroll()
|
|
||||||
}
|
|
||||||
|
|
||||||
// TOC scroll handle
|
// TOC scroll handle
|
||||||
if (KEEP.theme_config.toc.enable && KEEP.utils.hasOwnProperty('findActiveIndexByTOC')) {
|
if (KEEP.theme_config.toc.enable && KEEP.utils.hasOwnProperty('findActiveIndexByTOC')) {
|
||||||
|
@ -131,77 +130,22 @@ KEEP.initUtils = () => {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
// toggle content area width
|
|
||||||
contentAreaWidthAdjust() {
|
|
||||||
const toolExpandDom = document.querySelector('.tool-expand-width')
|
|
||||||
const headerContentDom = document.querySelector('.header-content')
|
|
||||||
const mainContentDom = document.querySelector('.main-content')
|
|
||||||
const iconDom = toolExpandDom.querySelector('i')
|
|
||||||
|
|
||||||
const defaultMaxWidth = KEEP.theme_config.style.content_max_width || '1000px'
|
|
||||||
const expandMaxWidth = '90%'
|
|
||||||
let headerMaxWidth = defaultMaxWidth
|
|
||||||
|
|
||||||
let isExpand = false
|
|
||||||
|
|
||||||
if (
|
|
||||||
KEEP.theme_config.style.first_screen.enable === true &&
|
|
||||||
window.location.pathname === '/'
|
|
||||||
) {
|
|
||||||
headerMaxWidth = parseInt(defaultMaxWidth) * 1.2 + 'px'
|
|
||||||
}
|
|
||||||
|
|
||||||
const setPageWidth = (isExpand) => {
|
|
||||||
KEEP.styleStatus.isExpandPageWidth = isExpand
|
|
||||||
KEEP.setStyleStatus()
|
|
||||||
if (isExpand) {
|
|
||||||
iconDom.classList.remove('fa-up-right-and-down-left-from-center')
|
|
||||||
iconDom.classList.add('fa-down-left-and-up-right-to-center')
|
|
||||||
headerContentDom.style.maxWidth = expandMaxWidth
|
|
||||||
mainContentDom.style.maxWidth = expandMaxWidth
|
|
||||||
} else {
|
|
||||||
iconDom.classList.remove('fa-down-left-and-up-right-to-center')
|
|
||||||
iconDom.classList.add('fa-up-right-and-down-left-from-center')
|
|
||||||
headerContentDom.style.maxWidth = headerMaxWidth
|
|
||||||
mainContentDom.style.maxWidth = defaultMaxWidth
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const initPageWidth = () => {
|
|
||||||
const styleStatus = KEEP.getStyleStatus()
|
|
||||||
if (styleStatus) {
|
|
||||||
isExpand = styleStatus.isExpandPageWidth
|
|
||||||
setPageWidth(isExpand)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
initPageWidth()
|
|
||||||
|
|
||||||
toolExpandDom.addEventListener('click', () => {
|
|
||||||
isExpand = !isExpand
|
|
||||||
setPageWidth(isExpand)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// go comment anchor
|
|
||||||
goComment() {
|
|
||||||
this.goComment_dom = document.querySelector('.go-comment')
|
|
||||||
if (this.goComment_dom) {
|
|
||||||
this.goComment_dom.addEventListener('click', () => {
|
|
||||||
document.querySelector('#comment-anchor').scrollIntoView()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// get dom element height
|
// get dom element height
|
||||||
getElementHeight(selectors) {
|
getElementHeight(selectors) {
|
||||||
const dom = document.querySelector(selectors)
|
const dom = document.querySelector(selectors)
|
||||||
return dom ? dom.getBoundingClientRect().height : 0
|
return dom ? dom.getBoundingClientRect().height : 0
|
||||||
},
|
},
|
||||||
|
|
||||||
// init first screen height
|
// init has TOC
|
||||||
initFirstScreenHeight() {
|
initHasToc() {
|
||||||
this.firstScreen_dom && (this.firstScreen_dom.style.height = this.innerHeight + 'px')
|
const tocNavDoms = document.querySelectorAll('.post-toc-wrap .post-toc li')
|
||||||
|
if (tocNavDoms.length > 0) {
|
||||||
|
this.hasToc = true
|
||||||
|
document.body.classList.add('has-toc')
|
||||||
|
} else {
|
||||||
|
this.hasToc = false
|
||||||
|
document.body.classList.remove('has-toc')
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// init page height handle
|
// init page height handle
|
||||||
|
@ -223,20 +167,21 @@ KEEP.initUtils = () => {
|
||||||
|
|
||||||
// zoom in image
|
// zoom in image
|
||||||
zoomInImage() {
|
zoomInImage() {
|
||||||
const SIDE_GAP = 30
|
let SIDE_GAP = 40
|
||||||
let isZoomIn = false
|
let isZoomIn = false
|
||||||
|
let curWinScrollY = 0
|
||||||
let selectedImgDom = null
|
let selectedImgDom = null
|
||||||
const imgDomList = document.querySelectorAll('.markdown-body img')
|
const imgDomList = document.querySelectorAll('.keep-markdown-body img')
|
||||||
const zoomInImgMask = document.querySelector('.zoom-in-image-mask')
|
const zoomInImgMask = document.querySelector('.zoom-in-image-mask')
|
||||||
const zoomInImg = zoomInImgMask.querySelector('.zoom-in-image')
|
const zoomInImg = zoomInImgMask.querySelector('.zoom-in-image')
|
||||||
|
|
||||||
const zoomOut = () => {
|
const zoomOut = () => {
|
||||||
if (isZoomIn) {
|
if (isZoomIn) {
|
||||||
isZoomIn = false
|
isZoomIn = false
|
||||||
|
curWinScrollY = 0
|
||||||
zoomInImg && (zoomInImg.style.transform = `scale(1)`)
|
zoomInImg && (zoomInImg.style.transform = `scale(1)`)
|
||||||
zoomInImgMask && zoomInImgMask.classList.remove('show')
|
zoomInImgMask && zoomInImgMask.classList.remove('show')
|
||||||
const timer = setTimeout(() => {
|
setTimeout(() => {
|
||||||
clearTimeout(timer)
|
|
||||||
selectedImgDom && selectedImgDom.classList.remove('hide')
|
selectedImgDom && selectedImgDom.classList.remove('hide')
|
||||||
}, 300)
|
}, 300)
|
||||||
}
|
}
|
||||||
|
@ -249,15 +194,30 @@ KEEP.initUtils = () => {
|
||||||
})
|
})
|
||||||
|
|
||||||
document.addEventListener('scroll', () => {
|
document.addEventListener('scroll', () => {
|
||||||
zoomOut()
|
if (isZoomIn && Math.abs(curWinScrollY - window.scrollY) >= 50) {
|
||||||
|
zoomOut()
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setSideGap = () => {
|
||||||
|
const w = document.body.offsetWidth
|
||||||
|
if (w <= 500) {
|
||||||
|
SIDE_GAP = 10
|
||||||
|
} else if (w <= 800) {
|
||||||
|
SIDE_GAP = 20
|
||||||
|
} else {
|
||||||
|
SIDE_GAP = 40
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (imgDomList.length) {
|
if (imgDomList.length) {
|
||||||
zoomOutHandle()
|
zoomOutHandle()
|
||||||
imgDomList.forEach((img) => {
|
imgDomList.forEach((img) => {
|
||||||
img.addEventListener('click', () => {
|
img.addEventListener('click', () => {
|
||||||
|
curWinScrollY = window.scrollY
|
||||||
isZoomIn = !isZoomIn
|
isZoomIn = !isZoomIn
|
||||||
|
setSideGap()
|
||||||
zoomInImg.setAttribute('src', img.getAttribute('src'))
|
zoomInImg.setAttribute('src', img.getAttribute('src'))
|
||||||
selectedImgDom = img
|
selectedImgDom = img
|
||||||
if (isZoomIn) {
|
if (isZoomIn) {
|
||||||
|
@ -377,17 +337,30 @@ KEEP.initUtils = () => {
|
||||||
const init = () => {
|
const init = () => {
|
||||||
// tooltip
|
// tooltip
|
||||||
document.querySelectorAll('.tooltip').forEach((element) => {
|
document.querySelectorAll('.tooltip').forEach((element) => {
|
||||||
const { content } = element.dataset
|
const { content, offsetX, offsetY } = element.dataset
|
||||||
|
|
||||||
|
let style = ''
|
||||||
|
let sTop = ''
|
||||||
|
let sLeft = ''
|
||||||
|
if (offsetX) {
|
||||||
|
sTop = `left: ${offsetX};`
|
||||||
|
}
|
||||||
|
if (offsetY) {
|
||||||
|
sLeft = `top: ${offsetY};`
|
||||||
|
}
|
||||||
|
if (offsetX || offsetY) {
|
||||||
|
style = ` style="${sLeft}${sTop}"`
|
||||||
|
}
|
||||||
|
|
||||||
if (content) {
|
if (content) {
|
||||||
element.insertAdjacentHTML(
|
element.insertAdjacentHTML(
|
||||||
'afterbegin',
|
'afterbegin',
|
||||||
`<span class="tooltip-content">${content}</span>`
|
`<span class="tooltip-content"${style}>${content}</span>`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
// tooltip-img
|
// tooltip-img
|
||||||
|
|
||||||
const imgsSet = {}
|
const imgsSet = {}
|
||||||
|
|
||||||
const toggleShowImg = (dom, nameIdx) => {
|
const toggleShowImg = (dom, nameIdx) => {
|
||||||
|
@ -458,17 +431,11 @@ KEEP.initUtils = () => {
|
||||||
// global font adjust
|
// global font adjust
|
||||||
KEEP.utils.globalFontAdjust()
|
KEEP.utils.globalFontAdjust()
|
||||||
|
|
||||||
// adjust content area width
|
|
||||||
KEEP.utils.contentAreaWidthAdjust()
|
|
||||||
|
|
||||||
// go comment
|
|
||||||
KEEP.utils.goComment()
|
|
||||||
|
|
||||||
// init page height handle
|
// init page height handle
|
||||||
KEEP.utils.initPageHeightHandle()
|
KEEP.utils.initPageHeightHandle()
|
||||||
|
|
||||||
// init first screen height
|
// check whether TOC exists
|
||||||
KEEP.utils.initFirstScreenHeight()
|
KEEP.utils.initHasToc()
|
||||||
|
|
||||||
// big image viewer handle
|
// big image viewer handle
|
||||||
KEEP.utils.zoomInImage()
|
KEEP.utils.zoomInImage()
|
||||||
|
|
Loading…
Reference in New Issue