Fixed some bugs with various settings combinations
This commit is contained in:
parent
904484e2b4
commit
ec1acb115a
8 changed files with 177 additions and 180 deletions
|
@ -5,8 +5,9 @@ var gulp = require('gulp'),
|
|||
|
||||
gulp.task('less', function () {
|
||||
return gulp.src([
|
||||
'./static/stylesheet/dark-theme-has-class.less',
|
||||
'./static/stylesheet/dark-theme-not-overridden.less',
|
||||
'./static/stylesheet/style.less',
|
||||
'./static/stylesheet/dark-theme.less',
|
||||
])
|
||||
.pipe(less())
|
||||
.pipe(minify())
|
||||
|
|
14
static/stylesheet/dark-theme-has-class.less
Normal file
14
static/stylesheet/dark-theme-has-class.less
Normal file
|
@ -0,0 +1,14 @@
|
|||
//
|
||||
// Dark Theme CSS that gets activated when the <html> element has the
|
||||
// .dark-theme class.
|
||||
//
|
||||
// To use this, add the .dark-theme class to the <html> element, and add the
|
||||
// following <link>:
|
||||
//
|
||||
// <link rel="stylesheet" type="text/css"
|
||||
// href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-class.min.css">
|
||||
//
|
||||
|
||||
html.dark-theme {
|
||||
@import (multiple) "dark-theme-styles.less";
|
||||
}
|
15
static/stylesheet/dark-theme-not-overridden.less
Normal file
15
static/stylesheet/dark-theme-not-overridden.less
Normal file
|
@ -0,0 +1,15 @@
|
|||
//
|
||||
// Dark Theme CSS for use inside of a media query. This will apply the dark
|
||||
// style except when overriden by a .light-theme class on the <html> tag.
|
||||
//
|
||||
// To use this, add a <link> like the following (change the media query how you
|
||||
// want):
|
||||
//
|
||||
// <link rel="stylesheet" type="text/css"
|
||||
// media="(prefers-color-scheme: dark)"
|
||||
// href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-class.min.css">
|
||||
//
|
||||
|
||||
html:not(.light-theme) {
|
||||
@import (multiple) "dark-theme-styles.less";
|
||||
}
|
120
static/stylesheet/dark-theme-styles.less
Normal file
120
static/stylesheet/dark-theme-styles.less
Normal file
|
@ -0,0 +1,120 @@
|
|||
//
|
||||
// Dark Theme CSS styles.
|
||||
//
|
||||
// Don't directly include this file, instead, use the `dark-theme-class` or
|
||||
// `dark-theme-override` files.
|
||||
//
|
||||
|
||||
@import "variables.less";
|
||||
|
||||
body {
|
||||
background-color: @body-bg-dark-theme;
|
||||
color: @text-color-dark-theme;
|
||||
}
|
||||
|
||||
hr {
|
||||
color: @solid-dark-grey;
|
||||
background-color: @solid-dark-grey;
|
||||
}
|
||||
|
||||
aside {
|
||||
background-color: @sidebar-bg-dark-theme;
|
||||
color: @sidebar-text-color;
|
||||
|
||||
}
|
||||
|
||||
main {
|
||||
nav {
|
||||
border-bottom-color: @nav-border-color-dark-theme;
|
||||
}
|
||||
|
||||
nav, .translations {
|
||||
a {
|
||||
border-color: @nav-border-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
article {
|
||||
kbd {
|
||||
background-color: #080808;
|
||||
color: @light-grey;
|
||||
}
|
||||
|
||||
*:not(pre) > code {
|
||||
background-color: #080808;
|
||||
border-color: #000;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top-color: @footer-border-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.related-posts {
|
||||
border-color: @rel-post-border-color-dark-theme;
|
||||
}
|
||||
|
||||
// Admonition
|
||||
div.admonition.attention {
|
||||
p, div {
|
||||
color: @admonition-attention-color-dark-theme;
|
||||
background-color: @admonition-attention-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.caution {
|
||||
p, div {
|
||||
color: @admonition-caution-color-dark-theme;
|
||||
background-color: @admonition-caution-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.danger {
|
||||
p, div {
|
||||
color: @admonition-danger-color-dark-theme;
|
||||
background-color: @admonition-danger-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.error {
|
||||
p, div {
|
||||
color: @admonition-error-color-dark-theme;
|
||||
background-color: @admonition-error-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.hint {
|
||||
p, div {
|
||||
color: @admonition-hint-color-dark-theme;
|
||||
background-color: @admonition-hint-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.important {
|
||||
p, div {
|
||||
color: @admonition-important-color-dark-theme;
|
||||
background-color: @admonition-important-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.note {
|
||||
p, div {
|
||||
color: @admonition-note-color-dark-theme;
|
||||
background-color: @admonition-note-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.tip {
|
||||
p, div {
|
||||
color: @admonition-tip-color-dark-theme;
|
||||
background-color: @admonition-tip-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.warning {
|
||||
p, div {
|
||||
color: @admonition-warning-color-dark-theme;
|
||||
background-color: @admonition-warning-bg-color-dark-theme;
|
||||
}
|
||||
}
|
|
@ -1,144 +0,0 @@
|
|||
//
|
||||
// Dark Theme CSS.
|
||||
//
|
||||
// If you want to always use the dark theme, then you can use a <link> like the
|
||||
// following:
|
||||
//
|
||||
// <link rel="stylesheet" type="text/css"
|
||||
// href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-detect-preferences.min.css">
|
||||
//
|
||||
// If you want to enable only when the prefers-color-scheme is set to dark (and
|
||||
// potentially no-preference), make sure that you add the appropriate media
|
||||
// query to the <link>. For example:
|
||||
//
|
||||
// <link media="(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)"
|
||||
// rel="stylesheet"
|
||||
// type="text/css"
|
||||
// href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-detect-preferences.min.css">
|
||||
//
|
||||
// or
|
||||
//
|
||||
// <link media="(prefers-color-scheme: dark)"
|
||||
// rel="stylesheet"
|
||||
// type="text/css"
|
||||
// href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-detect-preferences.min.css">
|
||||
//
|
||||
// depending on whether you want to default to dark mode or not when the user
|
||||
// hasn't set a preference.
|
||||
//
|
||||
|
||||
@import "variables.less";
|
||||
|
||||
html:not(.light-theme), html.dark-theme {
|
||||
body {
|
||||
background-color: @body-bg-dark-theme;
|
||||
color: @text-color-dark-theme;
|
||||
}
|
||||
|
||||
hr {
|
||||
color: @solid-dark-grey;
|
||||
background-color: @solid-dark-grey;
|
||||
}
|
||||
|
||||
aside {
|
||||
background-color: @sidebar-bg-dark-theme;
|
||||
color: @sidebar-text-color;
|
||||
|
||||
}
|
||||
|
||||
main {
|
||||
nav {
|
||||
border-bottom-color: @nav-border-color-dark-theme;
|
||||
}
|
||||
|
||||
nav, .translations {
|
||||
a {
|
||||
border-color: @nav-border-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
article {
|
||||
kbd {
|
||||
background-color: #080808;
|
||||
color: @light-grey;
|
||||
}
|
||||
|
||||
*:not(pre) > code {
|
||||
background-color: #080808;
|
||||
border-color: #000;
|
||||
}
|
||||
}
|
||||
|
||||
footer {
|
||||
border-top-color: @footer-border-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.related-posts {
|
||||
border-color: @rel-post-border-color-dark-theme;
|
||||
}
|
||||
|
||||
// Admonition
|
||||
div.admonition.attention {
|
||||
p, div {
|
||||
color: @admonition-attention-color-dark-theme;
|
||||
background-color: @admonition-attention-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.caution {
|
||||
p, div {
|
||||
color: @admonition-caution-color-dark-theme;
|
||||
background-color: @admonition-caution-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.danger {
|
||||
p, div {
|
||||
color: @admonition-danger-color-dark-theme;
|
||||
background-color: @admonition-danger-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.error {
|
||||
p, div {
|
||||
color: @admonition-error-color-dark-theme;
|
||||
background-color: @admonition-error-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.hint {
|
||||
p, div {
|
||||
color: @admonition-hint-color-dark-theme;
|
||||
background-color: @admonition-hint-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.important {
|
||||
p, div {
|
||||
color: @admonition-important-color-dark-theme;
|
||||
background-color: @admonition-important-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.note {
|
||||
p, div {
|
||||
color: @admonition-note-color-dark-theme;
|
||||
background-color: @admonition-note-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.tip {
|
||||
p, div {
|
||||
color: @admonition-tip-color-dark-theme;
|
||||
background-color: @admonition-tip-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
|
||||
div.admonition.warning {
|
||||
p, div {
|
||||
color: @admonition-warning-color-dark-theme;
|
||||
background-color: @admonition-warning-bg-color-dark-theme;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -694,17 +694,3 @@ div.admonition.warning {
|
|||
color: @admonition-warning-color;
|
||||
background-color: @admonition-warning-bg-color;
|
||||
}
|
||||
|
||||
//
|
||||
// Dark Theme
|
||||
//
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
html:not(.light-theme) {
|
||||
@import (multiple) "dark-theme.less";
|
||||
}
|
||||
}
|
||||
|
||||
html.dark-theme {
|
||||
@import (multiple) "dark-theme.less";
|
||||
}
|
||||
|
|
|
@ -32,27 +32,28 @@
|
|||
<link rel="stylesheet" type="text/css" href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/style.min.css">
|
||||
{% endif %}
|
||||
|
||||
<!--
|
||||
DARK THEME STYLES
|
||||
The dark theme will be enabled if any of the following are true:
|
||||
* the <html> tag has the .dark-theme class.
|
||||
* THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE is true and the appropriate color scheme preference
|
||||
is set in the browser and the <html> tag does not have the .light-theme class.
|
||||
-->
|
||||
<link rel="stylesheet" type="text/css"
|
||||
{% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %}
|
||||
{% if THEME_COLOR|default("light") == "dark" %}
|
||||
media="(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)"
|
||||
{% else %}
|
||||
media="(prefers-color-scheme: dark)"
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme.min.css">
|
||||
<!-- DARK THEME STYLES -->
|
||||
{% if not THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE and not THEME_COLOR_ENABLE_USER_OVERRIDE and THEME_COLOR == "dark" %}
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-not-overridden.min.css">
|
||||
{% endif %}
|
||||
{% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %}
|
||||
<!-- Enable dark mode when media query matches and .light-theme class does not exist on <html> tag -->
|
||||
<link rel="stylesheet" type="text/css"
|
||||
{% if THEME_COLOR|default("light") == "dark" %}
|
||||
media="(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)"
|
||||
{% else %}
|
||||
media="(prefers-color-scheme: dark)"
|
||||
{% endif %}
|
||||
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-not-overridden.min.css">
|
||||
{% endif %}
|
||||
{% if THEME_COLOR_ENABLE_USER_OVERRIDE %}
|
||||
<!-- Enable dark mode when .dark-theme class exists on <html> tag -->
|
||||
<link rel="stylesheet" type="text/css"
|
||||
href="{{ SITEURL }}/{{ THEME_STATIC_DIR }}/stylesheet/dark-theme-has-class.min.css">
|
||||
{% endif %}
|
||||
|
||||
<!--
|
||||
PYGMENTS STYLES
|
||||
|
||||
-->
|
||||
<!-- PYGMENTS STYLES -->
|
||||
{% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE or THEME_COLOR == "dark" %}
|
||||
<link rel="stylesheet" type="text/css"
|
||||
{% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %}
|
||||
|
|
|
@ -23,7 +23,11 @@
|
|||
{% if THEME_COLOR_ENABLE_USER_OVERRIDE %}
|
||||
<script>
|
||||
{% if THEME_COLOR_AUTO_DETECT_BROWSER_PREFERENCE %}
|
||||
const darkSchemeWatch = window.matchMedia('(prefers-color-scheme: dark)');
|
||||
{% if THEME_COLOR|default("light") == "dark" %}
|
||||
const darkSchemeWatch = window.matchMedia('(prefers-color-scheme: dark), (prefers-color-scheme: no-preference)');
|
||||
{% else %}
|
||||
const darkSchemeWatch = window.matchMedia('(prefers-color-scheme: dark)');
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
function detectThemeAndSwitchStyle() {
|
||||
|
|
Loading…
Reference in a new issue