下面是我比较喜欢的美化,亲测有效(根据next7.8) Next 7.x / 8.x 自动添加可切换的暗黑模式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 npm install hexo-next-darkmode --save # Darkmode JS # For more information: https: darkmode_js: enable: true bottom : '64px' # default : '32px' right : 'unset' # default : '32px' left : '32px' # default : 'unset' time : '0.5s' # default : '0.3s' mixColor : 'transparent' # default : '#fff' backgroundColor : 'transparent' # default : '#fff' buttonColorDark : '#100f2c' # default : '#100f2c' buttonColorLight : '#fff' # default : '#fff' isActivated : false # default false saveInCookies : true # default : true label : '🌓' # default : '' autoMatchOsTheme : true # default : true libUrl : # Set custom library cdn url for Darkmode.js
isActivated: true:默认激活暗黑/夜间模式,请始终与 saveInCookies: false、autoMatchOsTheme: false 一起使用
关闭原生的暗黑模式 确保 Next 原生的 darkmode 选项设置为 false,在 Next 的 _config.yml 配置文件中更改 darkmode: false
添加鼠标点击显示字体效果 在 /themes/next/source/js 下新建文件 click_show_text.js,添加以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 var a_idx = 0 ;jQuery(document ).ready(function ($ ) { $("body" ).click(function (e ) { var a = new Array ("Js" , "Css" , "HTML" , "Json" , "Vue" , "Node" , "Webpack" , "git" , "Jquery" , "Html5" , "Css3" , "react" ); var $i = $("<span/>" ).text(a[a_idx]); a_idx = (a_idx + 1 ) % a.length; var x = e.pageX, y = e.pageY; $i.css({ "z-index" : 5 , "top" : y - 20 , "left" : x, "position" : "absolute" , "font-weight" : "bold" , "color" : "#FF0000" }); $("body" ).append($i); $i.animate({ "top" : y - 180 , "opacity" : 0 }, 3000 , function ( ) { $i.remove(); }); }); setTimeout ('delay()' , 2000 ); }); function delay ( ) { $(".buryit" ).removeAttr("onclick" ); }
想要每次点击显示的文字为不同颜色,可以将其中 color 值进行如下更改:
1 "color" : "rgb(" + ~~(255 * Math .random()) + "," + ~~(255 * Math .random()) + "," + ~~(255 * Math .random()) + ")"
然后在 \themes\next\layout\layout.swig 文件
中添加以下代码
1 <script type="text/javascript" src="/js/click_show_text.js" ></script>
最最最(重要的字说三遍)重要的来了, 可能你会报错JQ找不到,那是没引入JQ,在上面之前引入JQ即可,即:
1 2 3 <script type="text/javascript" src="http://libs.baidu.com/jquery/1.8.3/jquery.js" ></script> <script type ="text/javascript" src ="http://libs.baidu.com/jquery/1.8.3/jquery.min.js" > </script > <script type ="text/javascript" src ="/js/click_show_text.js" > </script >
添加网站雪花飘落效果 在 /themes/next/source/js 下新建文件 snow.js,添加以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 (function ($ ) { $.fn.snow = function (options ) { var $flake = $('<div id="snowbox" />' ).css({'position' : 'absolute' ,'z-index' :'9999' , 'top' : '-50px' }).html('❄' ), documentHeight = $(document ).height(), documentWidth = $(document ).width(), defaults = { minSize : 10 , maxSize : 20 , newOn : 1000 , flakeColor : "#AFDAEF" }, options = $.extend({}, defaults, options); var interval= setInterval ( function ( ) { var startPositionLeft = Math .random() * documentWidth - 100 , startOpacity = 0.5 + Math .random(), sizeFlake = options.minSize + Math .random() * options.maxSize, endPositionTop = documentHeight - 200 , endPositionLeft = startPositionLeft - 500 + Math .random() * 500 , durationFall = documentHeight * 10 + Math .random() * 5000 ; $flake.clone().appendTo('body' ).css({ left : startPositionLeft, opacity : startOpacity, 'font-size' : sizeFlake, color : options.flakeColor }).animate({ top : endPositionTop, left : endPositionLeft, opacity : 0.2 },durationFall,'linear' ,function ( ) { $(this ).remove() }); }, options.newOn); }; })(jQuery); $(function ( ) { $.fn.snow({ minSize : 5 , maxSize : 50 , newOn : 300 }); });
然后在 \themes\next\layout\layout.swig 文件
中添加以下代码
如遇到JQ找不到,参考第一种特效解决方法
1 <script type="text/javascript" src="\js\snow.js" ></script>
在文章末尾添加“文章结束”标记 在主题/layout/_macro 下新建 passage-end-tag.swig 文件,并添加以下代码
1 <div style="text-align:center;color: #000;font-size:16px;" >------ The End ------</div>
打开 /themes/next/layout/_macro/post.swig 文件,在 END POST BODY 后面引入 passage-end-tag.swig,如下
1 2 3 4 5 6 {#####################} {### END POST BODY ###} {#####################} {% if theme.passage_end_tag.enable and not is_index %} {% include 'passage-end-tag.swig' %} {% endif %}
在主题配置文件 _config.yml 的末尾添加以下配置
1 2 passage_end_tag: enable: true
侧边栏背景设置 打开themes\next\source\css_partial\sidebar.styl 此配置文件中,可以找到 .sidebar(我的没有只有#sidebar,所以我f12查看了标签找到新的id,即如下),修改其内部的属性参数即可实现设置侧边栏背景图片和字体颜色的功能
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 .mdui-drawer { background :url(/images/ sidebar.jpg); background-size: cover; background-position:center; background-repeat:no-repeat; bottom: 0 ; if (not hexo-config('back2top.sidebar' )) { box-shadow: inset 0 2px 6px black; } position : fixed; top: 0 ; transition: all $transition-ease-out; width: $sidebar-desktop; z-index: $zindex-2 ; a { border-bottom-color: #FFFFFF; color: #FFFFFF; &:hover { border-bottom-color: $FFFFFF; color: #FFFFFF; } } }
更换背景 在themes\next\source\css\main.styl文件最下面添加下面代码即可
1 2 3 4 5 6 7 8 9 10 11 body { background :url(/images/ bg01.jpg); background-repeat: no-repeat; background-attachment:fixed; background-position:50 % 50 %; color: var (--text-color); font-family: 'Lato' , "PingFang SC" , "Microsoft YaHei" , sans-serif; font-size: 1em; line-height: 2 ; }
设置透明度和中心文章栏加圆角 单设置了背景图片还不是很完美,我们给所有的栏目设置一个小小的透明,会显得效果很好。 在themes\next\source\css\main.styl文件最下面添加下面代码即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 .header-inner { opacity : 0.8 ; } .sidebar{ transition-duration: 0. 4s; opacity: 0.8 ; } .content { padding-top: 15px; opacity: 0.9 ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 .post-block { background : var (--content-bg-color); border-radius: 10px 10px 10px 10px; box-shadow: 0 2px 2px 0 rgba(0 ,0 ,0 ,0.12 ), 0 3px 1px -2px rgba(0 ,0 ,0 ,0.06 ), 0 1px 5px 0 rgba(0 ,0 ,0 ,0.12 ); padding: 40px; } .post-block + .post-block { border-radius: 10px 10px 10px 10px; box-shadow: 0 2px 2px 0 rgba(0 ,0 ,0 ,0.12 ), 0 3px 1px -2px rgba(0 ,0 ,0 ,0.06 ), 0 1px 5px 0 rgba(0 ,0 ,0 ,0.12 ), 0 -1px 0. 5px 0 rgba(0 ,0 ,0 ,0.09 ); margin-top: 12px; }
[Read More]按钮样式: 黑底绿字 在themes\next\source\css\main.styl文件最下面添加如下代码即可
1 2 3 4 .post-button .btn:hover { color : rgb(136 , 255 , 13 ) !important; background-color: rgba(0 , 0 , 0 , 0.75 ); }
页面底部页码样式 在themes\next\source\css\main.styl文件最下面添加如下代码即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 .pagination .page-number.current { border-radius: 100 %; background-color: rgba(50 , 50 , 50 , 0.75 ); } .pagination .prev, .pagination .next, .pagination .page-number { margin-bottom: 10px; border: none; color: rgb(1 , 1 , 1 ); } .page-number:hover,.page-number:active{ color : rgb(136 , 255 , 13 ); border-radius: 100 %; background-color: rgba(0 , 0 , 0 , 0.75 ); }
修改分类页的页面样式 在themes\next\source\css\main.styl文件最下面添加如下代码即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 .post-block.page { margin-top: 40px; } .category-all-page { box-shadow: 0px 0px 10px 0px rgba(0 , 0 , 0 , 0.5 ); background-color: #797D7F; padding: 20px 30px 60px 30px; border-radius: 25px 25px 25px 25px; } .category-all-title { font-family: Impact; font-size: 24px; color: aqua; } .category-list { overflow : auto; } .category-list li { height : 100 %; float: left; border-right: 3px solid #222 ; padding: 0 20px; } .category-all ul li { list-style: none!important; } .category-list li:last-child { border-right: none; } .category-list li a { font-size: 16px; text-decoration: none; color: chartreuse; font-family: Helvetica, Verdana, sans-serif; -webkit-transition: all 0. 5s ease; -moz-transition: all 0. 5s ease; -o-transition: all 0. 5s ease; -ms-transition: all 0. 5s ease; transition: all 0. 5s ease; } .category-list li a:hover { color : black; } .category-list li.active a { font-weight: bold; color: black; }
修改彩色标签页的页面样式 在 /themes/next/layout/ 目录下,新增 tag-color.swig 文件,填入如下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 <script type="text/javascript" > var alltags = document .getElementsByClassName('tag-cloud-tags' ); var tags = alltags[0 ].getElementsByTagName('a' ); for (var i = tags.length - 1 ; i >= 0 ; i--) { var r=Math .floor(Math .random()*75 +130 ); var g=Math .floor(Math .random()*75 +100 ); var b=Math .floor(Math .random()*75 +80 ); tags[i].style.background = "rgb(" +r+"," +g+"," +b+")" ; } </script> <style > .tag-cloud-tags { text-align : center; counter-reset : tags; } .tag-cloud-tags a { border-radius : 6px ; padding-right : 5px ; padding-left : 5px ; margin : 8px 5px 0px 0px ; } .tag-cloud-tags a :before{ content: "🔖" ; } .tag-cloud-tags a :hover { box-shadow : 0px 5px 15px 0px rgba (0 ,0 ,0 ,.4 ); transform : scale (1.1 ); transition-duration : 0.15s ; } </style >
在同级目录的 page.swig 中引入 tag-color.swig
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <div class ="tag-cloud" > <!-- 目前共计xxx个标签 <div class ="tag-cloud-title" > {{ _p('counter.tag_cloud' , site.tags.length) }} </div> --> <div class ="tag-cloud-tags" > {{ tagcloud({min_font: 10, max_font: 15, amount: 300, color: true, start_color: '#ccc', end_color: '#111'}) }} </div > </div> + {% include 'tag-color.swig' %} {% elif page.type === 'categories' %} <div class ="category-all-page" > <div class ="category-all-title" > {{ _p('counter.categories', site.categories.length) }} </div > <div class ="category-all" > {{ list_categories() }} </div > </div>
去掉博客顶部黑线 在themes\next\source\css\main.styl文件最下面添加如下代码即可
1 2 .headband {display :none;}
改掉题头颜色 在themes\next\source\css\main.styl文件最下面添加如下代码即可
1 2 3 4 .site-brand-container { background : ; }
相册 可以利用 next 的插件 group picture 来实现,他的原理很简单,就是利用 next 主题的 Tag Plugin 这种语法提供了一种展示图片的布局。
需要以下几步:
首先 hexo new page photos 新建一个名为 photos 的标签页,并且在 themes/next/languages/zh-CN.yml 中的 menu 一项下面添加 photos: 相册,这样在首页菜单栏才会显示中文相册。 其次,可以直接在 source/photos/index.md 写文章,并在需要插入图片的时候用以下方式来组织你的图片列表:
1 2 3 4 5 6 7 8 9 10 11 ## 某某地方玩 {% gp 6 -3 %} ![](/images/ docs/github.png) ![](/images/ docs/github.png) ![](/images/ docs/github.png) ![](/images/ docs/github.png) ![](/images/ docs/github.png) ![](/images/ docs/github.png) {% endgp %} 其中 ‘6 -3 ’ 的意思是改组一共有六张图片,每行排最多三张。除了图片之外其他的文字和章节标题都可以像往常一样加
为Next主题添加Valine评论系统,可参考这个 ….后续更新