Typecho 非插件后台适配暗色模式

网站代码 浏览 100 评论 0

Typecho 后台没有暗色模式,没搜到可以通过钩子来实现挂载后台样式链接的,找到的插件好像也是覆盖对应文件来实现,于是就让 AI 推荐了一下配色,自己手动给后台添加了个暗色模式,昏暗的环境下眼睛舒服多了。

下面是修改方法,跟随操作系统,无法手动切换,如果有缺失的地方可以自己补齐 CSS 代码:

  1. 找到 admin/css/style.css 文件
  2. 添加下面的 CSS 代码,:root 部分可添加在文件顶部 @charset "UTF-8"; 的下面,其他的 @media (prefers-color-scheme: dark) 开始部分可添加在文件最末尾:
:root {
    --dark-bg: #121212;
    --dark-secondary-bg: #1e1e1e;
    --dark-text: #e0e0e0;
    --dark-muted-text: #9e9e9e;
    --dark-link: #467B96;
    --dark-accent: #3c6a81;
    --dark-border: #333;
}

@media (prefers-color-scheme: dark) {
    html, body {
        background-color: var(--dark-bg);
        color: var(--dark-text);
    }

    a {
        color: var(--dark-link);
    }
    a:hover {
        color: var(--dark-accent);
        text-decoration: underline;
    }

    /* 表单与输入 */
    input[type="text"],
    input[type="password"],
    input[type="email"],
    textarea,
    select {
        background-color: var(--dark-secondary-bg);
        border-color: var(--dark-border);
        color: var(--dark-text);
        box-shadow: none;
    }
    input[type="checkbox"],
    input[type="radio"] {
        accent-color: var(--dark-link);
    }
    input[type="text"]:disabled,
    input[type="text"]:read-only,
    input[type="password"]:disabled,
    input[type="password"]:read-only,
    input[type="email"]:disabled,
    input[type="email"]:read-only,
    textarea:disabled,
    textarea:read-only,
    select:disabled {
        background-color: #232323;
        color: #777;
        border-color: #222;
    }
    input[type="text"]:focus,
    input[type="password"]:focus,
    input[type="email"]:focus,
    textarea:focus,
    select:focus {
        border-color: var(--dark-link);
        background-color: #232323;
        outline: none;
        color: var(--dark-text);
    }

    /* 按钮 */
    .btn, .primary {
        background-color: var(--dark-link);
        color: #fff;
        border-color: var(--dark-link);
        box-shadow: none;
    }
    .btn:hover, .primary:hover {
        background-color: var(--dark-accent);
        color: #fff;
    }
    .btn:disabled, .primary:disabled {
        background-color: #222;
        color: #666;
        cursor: not-allowed;
        border-color: #222;
    }
    .btn-warn {
        background-color: #b94a48;
        color: #fff;
        border-color: #b94a48;
    }
    .btn-warn:hover {
        background-color: #a4403f;
        color: #fff;
    }

    /* 表格 */
    .typecho-table-wrap {
        background-color: var(--dark-secondary-bg);
        color: var(--dark-text);
    }
    .typecho-list-table {
        background-color: var(--dark-bg);
        color: var(--dark-text);
    }
    .typecho-list-table th {
        border-bottom-color: var(--dark-border);
        background-color: #232323;
    }
    .typecho-list-table td {
        border-top-color: var(--dark-border);
        background-color: var(--dark-secondary-bg);
    }
    .typecho-list-table tbody tr:hover td {
        background-color: #232323;
    }
    .typecho-list-table tbody tr.checked td {
        background-color: #2a2a2a;
    }

    /* 下拉菜单 */
    .dropdown-menu, div.token-input-dropdown {
        background-color: var(--dark-secondary-bg);
        border-color: var(--dark-border);
        box-shadow: 0 2px 8px rgba(0,0,0,0.7);
    }
    .dropdown-menu a {
        color: var(--dark-text);
    }
    .dropdown-menu a:hover, div.token-input-dropdown ul li.token-input-dropdown-item {
        background-color: var(--dark-link);
        color: #fff;
    }

    /* 选项卡 */
    .typecho-option-tabs a {
        color: var(--dark-muted-text);
        background-color: var(--dark-secondary-bg);
        border-color: var(--dark-border);
    }
    .typecho-option-tabs a:hover {
        background-color: var(--dark-link);
        color: #fff;
    }
    .typecho-option-tabs li.current a,
    .typecho-option-tabs li.active a {
        background-color: var(--dark-accent);
        color: #fff;
    }

    /* 分页 */
    .typecho-pager a {
        color: var(--dark-muted-text);
        background-color: var(--dark-secondary-bg);
        border: 1px solid var(--dark-border);
    }
    .typecho-pager a:hover {
        background-color: var(--dark-link);
        color: #fff;
    }
    .typecho-pager li.current a {
        background-color: var(--dark-accent);
        color: #fff;
    }

    /* 消息、弹窗 */
    .success {
        background: #284828;
        color: #b6fcb6;
    }
    .notice {
        background: #484828;
        color: #fffecb;
    }
    .error {
        background: #4a2323;
        color: #ffbcbc;
    }
    .message {
        background: #232323;
        color: var(--dark-text);
    }
    .popup {
        background: #232323;
        color: var(--dark-text);
        border-bottom: 1px solid var(--dark-border);
    }
    .balloon {
        background: #444;
        color: #fff;
    }

    /* 代码块 */
    #wmd-preview code,
    #wmd-preview pre {
        background-color: #181818;
        color: #f8f8f2;
    }
    #wmd-preview blockquote {
        border-left: 4px solid #333;
        color: #aaa;
        background: #181818;
    }
    #wmd-preview table th, #wmd-preview table td {
        border: 1px solid #333;
        background: #232323;
        color: var(--dark-text);
    }

    /* 其它常用区域 */
    #custom-field, .category-option ul, ul.token-input-list, li.token-input-token {
        background-color: var(--dark-secondary-bg);
        color: var(--dark-text);
        border-color: var(--dark-border);
    }
    .typecho-login-wrap,
    .typecho-login {
        background-color: var(--dark-bg);
    }
    #typecho-welcome {
        background-color: var(--dark-secondary-bg);
        color: var(--dark-text);
    }
    .profile-avatar {
        background-color: #232323;
        border-color: var(--dark-border);
    }
    .front-archive {
        color: var(--dark-muted-text);
    }

    /* 标签列表 */
    .typecho-page-main ul.tag-list {
        background-color: var(--dark-secondary-bg);
        color: var(--dark-text);
    }
    .typecho-page-main ul.tag-list li {
        background-color: #232323;
        color: var(--dark-text);
    }
    .typecho-page-main ul.tag-list li.checked {
        background-color: var(--dark-link);
        color: #fff;
    }
    .typecho-page-main ul.tag-list li:hover {
        background-color: var(--dark-accent);
        color: #fff;
    }
    .typecho-theme-list tbody tr.current td {
        background-color: var(--dark-bg);
        color: #fff;
    }
}
0
分享

评论

还没有评论,快来抢沙发吧!