hexo之Volantis添加暗黑模式

具体效果请参考我的博客:阳光派Plus’Blog
很久之前就想过给博客添加一个暗黑模式,一直搁置。直到Volantis更新到3.0版本后添加了暗黑模式,然而尝试之后的结果却不是那么满意。于是着手自己配置一下。

主要的实现方法参考了博主 cungudafa的文章,然后配置到Volantis中。其实自己主要是做了适合于Volantis主题在暗黑模式下的一些格式、代码等等的颜色配置。

请注意,由于自己修改了原主题的许多源码,所以在做这个时主要配置了适合自己的一些代码风格,以下仅供参考,可以自行调整颜色配置。

使用此暗黑模式请删除原主题中blog\themes\volantis\source\css\_third-party下的darkmode.styl文件,自己在配置时发现与此文件可能是冲突或者原暗黑模式有点bug。

在Volantis中实现暗黑模式

创建格式文件

在blog\themes\volantis\layout\_partial下创建文件left.ejs文件,添加以下代码:

<div id="RightDownBtn">
    <a onclick="switchNightMode()" title="切换暗黑模式">
        <svg style=" width: 1.5em;height: 1.5em;" class="icon" aria-hidden="true">
            <use id="modeicon" xlink:href="#icon-_moon">
            </use>
        </svg>
    </a>
    <svg aria-hidden="true" style="position: absolute; width: 0px; height: 0px; overflow: hidden;">
        <symbol id="icon-sun" viewBox="0 0 1024 1024">
            <path
                d="M511.99976 511.99976m-511.99976 0a511.99976 511.99976 0 1 0 1023.99952 0 511.99976 511.99976 0 1 0-1023.99952 0Z"
                fill="#91D2F2"></path>
            <path
                d="M144.623932 868.455593C237.679889 964.327548 367.831828 1023.99952 511.99976 1023.99952c269.983873 0 490.99977-209.007902 510.455761-474.031778C956.991551 535.703749 887.559584 527.999753 815.623618 527.999753c-309.535855 0-572.895731 142.055933-670.999686 340.45584z"
                fill="#198058"></path>
            <path
                d="M979.623541 575.99973c-351.319835 0-647.791696 155.655927-741.279653 368.639827A509.359761 509.359761 0 0 0 511.99976 1023.99952c260.839878 0 475.967777-195.111909 507.799762-447.31979a1194.34344 1194.34344 0 0 0-40.175981-0.68z"
                fill="#1E9969"></path>
            <path
                d="M69.711967 769.831639C158.503926 921.815568 323.271848 1023.99952 511.99976 1023.99952a509.455761 509.455761 0 0 0 269.631874-76.783964C657.111692 828.375612 464.271782 751.999648 247.623884 751.999648c-61.575971 0-121.183943 6.271997-177.911917 17.831991z"
                fill="#6AA33A"></path>
            <path
                d="M487.887771 1023.39152c-86.543959-122.151943-236.911889-214.679899-417.591804-252.543881 85.11996 144.919932 239.415888 244.279885 417.591804 252.543881z"
                fill="#95E652"></path>
            <path
                d="M394.159815 167.999921l-45.255979 45.255979L303.647858 167.999921l45.255978-45.255979zM394.159815 503.999764l-45.255979 45.255979L303.655858 503.999764l45.247978-45.247979z"
                fill="#FFF8E6"></path>
            <path
                d="M180.879915 290.719864l45.247979 45.247979-45.255979 45.255978-45.255979-45.255978zM516.903758 290.719864l45.247978 45.247979-45.247978 45.247978-45.247979-45.247978z"
                fill="#FFF8E6"></path>
            <path d="M198.087907 185.207913h63.99997v63.99997h-63.99997zM435.671796 422.791802h63.99997v63.99997h-63.99997z"
                fill="#FFF8E6"></path>
            <path d="M198.087907 422.791802h63.99997v63.99997h-63.99997zM435.671796 185.207913h63.99997v63.99997h-63.99997z"
                fill="#FFF8E6"></path>
            <path
                d="M348.879836 335.999843m-183.999913 0a183.999914 183.999914 0 1 0 367.999827 0 183.999914 183.999914 0 1 0-367.999827 0Z"
                fill="#FFEAB3"></path>
            <path
                d="M348.879836 335.999843m-159.999925 0a159.999925 159.999925 0 1 0 319.99985 0 159.999925 159.999925 0 1 0-319.99985 0Z"
                fill="#FFDC80"></path>
        </symbol>
        <symbol id="icon-_moon" viewBox="0 0 1024 1024">
            <path d="M512 512m-512 0a512 512 0 1 0 1024 0 512 512 0 1 0-1024 0Z" fill="#323232"></path>
            <path
                d="M512 512m-407.005867 0a407.005867 407.005867 0 1 0 814.011734 0 407.005867 407.005867 0 1 0-814.011734 0Z"
                fill="#494A4A"></path>
            <path
                d="M748.1344 633.9584c0-1.143467 0.085333-2.286933 0.085333-3.413333a69.512533 69.512533 0 0 0-8.823466-33.979734q-1.058133-1.911467-2.2528-3.7376l-0.187734-0.3072a70.485333 70.485333 0 0 0-5.2736-7.099733l-0.238933-0.273067q-1.3312-1.536-2.730667-3.003733l-0.3072-0.324267a70.894933 70.894933 0 0 0-6.417066-5.819733l-0.5632-0.443733q-1.467733-1.160533-3.003734-2.235734l-0.494933-0.341333q-1.706667-1.2288-3.6352-2.3552l-0.256-0.136533q-1.706667-0.989867-3.413333-1.8944l-0.887467-0.4608q-1.604267-0.802133-3.242667-1.536l-0.6144-0.273067q-1.928533-0.836267-3.9424-1.553067l-0.8192-0.273066a54.8864 54.8864 0 0 0-3.242666-1.024l-1.143467-0.324267a85.248 85.248 0 0 0-3.601067-0.887467l-0.546133-0.119466a67.345067 67.345067 0 0 0-4.1984-0.733867l-1.143467-0.136533q-1.706667-0.2048-3.2768-0.341334l-1.245866-0.1024a74.786133 74.786133 0 0 0-4.386134-0.1536 69.8368 69.8368 0 0 0-20.48 3.037867 104.106667 104.106667 0 0 0-12.1344-11.076267 258.696533 258.696533 0 0 0-449.9456-248.763733 183.1424 183.1424 0 0 1 106.939734-34.2528c5.12 0 10.24 0.221867 15.36 0.631467a183.125333 183.125333 0 0 1 50.5344 11.52h0.170666q3.874133 1.501867 7.68 3.157333l0.256 0.1024 7.441067 3.413333 0.273067 0.136534q3.669333 1.826133 7.253333 3.805866l0.221867 0.119467q3.618133 2.013867 7.133866 4.164267a184.610133 184.610133 0 0 1 26.760534 20.036266h0.085333q2.986667 2.696533 5.870933 5.5296l0.324267 0.3072q2.781867 2.7648 5.461333 5.632l0.443734 0.477867q2.6112 2.833067 5.12 5.768533l0.494933 0.580267q2.4576 2.9184 4.795733 5.956267l0.494934 0.648533q2.321067 3.037867 4.522666 6.178133l0.426667 0.6144q2.2016 3.1744 4.283733 6.4512l0.324267 0.529067q2.116267 3.413333 4.078933 6.826667l0.170667 0.3072c1.553067 2.7136 3.0208 5.495467 4.437333 8.2944a56.149333 56.149333 0 0 0-12.578133 2.304 82.824533 82.824533 0 0 0-134.007467 18.039466 42.530133 42.530133 0 0 0-53.009066 41.079467 104.277333 104.277333 0 0 0-42.2912 80.110933 13.653333 13.653333 0 0 0 0 1.4336v0.426667c0 0.136533 0.1024 0.682667 0.187733 1.024s0 0.3072 0.1024 0.4608 0.2048 0.733867 0.324267 1.092267l0.1024 0.3072a15.36 15.36 0 0 0 0.580266 1.416533l0.1024 0.187733a16.520533 16.520533 0 0 0 0.648534 1.211734l0.221866 0.3584c0.221867 0.3584 0.4608 0.733867 0.7168 1.092266l0.221867 0.3072a26.333867 26.333867 0 0 0 2.338133 2.798934l0.119467 0.119466q0.6144 0.631467 1.297067 1.262934l0.2048 0.187733q0.7168 0.648533 1.501866 1.297067 1.706667 1.416533 3.720534 2.781866c0.6656 0.4608 1.348267 0.904533 2.065066 1.348267 26.914133 16.7936 87.995733 28.535467 159.044267 28.535467 19.3536 0 37.956267-0.8704 55.3472-2.474667l-0.494933 0.750933-0.426667 0.6144q-2.2016 3.140267-4.539733 6.178134l-0.477867 0.631466q-2.338133 3.037867-4.795733 5.956267l-0.494934 0.580267q-2.491733 2.935467-5.12 5.7856l-0.443733 0.477866q-2.679467 2.884267-5.461333 5.649067l-0.3072 0.290133q-2.884267 2.833067-5.870934 5.546667a184.8832 184.8832 0 0 1-26.7776 20.036267q-3.515733 2.167467-7.150933 4.181333l-0.187733 0.1024q-3.584 1.979733-7.2704 3.805867l-0.256 0.136533q-3.6864 1.826133-7.458134 3.413333l-0.238933 0.1024q-3.805867 1.706667-7.68 3.157334h-0.136533a183.057067 183.057067 0 0 1-50.551467 11.52c-5.12 0.4096-10.24 0.631467-15.36 0.631466a183.159467 183.159467 0 0 1-106.939733-34.2528 258.5088 258.5088 0 0 0 180.138666 107.093334 109.550933 109.550933 0 0 0-3.259733 26.453333 16.520533 16.520533 0 0 0 0.1024 1.706667v0.529066c0 0.170667 0.136533 0.853333 0.221867 1.262934l0.136533 0.5632 0.392533 1.365333 0.136534 0.4096a13.892267 13.892267 0 0 0 0.733866 1.706667l0.119467 0.238933c0.238933 0.512 0.512 1.006933 0.802133 1.501867l0.273067 0.443733q0.4096 0.682667 0.887467 1.365333l0.273066 0.375467a33.0752 33.0752 0 0 0 2.9184 3.413333l0.1536 0.1536 1.5872 1.553067 0.273067 0.256 1.8432 1.621333q2.116267 1.706667 4.625067 3.413334l2.56 1.706666c33.467733 20.8896 109.431467 35.4816 197.802666 35.4816 119.330133 0 216.046933-26.606933 216.046934-59.409066a131.413333 131.413333 0 0 0-56.285867-102.058667z"
                fill="#323232"></path>
            <path
                d="M573.8496 401.8176v-2.781867a56.200533 56.200533 0 0 0-72.6016-53.725866 82.824533 82.824533 0 0 0-134.007467 18.039466 42.530133 42.530133 0 0 0-53.009066 41.079467 104.277333 104.277333 0 0 0-42.257067 80.0768c0 26.385067 77.7728 47.786667 173.7216 47.786667s173.7216-21.384533 173.7216-47.786667a105.659733 105.659733 0 0 0-45.568-82.688z"
                fill="#CDCCCA"></path>
            <path
                d="M293.768533 506.2656a104.277333 104.277333 0 0 1 42.2912-80.110933 42.530133 42.530133 0 0 1 53.009067-41.079467 82.807467 82.807467 0 0 1 134.007467-18.039467 56.32 56.32 0 0 1 43.758933 4.642134 56.2176 56.2176 0 0 0-65.518933-26.4192 82.824533 82.824533 0 0 0-134.007467 18.039466 42.530133 42.530133 0 0 0-53.009067 41.079467 104.277333 104.277333 0 0 0-42.325333 80.128c0 8.413867 7.936 16.3328 21.845333 23.210667a13.294933 13.294933 0 0 1-0.0512-1.450667z"
                fill="#E8E9EC"></path>
            <path
                d="M453.4784 166.912a258.338133 258.338133 0 0 0-210.944 108.919467 183.995733 183.995733 0 1 1 0 299.451733 258.6624 258.6624 0 1 0 210.944-408.388267z"
                fill="#DDAE2A"></path>
            <path
                d="M364.834133 608.9216q7.594667 0.631467 15.36 0.648533a183.995733 183.995733 0 0 0 0-367.9744q-7.748267 0-15.36 0.631467a183.995733 183.995733 0 0 1 0 366.6944z"
                fill="#EDC849"></path>
            <path
                d="M794.7776 605.969067c0-1.143467 0.085333-2.286933 0.085333-3.413334a69.973333 69.973333 0 0 0-90.299733-66.833066 102.997333 102.997333 0 0 0-166.656 22.4256 52.906667 52.906667 0 0 0-65.928533 51.0976 129.706667 129.706667 0 0 0-52.599467 99.6352c0 32.8192 96.733867 59.409067 216.046933 59.409066s216.046933-26.606933 216.046934-59.409066a131.413333 131.413333 0 0 0-56.695467-102.912z"
                fill="#CDCCCA"></path>
            <path
                d="M446.481067 735.914667a129.706667 129.706667 0 0 1 52.599466-99.6352 52.906667 52.906667 0 0 1 65.928534-51.080534 102.997333 102.997333 0 0 1 166.6048-22.442666 69.973333 69.973333 0 0 1 54.408533 5.7856 69.973333 69.973333 0 0 0-81.476267-32.853334 102.997333 102.997333 0 0 0-166.656 22.4256 52.906667 52.906667 0 0 0-65.928533 51.0976 129.706667 129.706667 0 0 0-52.599467 99.6352c0 10.478933 9.864533 20.309333 27.170134 28.859734a17.408 17.408 0 0 1-0.0512-1.792z"
                fill="#E8E9EC"></path>
        </symbol>
    </svg>
</div>

<script>
    function music_on() {
        var audio1 = document.getElementById('bg_music');
        if (audio1.paused) {
            audio1.play();
        }else{
            audio1.pause();
            audio1.currentTime = 0;//音乐从头播放
        }
    }
    function BackTOP() {
        $("#btn").hide();
        $(function () {
            $(window).scroll(function () {
                if ($(window).scrollTop() > 50) {
                    $("#btn").fadeIn(200);
                } else {
                    $("#btn").fadeOut(200);
                }
            });
            $("#btn").click(function () {
                $('body,html').animate({
                        scrollTop: 0
                    },
                    500);
                return false;
            });
        });
        $(function () {
            $("#say").click(function () {
                $('body,html').animate({
                        scrollTop: $('html, body').get(0).scrollHeight
                    },
                    500);
                return false;
            });
        })
    }

    $('#readmode').click(function () {
            $('body').toggleClass('read-mode')
        })
        
    function SiderMenu() {
        $('#main-container').toggleClass('open');
        $('.iconflat').css('width', '50px').css('height', '50px');
        $('.openNav').css('height', '50px');
        $('#main-container,#mo-nav,.openNav').toggleClass('open')
    }

    function switchNightMode() {
        $('<div class="Cuteen_DarkSky"><div class="Cuteen_DarkPlanet"></div></div>').appendTo($("body")), setTimeout(
            function () {
                var DarkMode = document.cookie.replace(/(?:(?:^|.*;\s*)DarkMode\s*\=\s*([^;]*).*$)|^.*$/, "$1") ||
                    '0';
                (DarkMode == '0') ? ($("html").addClass("DarkMode"), document.cookie = "DarkMode=1;path=/", console
                    .log('夜间模式开启'), $('#modeicon').attr("xlink:href", "#icon-sun")) : ($("html").removeClass(
                        "DarkMode"), document.cookie = "DarkMode=0;path=/", console.log('夜间模式关闭'), $('#modeicon')
                    .attr("xlink:href", "#icon-_moon")), setTimeout(function () {
                    $(".Cuteen_DarkSky").fadeOut(1e3, function () {
                        $(this).remove()
                    })
                }, 2e3)
            }), 50
    }

    function checkNightMode() {
        if ($("html").hasClass("n-f")) {
            $("html").removeClass("day");
            $("html").addClass("DarkMode");
            $('#modeicon').attr("xlink:href", "#icon-sun")
            return;
        }
        if ($("html").hasClass("d-f")) {
            $("html").removeClass("DarkMode");
            $("html").addClass("day");
            $('#modeicon').attr("xlink:href", "#icon-_moon")

            return;
        }
        if (document.cookie.replace(/(?:(?:^|.*;\s*)DarkMode\s*\=\s*([^;]*).*$)|^.*$/, "$1") === '') {
            if (new Date().getHours() >= 23 || new Date().getHours() < 7) {
                $("html").addClass("DarkMode");
                document.cookie = "DarkMode=1;path=/";
                console.log('夜间模式开启');
                $('#modeicon').attr("xlink:href", "#icon-sun")
            } else {
                $("html").removeClass("DarkMode");
                document.cookie = "DarkMode=0;path=/";
                console.log('夜间模式关闭');
                $('#modeicon').attr("xlink:href", "#icon-_moon")
            }
        } else {
            var DarkMode = document.cookie.replace(/(?:(?:^|.*;\s*)DarkMode\s*\=\s*([^;]*).*$)|^.*$/, "$1") || '0';
            if (DarkMode == '0') {
                $("html").removeClass("DarkMode");
                $('#modeicon').attr("xlink:href", "#icon-_moon")
            } else if (DarkMode == '1') {
                $("html").addClass("DarkMode");
                $('#modeicon').attr("xlink:href", "#icon-sun")
            }
        }
    }
    BackTOP();
    checkNightMode();
</script>

<style>
    #RightDownBtn {
        position: fixed;
        left: 1.875rem;
        bottom: 1.875rem;
        padding: 0.3125rem 0.625rem;
        background: #fff;
        border-radius: 0.1875rem;
        <!-- box-shadow: 0 0 0.3125rem rgba(0, 0, 0, .4); -->
        transition: 0.3s ease all;
        z-index: 1;
        align-items: flex-end;
        flex-direction: column;
        display: -moz-flex;
        display: flex;
        float: right;
    }

    #RightDownBtn>a,
    #RightDownBtn>label {
        width: 1.5em;
        height: 1.5em;
        margin: 0.3125rem 0;
        transition: .2s cubic-bezier(.25, .46, .45, .94);
    }

    /* font color */
    .DarkMode #page,
    .DarkMode #colophon,
    .DarkMode #vcomments .vbtn,
    .DarkMode .art-content #archives .al_mon_list .al_mon,
    .DarkMode .art-content #archives .al_mon_list span,
    .DarkMode body,
    .DarkMode .art-content #archives .al_mon_list .al_mon,
    .DarkMode .art-content #archives .al_mon_list span,
    .DarkMode button,
    .DarkMode .art .art-content #archives a,
    .DarkMode textarea,
    .DarkMode strong,
    .DarkMode a,
    .DarkMode p,
	.DarkMode li,
    .DarkMode .label {
        color: rgba(255, 255, 255, .6);
    }

	
    .DarkMode #page,
    .DarkMode body,
    .DarkMode #colophon,
    .DarkMode #main-container,
    .DarkMode #page .yya,
    .DarkMode #content,
    .DarkMode #contentss,
    .DarkMode #footer {
        background-color: #292a2d;
    }
    .DarkMode strong,
    .DarkMode img {
        filter: brightness(.7);
    }

    /* sun and noon */
    .Cuteen_DarkSky,
    .Cuteen_DarkSky:before {
        content: "";
        position: fixed;
        left: 0;
        right: 0;
        top: 0;
        bottom: 0;
        z-index: 88888888
    }

    .Cuteen_DarkSky {
        background: linear-gradient(#feb8b0, #fef9db)
    }

    .Cuteen_DarkSky:before {
        transition: 2s ease all;
        opacity: 0;
        background: linear-gradient(#4c3f6d, #6c62bb, #93b1ed)
    }

    .DarkMode .Cuteen_DarkSky:before {
        opacity: 1
    }

    .Cuteen_DarkPlanet {
        z-index: 99999999;
        position: fixed;
        left: -50%;
        top: -50%;
        width: 200%;
        height: 200%;
        -webkit-animation: CuteenPlanetMove 2s cubic-bezier(.7, 0, 0, 1);
        animation: CuteenPlanetMove 2s cubic-bezier(.7, 0, 0, 1);
        transform-origin: center bottom
    }

    @-webkit-keyframes CuteenPlanetMove {
        0% {
            transform: rotate(0)
        }

        to {
            transform: rotate(360deg)
        }
    }

    @keyframes CuteenPlanetMove {
        0% {
            transform: rotate(0)
        }

        to {
            transform: rotate(360deg)
        }
    }

    .Cuteen_DarkPlanet:after {
        position: absolute;
        left: 35%;
        top: 40%;
        width: 9.375rem;
        height: 9.375rem;
        border-radius: 50%;
        content: "";
        background: linear-gradient(#fefefe, #fffbe8)
    }
</style>

<!-- left side bar.end -->

创建样式文件

建议所有关于主题自定义的样式都放置在同一个文件夹中,然后全局引入。在blog\themes\volantis\source\css下创建文件夹_custom,然后在blog\themes\volantis\source\css下的index.styl中全局引用此文件夹下所有文件:

// Project
 @import '_base'
 @import '_tag-plugins/*'
 @import '_highlight'
 @import '_third-party/*'
 @import '_layout/*'
+@import '_custom/*'

创建样式文件highlight.styl,放置在_custom文件夹中。添加以下代码:

.DarkMode
  .l_main
    #comments
      .vcards
        .vhead
          .vsys
            background:none
        .vcontent
          p
            color: rgb(136 136 136)
      .vinput
        color: #dbdbe2
      #valine_container
        .vwrap
          border: 1px dashed #fff
          .vemojis
            background:none
    .post
      section
        .title
          a
            color: #dbdbe2
    .article
      .prev-next
        >a
          background: #444
  .widget
    background-color: #292a2d
    >.content
      ul
        >li
          a
            color: rgba(255, 255, 255, .6) !important
            &:hover
              color: rgb(99 203 252) !important
    header
      color: rgb(68 215 182)
      a
        color: rgb(68 215 182)
  .container
    background-color: #292a2d
    box-shadow: 0 1px 3px 0 rgba(6,6,6,.28)
  .white-box
    background-color: #292a2d

  .article
    code
      background: #f6f6f663 !important
      border: none
    blockquote
      background: #f6f6f663
    h3,h4,h5
      color: rgb(219 219 226)
  div.note
    background: #44444475 !important
  details
    border: none
    background:none
    >summary
      background: #444

  .l_header
    .m_search
      .input
        background-color: #292a2d
    .wrapper
      .title
        color: #dbdbe2
    .switcher
      >li >a
        color: #44d7b6 !important

  #archive-page
    .archive
      .archive-year
        h2
          color: #fff
      .archive_page
        .archive-post
          .title
            color: rgb(219 219 226)

  #RightDownBtn
    background: none
  h1
    color: rgb(219 219 226)
  ul.list-v
    background: rgb(41 42 45)

  .comments
    hr
      color: rgb(102 102 102)
    .article
      p[ct]
        color: #dbdbe2
  div.tabs
    background: rgb(102 102 102)
  .new-meta-item
    p
      color: #888 !important
  .highlight>table
      background: #282c34
  .gutter
    background: #282c34 !important
    background-color: #282c34 !important
  .highlight 
    figcaption
      background-color: #21252b
  .highlight
    border: 1px solid #21252b !important
    background: #282c34
  .highlight pre .line, .highlight pre .params 
      color: rgba(158, 142, 142, 0.9)

所有的样式都是基于我自己的主题写的,仅供参考。

引入到页面

在blog\themes\volantis\layout\layout.ejs的文件末尾</body>下引入:

<%- partial('_partial/left', null, {cache: !config.relative_link}) %>

最后一键三连。

总结

配置的最终效果还是挺满意的,目前只调试了这么多,后期若发现有哪里不合适的地方再修改。在原文章中,博主写了很多功能,不过我都抛弃了,只留下的暗黑模式。可以参考文章自己添加。

参考文章:

hexo(sakura)给博客增添侧边栏(回到顶部,跳转评论,深色模式,播放音乐)

<think>嗯,用户之前问过关于推荐博客框架和主题的问题,现在他们特别针对Hexo想了解前十的主题。我需要先确认Hexo的流行主题,可能需要查阅最近的GitHub仓库或者社区推荐。 首先,Hexo作为静态生成器,主题很多,但哪些是排行前十的呢?我应该考虑GitHub的stars数量,下载量,以及社区活跃度。比如NexT主题肯定排在前列,因为它非常受欢迎,stars很多。Butterfly也是一个常见的选择,功能丰富。 接下来,需要确认是否有官方或权威的排名来源。不过大多数时候,用户可能希望知道社区里广泛使用和推荐的主题。可能需要列出十个,包括它们的特色、适用场景和链接。 要注意用户可能需要简洁的信息,但也要足够详细,比如主题特点、预览链接、GitHub地址等。可能还需要区分不同的风格,比如简洁、功能多、支持插件等。 另外,用户可能想知道如何安装和配置这些主题,但问题主要是排行,所以可能不需要详细步骤,但可以简要提到安装方法,比如git clone或者npm安装。 还要确保每个主题的描述准确,比如NexT支持多种样式,Butterfly有动态效果,Icarus适合技术博客等。可能需要检查每个主题的最新更新情况,确保推荐的主题还在维护中。 最后,是否需要提供选择建议?用户可能想知道根据他们的需求选哪个主题合适,所以在列表之后可以加一个总结或建议部分,帮助用户决策。 需要确保所有链接正确,没有失效的。比如NexT的GitHub链接是否正确,主题是否有演示站点。可能的话,提供主题预览图的占位符,但用户可能不需要实际图片,只需文字描述。 总结:列出十个Hexo主题,按受欢迎程度排序,每个主题简要介绍特点、适用场景和链接,最后给出选择建议。</think>### Hexo 排行前十的主题推荐(基于社区热度、功能完善度和更新频率) --- #### 1. **NexT** - **GitHub Stars**: 16k+ - **特点**: - 最受欢迎的Hexo主题,提供 `Muse`/`Mist`/`Pisces`/`Gemini` 四种风格 - 深度集成数学公式渲染(MathJax/KaTeX)、代码高亮(Prism.js) - 支持Google Analytics、SEO优化、多语言 - **适用场景**:技术博客、学术文档 - **演示站**:[https://theme-next.js.org](https://theme-next.js.org) - **项目地址**:[https://github.com/next-theme/hexo-theme-next](https://github.com/next-theme/hexo-theme-next) --- #### 2. **Butterfly** - **GitHub Stars**: 6k+ - **特点**: - 动态特效丰富(花瓣飘落、Live2D看板娘、页面波纹) - 支持PWA离线访问、图片懒加载、暗黑模式 - 内置友链朋友圈、文章加密功能 - **适用场景**:二次元风格博客、个人作品集 - **演示站**:[https://butterfly.js.org](https://butterfly.js.org) - **项目地址**:[https://github.com/jerryc127/hexo-theme-butterfly](https://github.com/jerryc127/hexo-theme-butterfly) --- #### 3. **Icarus** - **GitHub Stars**: 4k+ - **特点**: - Material Design风格,组件模块化设计 - 支持多级目录导航、文章打赏二维码 - 内置Valine评论系统、Twikoo评论系统 - **适用场景**:技术文档、团队博客 - **演示站**:[https://ppoffice.github.io/hexo-theme-icarus](https://ppoffice.github.io/hexo-theme-icarus) - **项目地址**:[https://github.com/ppoffice/hexo-theme-icarus](https://github.com/ppoffice/hexo-theme-icarus) --- #### 4. **Matery** - **GitHub Stars**: 3.5k+ - **特点**: - 响应式设计,首页动态Banner背景 - 集成音乐播放器、相册瀑布流 - 支持文章置顶、分类磁贴布局 - **适用场景**:多媒体内容展示、个人简历 - **演示站**:[https://blinkfox.github.io](https://blinkfox.github.io) - **项目地址**:[https://github.com/blinkfox/hexo-theme-matery](https://github.com/blinkfox/hexo-theme-matery) --- #### 5. **Fluid** - **GitHub Stars**: 3k+ - **特点**: - 极简风格,专注阅读体验 - 内置文章目录、数学公式、流程图 - 支持自定义字体、全局搜索 - **适用场景**:纯文字博客、技术笔记 - **演示站**:[https://fluid-dev.github.io/hexo-fluid-docs](https://fluid-dev.github.io/hexo-fluid-docs) - **项目地址**:[https://github.com/fluid-dev/hexo-theme-fluid](https://github.com/fluid-dev/hexo-theme-fluid) --- #### 6. **Yun** - **GitHub Stars**: 1.5k+ - **特点**: - 水墨风设计,动态云朵背景 - 支持诗词展示、豆瓣书单同步 - 集成Artalk评论系统、Twikoo评论系统 - **适用场景**:文艺类博客、读书笔记 - **演示站**:[https://yun.yunyoujun.cn](https://yun.yunyoujun.cn) - **项目地址**:[https://github.com/YunYouJun/hexo-theme-yun](https://github.com/YunYouJun/hexo-theme-yun) --- #### 7. **Volantis** - **GitHub Stars**: 1.2k+ - **特点**: - 标签化布局,支持暗黑/浅色主题切换 - 内置卡片式文章列表、友链聚合页 - 高度可定制化CSS变量 - **适用场景**:多功能社区站、资源聚合站 - **演示站**:[https://volantis.js.org](https://volantis.js.org) - **项目地址**:[https://github.com/volantis-x/hexo-theme-volantis](https://github.com/volantis-x/hexo-theme-volantis) --- #### 8. **Stun** - **GitHub Stars**: 1k+ - **特点**: - 单栏设计,支持全屏封面图 - 集成Algolia搜索、文章进度条 - 内置文章过期提醒功能 - **适用场景**:极简主义博客、摄影日志 - **演示站**:[https://liuyib.github.io/hexo-theme-stun](https://liuyib.github.io/hexo-theme-stun) - **项目地址**:[https://github.com/liuyib/hexo-theme-stun](https://github.com/liuyib/hexo-theme-stun) --- #### 9. **Melody** - **GitHub Stars**: 900+ - **特点**: - 动态粒子背景,支持音乐播放器 - 内置相册画廊、社交图标动画 - 适配移动端触控操作 - **适用场景**:音乐人主页、艺术创作展示 - **演示站**:[https://molunerfinn.com/hexo-theme-melody](https://molunerfinn.com/hexo-theme-melody) - **项目地址**:[https://github.com/Molunerfinn/hexo-theme-melody](https://github.com/Molunerfinn/hexo-theme-melody) --- #### 10. **Keep** - **GitHub Stars**: 800+ - **特点**: - 仿Medium风格,卡片式文章摘要 - 支持多级分类导航、文章侧边栏目录 - 集成Gitalk评论系统 - **适用场景**:长文写作、深度内容分享 - **演示站**:[https://xpoet.cn](https://xpoet.cn) - **项目地址**:[https://github.com/XPoet/hexo-theme-keep](https://github.com/XPoet/hexo-theme-keep) --- ### **选择建议** 1. **技术博客优先**:NexT(公式支持) > Fluid(极简) 2. **视觉冲击力**:Butterfly(动态特效) > Melody(粒子背景) 3. **移动端优化**:Stun(全屏适配) > Keep(Medium风格) 安装方法(以NexT为例): ```bash cd hexo-blog npm install hexo-theme-next # 修改_config.yml:theme: next ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值