From ba1db7db3e7bf97de56909b1f13592172d550552 Mon Sep 17 00:00:00 2001 From: jeffreytse Date: Sat, 3 Oct 2020 11:31:43 +0800 Subject: [PATCH] feat: add night mode (#4) --- _includes/extensions/theme-toggle.html | 90 ++++++++++++ _layouts/default.html | 2 + _sass/misc/theme-toggle.scss | 79 +++++++++++ _sass/yat.scss | 3 +- _sass/yat/_dark.scss | 184 +++++++++++++++++++++++++ 5 files changed, 357 insertions(+), 1 deletion(-) create mode 100644 _includes/extensions/theme-toggle.html create mode 100644 _sass/misc/theme-toggle.scss create mode 100644 _sass/yat/_dark.scss diff --git a/_includes/extensions/theme-toggle.html b/_includes/extensions/theme-toggle.html new file mode 100644 index 0000000..7976e21 --- /dev/null +++ b/_includes/extensions/theme-toggle.html @@ -0,0 +1,90 @@ +
+ + +
+ + diff --git a/_layouts/default.html b/_layouts/default.html index 1823491..b9ad657 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -11,6 +11,8 @@ {%- include extensions/hashlocate.html -%} + {%- include extensions/theme-toggle.html -%} +
{{ content }} diff --git a/_sass/misc/theme-toggle.scss b/_sass/misc/theme-toggle.scss new file mode 100644 index 0000000..492eb0c --- /dev/null +++ b/_sass/misc/theme-toggle.scss @@ -0,0 +1,79 @@ +.theme-toggle { + position: relative; + width: 102px; + margin-top: 10px; + margin-right: 60px; + margin-left: auto; + transition: 0.1s all ease-in-out; + + label, .toggle { + border-radius: 100px; + } + + label { + display: block; + background-color: rgba(120,120,120,.15); + cursor: pointer; + } + + .toggle { + position: absolute; + width: 50%; + height: 100%; + background-color: #fff; + box-shadow: 0 2px 15px rgba(0,0,0,.15); + transition: transform .2s cubic-bezier(0.25, 0.46, 0.45, 0.94); + } + + .names { + font-size: 1em; + font-weight: bolder; + width: 76%; + margin-left: 12%; + position: relative; + display: flex; + justify-content: space-between; + user-select: none; + } + + .dark { + opacity: .5; + } + + p { + color: #acacac; + margin-bottom: 0; + line-height: 24px; + } + + [type="checkbox"] { + display: none; + } + + /* Toggle */ + [type="checkbox"]:checked ~ label .toggle { + transform: translateX(100%); + background-color: #34323D; + } + + [type="checkbox"]:checked ~ label .dark{ + opacity: 1; + } + + [type="checkbox"]:checked ~ label .light{ + opacity: .5; + } + + @include media-query(1024px) { + margin-right: 35px; + } + + @include media-query($on-palm) { + width: 94px; + margin-right: 20px; + + .names { + font-size: .85em; + } + } +} diff --git a/_sass/yat.scss b/_sass/yat.scss index 25a193a..a18f949 100644 --- a/_sass/yat.scss +++ b/_sass/yat.scss @@ -61,7 +61,8 @@ $on-laptop: 800px !default; @import "yat/base", "yat/layout", - // "yat/syntax-highlighting", + "yat/dark", + "misc/theme-toggle", "misc/article-menu", "misc/common-list", "misc/google-translate" diff --git a/_sass/yat/_dark.scss b/_sass/yat/_dark.scss new file mode 100644 index 0000000..63f4880 --- /dev/null +++ b/_sass/yat/_dark.scss @@ -0,0 +1,184 @@ +$dark-background-color: #0e0e0e !default; + +html[data-theme="dark"] { + + &[data-scroll-status='top'] { + .site-footer-inner { + border-top: solid 1px #2f2f2f !important; + transition: 0s; + } + } + + body { + color: #bbb; + background-color: $dark-background-color; + } + + *:not(pre) > code { + background-color: #545454; + } + + table { + color: #9d9d9d; + + th { + background-color: #000; + } + + tr:nth-child(even) { + background-color: #111; + } + } + + .site-header { + background-color: #090909; + + .site-brand { + .site-brand-inner { + &, &:visited { + color: #f8f8f8; + } + } + } + + .site-nav .page-link { + color: #f8f8f8; + } + + .ct-language-dropdown { + color: #f8f8f8; + background-color: $dark-background-color; + } + + .ct-language-selected, .ct-language-dropdown li:hover { + background-color: #222 !important; + } + } + + .site-footer { + color: #fff; + background-color: #000; + } + + .left-vsplit:before { + background-color: #9a9a9a; + } + + .page-banner { + .page-banner-img { + & > *:first-child { + opacity: 0.8; + } + } + } + + .pagination { + .post-link { + color: #bbb; + } + + .post-title { + a:visited:after { + background-color: $dark-background-color; + } + + a:after { + color: $dark-background-color; + } + } + + .post-list { + & > li:not(:last-child) { + border-bottom: 1px solid #545454; + } + } + + .post-tags .post-tag:hover { + color: #d7d7d7; + } + } + + .page-segments { + li { + a { + color: #ddd; + } + + a:visited:after { + background-color: $dark-background-color; + } + + a:after { + color: $dark-background-color; + } + } + } + + .post .post-content { + img:not([raw]) { + background-color: #ffffff33; + } + } + + .post-related { + & > *:first-child { + color: #d7d7d7; + } + + a:visited:after { + background-color: $dark-background-color; + } + + a:after { + color: $dark-background-color; + } + + a:hover { + color: #aaa; + } + } + + .common-list { + li { + border-bottom: solid 1px #40404088; + + a { + color: #aaa; + } + + a:hover { + background-color: #272727; + } + + span { + background-color: #333; + } + } + } + + .post-menu { + .post-menu-title { + color: #ddd; + } + + .post-menu-content { + ul { + border-left: 1px solid #787878; + + .active { + background-color: #2d2d2d; + border-left: 2px solid #aaa; + } + + a { + color: #bbb; + } + + a:hover { + color: #fff !important; + } + } + } + } +} +