github page hexo博客gitee_利用Github和hexo搭建个人免费博客

利用Github和hexo搭建个人免费博客详细过程:

概述:

详细的介绍了利用github和hexo搭建免费的博客,内容详细,浅显易懂,容易上手,大家一起进来看看吧!

1、配置Github相关操作:

​ ①新建一个仓库,点击【New】

3de35a379c953e91aa123ca57ec56ab6.png

​ ②输入自己的仓库名,注意:这里的仓库名的形式一定是http://username.github.io的形式,其中username是你的用户名。(像我的仓库名称就是:http://lures2019.github.io),并且一个账号只能拥有一个这样的仓库!(仓库名字一定要和github账户名称一样,否则后面部署失败,图是错误的!)

3911c4eb9f59b9476aa659f57b022181.png

​ ③搭建环境:安装node.js和git(具体安装过程谷歌搜索),安装好后打开cmd,分别输入node -v和npm -v以及git --version,结果若是下面这样,说明环境搭建成功:

1fad29e7a2bb35adff95d163c70a4b4b.png

​ 这时桌面鼠标点击右键,可以看到下面这样:git bash here表示在当前目录下运行git bash(在不同的目录下运行效果不一样,切记)

2dcf9a09bf06afb4a32d387652cc994e.png

​ ④SSH授权:

​ 打开git bash,输入ssh-keygen -t rsa接着按照提示进行操作(回车三下),如下所示说明创建公私钥成功,回车默认是把公钥和私钥保存在默认的路径(我们可以选择自己的路径,把路径输入即可,但是不建议这么做,否则后面会出bug):

e0a067ddfc28b4aecfc6c8eb743dd277.png

​ 接着运行下面的两条命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"		
ssh-add ~/.ssh/id_rsa

​ 这样就会在C盘用户目录下生成id_rsa和id_rsa.pub这两个文件,前者是私钥,后者是公钥,用记事本打开id_rsa.pub,复制其中的全部内容,添加到GitHub上,这样本地的id_rsa密钥就可以和GitHub上的id_rsa.pub公钥进行配对,授权成功。

4cf7e727a18a4462cabfd0a873f8b17e.png

​ ⑤在github上添加SSH key:

​ 点击右上角的头像打开setting,在SSH and GPGkey选项中点击New SSH key,把上述所说的id_rsa.pub中的内容全部复制到框框中,完成授权 :

ca07501a81e6171e3ca6095619d798d6.png

其中SSH的存放目录是:

4534e3dde43ebcd06a2a8cddbfc60d61.png

SSH key添加之后,就可以在本机的git bash下进行测试,输入:ssh -T git@github.com进行测试,出现HiXXX,说明授权成功:

ce4c2fe6d4f556bc2e6c443fc82a0fe6.png

注意:如果出现无法登陆的情况,先把之前生成的文件懂删了以后再重新生成一下ssh,(建议使用默认目录,否则这个地方会出问题)

2、设置本地博客的设置:

​ ①安装一个文件夹(用来安装hexo),在git bash中进入这个文件夹下(在git bash中用cd 命令进入或者在该文件夹下右击点Git bash here ,两种方法效果一样)输入npm install -g hexo安装hexo即可(要耐心的等会),再输入npm install hexo --save (耐心的等一会),紧接着输入 hexo v ,出现如下信息则说明安装成功:

​ 记住:一定要在【环境变量】path下添加node-modules下的.bin目录,否则hexo v会出现错误:

70169f8990a8a6399b74c9260c865319.png

a7a2df53de889e1b0f4f5f6281a8275c.png

146d022896a6ce3527d6623fe814426e.png

​ ②初始化hexo:

​ 什么是初始化hexo?就相当于新建一个hexo实例,新建一个文件夹,在这个文件夹下初始化hexo,用hexo init +文件夹路径 或者在该文件夹下打开git bash 进行执行hexo init 命令,比如我在一个叫blog的文件夹初始化了hexo,则这个文件夹下就生成了一个hexo站点所包含的所以文件:

215baad38f361dfca698812c57950d44.png

​ 初始化成功后,在git bash中进入该目录,试行命令 hexo s(hexo server的缩写),启动本地服务,这样可以进行本地预览,hexo可以初始化很多次,产生多个hexo站点。这里我就初始化了一个,在blog文件夹下,如果你初始化了多个hexo站点,想要启动哪个,就在哪个目录下执行hexo s 命令。执行后,如下:

9da02d957e2fd149879684c515a58ff3.png

​ 根据提示,在浏览器里打开localhost:4000,如下,说明博客已经搭建成功,不过只能在本地查看,此时还没有与Github关联起来 !

cd6030382226e40cb1291ea14ed4f039.png

​ ③部署到Github上:

​ 强调:两个概念
站点配置文件:初始化hexo的那个文件夹下的_config.yml文件;
主题配置文件:theme目录下的每个主题文件夹的_config.yml文件
(每个主题都有一个主题配置文件,但是一个站点只有一个站点配置文件)打开站点配置文件先打开配置文档_config.yml,对它做如下修改,repository后面的内容是 git@gitbub.com:username/库地址 的形式注意:type、repository、branch冒号的后面都有一个空格(切记所有配置文件中冒号与值之间都有一个空格)

f46abf89cbadbb1b1c64765e02183a52.png

03b236f051527488c4f6b3b6fc358edf.png

(其中,repository后面的是你的仓库的地址,我的应该是lures2019/http://lures2019.github.io,后面已经修改了),这个在文末(需要自己添加!)

​ 这样就配置好啦,接下来在git bash中把网站部署到github上。打开github,通过ssh登录github,即执行指令ssh -T git@github.com ,必须先登录才能部署,在本地预览的时候不需要这一步,接着执行三部曲

hexo clean (清理缓存什么的,执行一下没坏处)hexo g (生成静态文件)hexo d (部署到github上,如果只是本地预览把这一步换为 hexo s)
这样就完成了,在浏览器里输入库地址就能访问我们在github上搭建的博客了 ,比如我的库地址如上(斜杠后面的)lures.github.io:

74cd591442cd515288919ac80a554786.png

​ 注意:如果在部署时执行命令hexo d时出现:Error Deployer not found: git,需要执行下面的步骤:

安装hexo-deployer-git:$ npm install hexo-deployer-git --save
重新deploy:$ hexo deploy

1aeaf7713a0e2db2d7aedfdca556b05f.png

30f6d94ced30184b41294992a473987d.png

现在可以在浏览器上搜索:http://lures.github.io可以查看博客了;

766a3b19ad23fba24c2e710610d3a00f.png

3、更换主题(以next主题为例):

​ (1)下载主题:

​ 安装指令: 首先打开git bash进入根目录即 “ /blog/blog” 执行命令: git clone https://github.com/theme-next/hexo-theme-next themes/next 此时会从next主题的作者的github仓库克隆next主题到 我们本地的 /blog/theme/next文件夹下 :

dd15e197fd25477ca9ccf4980aaea63b.png

de733df7da530d9dd37f9f38a3e3cee4.png

安装完成后,打开【站点配置文件】即hexo下的_config.yml文件,找到theme字段,并将值更改为next,【Ctrl +s】进行保存:(记事本打开)

a173661eb091d6fd4cf75b08e8c576e8.png

e1fbf836a6d62e5f191d338874fd5f24.png

接着,依次执行下面的代码:

hexo clean
hexo g
hexo d

​ 截图如下:

4f37092d2bf77ab4cdf398ee157cb59f.png

43d104658f0e6207e95bb22144516377.png

b7d791cef7557c6e6a429ec84125857b.png

​ 接着,咱就可以在浏览器之前的网址进行刷新了:

ef227155fcb2a6949a7d730f6d431ff6.png

(next主题有四种选择,上面这个只是最简洁的一种,我选择的是Gemini布局)

​ (2)修改主题配置文件:

​ 打开themes下的_config.yml文件进行修改操作:

c93c87dffeb545b4843f3b09d79b5bf8.png

68b4a3af14dc3ac8e80c72290aef6d4c.png

​ 【Ctrl+s】进行保存后,接着运行三个命令:

hexo clean 
hexo g
hexo d

我就不截图了,部署成功后的网址刷新结果是:

e9aca7f5c5b621f090bc2052d7219dc8.png

(注意:如果刷新后发现next主题并没有变化,可能是刚开始的时候hexo下的_config.yml文件的repository后面的名字错误(我刚开始犯下的错误)

4、设置语言:

​ 在站点配置文件【即hexo下的_config.yml】中设置语言:

d13991a06a5309e197bdaf4a3e7f3f80.png

5、字数统计和阅读时长(网站底部/文章内):

​ ①首先安装插件:npm install hexo-symbols-count-time --save

c62d7b02777128051fe92ea972c531cd.png

​ 文件夹中出现这个名称的目录就说明插件安装成功,如下图:

1cf7b3ab2d054fc1e01e38430431858f.png

​ ②然后修改主题配置文件【即themes下的_config.yml】

0e233f3b7961865bdfbe9c48c2c49f0a.png

​ ③运行之前的三个命令并刷新网址后得到截图:

60b62952082e66e07d532629adf5cef4.png

​ 出现乱码的方式是这样的,看下图:

988b41710eacf24057accbde58c69be6.png

​ 当我们把ANSI编码换成UTF-8编码后,出现的图片是这样的:

b29d6d2d0cce56d95af8231404e5b95e.png

​ 发现全部都是乱码,我们只需要重写再写一遍,再次运行之前的三个命令并刷新网址就可以得到新的界面了:

8525d26d605282f2d22c978f3513dde0.png

6、添加busuanzi:统计浏览次数(本站总访问数,本站总访问量):

​ 打开/blog/themes/next/layout/_partials/footer.swig 在文件底部添加下面的代码:

d686c9cf90166dcb1354fcb153e928bb.png
<div class="powered-by"><i class="fa fa-user-md"></i><span id="busuanzi_container_site_uv">本站总访客数:<span id="busuanzi_value_site_uv"></span>&nbsp;&nbsp;| </span><span id="busuanzi_container_site_pv">&nbsp;本站总访问量<span id="busuanzi_value_site_pv"></span>次</span></div></div>

​ 现在【Ctrl +s】保存并运行三条命令后刷新网址得到新的界面:

590735d0695e06c2152b804bf1fdae67.png

7、添加网站的安全运行时间:

​ 打开/blog/themes/next/layout/_partials/footer.swig 在文件底部添加下面的代码:

<span id="timeDate">载入天数...</span><span id="times">载入时分秒...</span>
<script>var now = new Date(); function createtime() { var grt= new Date("12/08/2019 16:00:00");//此处修改你的建站时间或者网站上线时间 now.setTime(now.getTime()+250); days = (now - grt ) / 1000 / 60 / 60 / 24; dnum = Math.floor(days); hours = (now - grt ) / 1000 / 60 / 60 - (24 * dnum); hnum = Math.floor(hours); if(String(hnum).length ==1 ){hnum = "0" + hnum;} minutes = (now - grt ) / 1000 /60 - (24 * 60 * dnum) - (60 * hnum); mnum = Math.floor(minutes); if(String(mnum).length ==1 ){mnum = "0" + mnum;} seconds = (now - grt ) / 1000 - (24 * 60 * 60 * dnum) - (60 * 60 * hnum) - (60 * mnum); snum = Math.round(seconds); if(String(snum).length ==1 ){snum = "0" + snum;} document.getElementById("timeDate").innerHTML = "本站已安全运行 "+dnum+" 天 "; document.getElementById("times").innerHTML = hnum + " 小时 " + mnum + " 分 " + snum + " 秒"; } 
setInterval("createtime()",250);
</script>

​ 运行三个命令并刷新网址后的截图是:

1952ba3f137d4ffc69aeccb8b00abf9d.png

8、静态背景图片:

​ 在下图的路径下新建一个文件夹:background:

d64d8714294e3cfa0d2302ed0919a089.png

​ 接着,打开主题配置文件,在文末加上background_image: bg-8.jpg;,截图如下:

e05e3d28e85ce7e732a5b07cebd4e63a.png

(透明度暂时不知道怎么设置,QAQ,hexo6后静态背景我没找到实现办法,害得我想了好久,哭了~)

9、添加评论系统(以valine为例):

​ 先注册leancloud账号,获取自己的appid,appkey:

7c2d4a361eb04001f9eed49bcc8db76e.png

​ (注意:class名称必须是Counter)

06a99b9e030ccf20df579f79dd0976b7.png

​ 打开主题配置文件,修改如下:

valine:enable: true # 为true时启用评论appid:  # 这里填写上面得到的APP ID   注意空一格再输入ID和key,appkey:  # 这里填写上面得到的APP KEYnotify: false #  邮件通知verify: false # 验证码placeholder:  #评论框中预设的文字,随意填写avatar: mm # gravatar style 头像,采用gravatar头像,到http://cn.gravatar.com/了解guest_info: nick,mail,link # custom comment header 访客信息,显示在评论框上面,三者可随意选择或全选pageSize: 10 # pagination size 评论分页大小visitor: false #

10、添加热度:

​ 修改主题配置文件:

leancloud_visitors:enable: trueapp_id:  #填入你leancloud账号的appidapp_key: #填入你leancloud账号的appkey

​ 打开/blog/themes/next/layout/_macro/post.swig,在画红线的区域添加

d52322aa8dc20061c260586eeb5e7c79.png

然后打开,/blog/themes/next/languages/zh-CN.yml,将画红框的改为热度就OK了 :

49d0870eb5de92872adf8d699a305bc8.png

11、为博客添加宠物:

​ ①在hexo根目录下安装插件:npm install -save hexo-helper-live2d

​ ②安装需要的宠物插件:宠物样式 源码地址 :

npm install {package}

​ 其中,{package}是替换为你要安装的宠物名,如 live2d-widget-model-z16

​ 具体指令:npm install live2d-widget-model-z16

f4560871253230dff079952f448caba6.png

​ ③在站点配置文件中加上如下代码:

live2d:enable: true   #开启宠物scriptFrom: localmodel:use: live2d-widget-model-z16display:position: right   #指定宠物显示的位置width: 300    #指定宠物显示的宽度height: 600   #指定宠物显示的高度mobile:show: true  #是否在手机上显示

295685aa798f14c793382a2eaf03abca.png

12、鼠标点击出现桃心效果:

​ ①在 /themes/next/source/js 下新建文件 love.js,在love.js 文件中添加以下代码:

!function(e,t,a){function n(){c(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 500%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"),o(),r()}function r(){for(var e=0;e<d.length;e++)d[e].alpha<=0?(t.body.removeChild(d[e].el),d.splice(e,1)):(d[e].y--,d[e].scale+=.004,d[e].alpha-=.013,d[e].el.style.cssText="left:"+d[e].x+"px;top:"+d[e].y+"px;opacity:"+d[e].alpha+";transform:scale("+d[e].scale+","+d[e].scale+") rotate(45deg);background:"+d[e].color+";z-index:99999");requestAnimationFrame(r)}function o(){var t="function"==typeof e.onclick&&e.onclick;e.onclick=function(e){t&&t(),i(e)}}function i(e){var a=t.createElement("div");a.className="heart",d.push({el:a,x:e.clientX-5,y:e.clientY-5,scale:1,alpha:1,color:s()}),t.body.appendChild(a)}function c(e){var a=t.createElement("style");a.type="text/css";try{a.appendChild(t.createTextNode(e))}catch(t){a.styleSheet.cssText=e}t.getElementsByTagName("head")[0].appendChild(a)}function s(){return"rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")"}var d=[];e.requestAnimationFrame=function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(e){setTimeout(e,1e3/60)}}(),n()}(window,document);

​ ②然后在 themesnextlayout_layout.swig 文件末尾添加以下代码:

<!-- 页面点击小红心 -->
<script type="text/javascript" src="/js/love.js"></script>

13、网页底部的动态桃心图像:

​ 修改主题配置文件:

icon:name: heart      #如果name的值为heart表示引用fontawesome网站上的心形图标animated: true     #如果想用动态图标应该将animated的值设为truecolor: "#ff0000"     #图标的色--用16进制数

14、设置网站的图标Favicon:

​ ①下载一个32*32的图片,并改名为favicon.ico, 然后放到/blog/themes/next/source/images目录

​ ②修改主题配置文件:

favicon:small: /images/favicon-16x16-next.pngmedium: /images/favicon.icoapple_touch_icon: /images/apple-touch-icon-next.pngsafari_pinned_tab: /images/logo.svg

15、添加打赏:

# Reward (Donate)
reward_settings:enable: true animation: truecomment: 只想买包辣条reward:wechatpay: /images/wechatpay.png   #微信收款码alipay: /images/alipay.png   #支付宝收款码#bitcoin: /images/bitcoin.png

7511b6b027cccb0b1cb74f504d1617e9.png

b0ba2f9a9da3303ffd1242109659e6af.png

16、在右上角或者左上角实现fork me on github

​ 访问:https://github.blog/2008-12-19-github-ribbons/

​ 或者是http://tholman.com/github-corners/

​ 选择合适的图标,并复制代码!

375b7bad14eddf7fd03d583b73f7b7c7.png

​ /blog/themes/next/layout/_layout.swig文件中进行配置. next表示的是当前你使用的主题的样式.

cc285e25bb8552ea668cb276c50bf496.png

(注意:其中href后面的是我们自己的地址)

827c4e6be18679efacdd35cee8036560.png

17、侧边栏社交链接

​ ① 修改主题配置文件: 链接放置在 social 字段下,一行一个链接。其键值格式是 显示文本: 链接地址

social:GitHub: https://github.com/lures2019 || githubE-Mail: mailto:zhichaowang94@gmail.com || envelopeWeibo: https://weibo.com/zhichaowang94/home?wvr=5 || weibo#Google: https://plus.google.com/yourname || google#Twitter: https://twitter.com/yourname || twitter#FB Page: https://www.facebook.com/yourname || facebookStackOverflow: https://stackoverflow.com/users/12209371/王智超 || stack-overflow#YouTube: https://youtube.com/yourname || youtube#Instagram: https://instagram.com/yourname || instagram#Skype: skype:yourname?call|chat || skype#RSS: /atom.xml || rsssocial_icons:enable: trueicons_only: falsetransition: false#图标:Github: githubE-Mail: envelopeWeibo: weiboStackOverflow: stack-overflow

eeeded19c7820564dfb62431826a0969.png

18、网页雪花飘落效果:

​ ①在 Hexothemesnextsourcejs 目录下新建一个 snow.js 文件,粘贴以下代码:

/*样式一*/
(function($){$.fn.snow = function(options){var $flake = $('<div id="snowbox" />').css({'position': 'absolute','z-index':'9999', 'top': '-50px'}).html('&#10052;'),documentHeight  = $(document).height(),documentWidth   = $(document).width(),defaults = {minSize     : 10,maxSize     : 20,newOn       : 1000,flakeColor  : "#AFDAEF" /* 此处可以定义雪花颜色,若要白色可以改为#FFFFFF */},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  /* 定义密集程度,数字越小越密集 */});
});
/*样式二*/
/* 控制下雪 */
function snowFall(snow) {/* 可配置属性 */snow = snow || {};this.maxFlake = snow.maxFlake || 200;   /* 最多片数 */this.flakeSize = snow.flakeSize || 10;  /* 雪花形状 */this.fallSpeed = snow.fallSpeed || 1;   /* 坠落速度 */
}
/* 兼容写法 */
requestAnimationFrame = window.requestAnimationFrame ||window.mozRequestAnimationFrame ||window.webkitRequestAnimationFrame ||window.msRequestAnimationFrame ||window.oRequestAnimationFrame ||function(callback) { setTimeout(callback, 1000 / 60); };cancelAnimationFrame = window.cancelAnimationFrame ||window.mozCancelAnimationFrame ||window.webkitCancelAnimationFrame ||window.msCancelAnimationFrame ||window.oCancelAnimationFrame;
/* 开始下雪 */
snowFall.prototype.start = function(){/* 创建画布 */snowCanvas.apply(this);/* 创建雪花形状 */createFlakes.apply(this);/* 画雪 */drawSnow.apply(this)
}
/* 创建画布 */
function snowCanvas() {/* 添加Dom结点 */var snowcanvas = document.createElement("canvas");snowcanvas.id = "snowfall";snowcanvas.width = window.innerWidth;snowcanvas.height = document.body.clientHeight;snowcanvas.setAttribute("style", "position:absolute; top: 0; left: 0; z-index: 1; pointer-events: none;");document.getElementsByTagName("body")[0].appendChild(snowcanvas);this.canvas = snowcanvas;this.ctx = snowcanvas.getContext("2d");/* 窗口大小改变的处理 */window.onresize = function() {snowcanvas.width = window.innerWidth;/* snowcanvas.height = window.innerHeight */}
}
/* 雪运动对象 */
function flakeMove(canvasWidth, canvasHeight, flakeSize, fallSpeed) {this.x = Math.floor(Math.random() * canvasWidth);   /* x坐标 */this.y = Math.floor(Math.random() * canvasHeight);  /* y坐标 */this.size = Math.random() * flakeSize + 2;          /* 形状 */this.maxSize = flakeSize;                           /* 最大形状 */this.speed = Math.random() * 1 + fallSpeed;         /* 坠落速度 */this.fallSpeed = fallSpeed;                         /* 坠落速度 */this.velY = this.speed;                             /* Y方向速度 */this.velX = 0;                                      /* X方向速度 */this.stepSize = Math.random() / 30;                 /* 步长 */this.step = 0                                       /* 步数 */
}
flakeMove.prototype.update = function() {var x = this.x,y = this.y;/* 左右摆动(余弦) */this.velX *= 0.98;if (this.velY <= this.speed) {this.velY = this.speed}this.velX += Math.cos(this.step += .05) * this.stepSize;this.y += this.velY;this.x += this.velX;/* 飞出边界的处理 */if (this.x >= canvas.width || this.x <= 0 || this.y >= canvas.height || this.y <= 0) {this.reset(canvas.width, canvas.height)}
};
/* 飞出边界-放置最顶端继续坠落 */
flakeMove.prototype.reset = function(width, height) {this.x = Math.floor(Math.random() * width);this.y = 0;this.size = Math.random() * this.maxSize + 2;this.speed = Math.random() * 1 + this.fallSpeed;this.velY = this.speed;this.velX = 0;
};
// 渲染雪花-随机形状(此处可修改雪花颜色!!!)
flakeMove.prototype.render = function(ctx) {var snowFlake = ctx.createRadialGradient(this.x, this.y, 0, this.x, this.y, this.size);snowFlake.addColorStop(0, "rgba(255, 255, 255, 0.9)");  /* 此处是雪花颜色,默认是白色 */snowFlake.addColorStop(.5, "rgba(255, 255, 255, 0.5)"); /* 若要改为其他颜色,请自行查 */snowFlake.addColorStop(1, "rgba(255, 255, 255, 0)");    /* 找16进制的RGB 颜色代码。 */ctx.save();ctx.fillStyle = snowFlake;ctx.beginPath();ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);ctx.fill();ctx.restore();
};
/* 创建雪花-定义形状 */
function createFlakes() {var maxFlake = this.maxFlake,flakes = this.flakes = [],canvas = this.canvas;for (var i = 0; i < maxFlake; i++) {flakes.push(new flakeMove(canvas.width, canvas.height, this.flakeSize, this.fallSpeed))}
}
/* 画雪 */
function drawSnow() {var maxFlake = this.maxFlake,flakes = this.flakes;ctx = this.ctx, canvas = this.canvas, that = this;/* 清空雪花 */ctx.clearRect(0, 0, canvas.width, canvas.height);for (var e = 0; e < maxFlake; e++) {flakes[e].update();flakes[e].render(ctx);}/*  一帧一帧的画 */this.loop = requestAnimationFrame(function() {drawSnow.apply(that);});
}
/* 调用及控制方法 */
var snow = new snowFall({maxFlake:60});
snow.start();

​ ②然后在 Hexothemesnextlayout_layout. swig文件里引用即可:

<!-- 雪花特效 -->
<script type="text/javascript" src="jssnow.js"></script>如果没效果,请确认网页是否已载入JQurey,如果没有请在下雪代码之前引入JQ即可:
<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>

​ 运行后截图效果:

abbdce625038e152f2d06eaf2dcccf0b.png

19、添加作者头像:

​ ①在images目录下下载作者头像并命名为:avatar.png

​ ②在主题配置文件中:

ace21ed9be532bb5c36809e434436ace.png

​ 将false改成true,url对应改变即可

​ 运行并截图:

97c7b873e4e7491ec265035cf4314a89.png

20、配置主菜单:

​ ①打开主题配置文件,按照下面格式添加边栏菜单:

menu:home: / || homeabout: /about/ || user      #关于我tags: /tags/ || tags         #标签云#categories: /categories/ || tharchives: /archives/ || archive#schedule: /schedule/ || calendar#sitemap: /sitemap.xml || sitemap

​ ②标签云:使用 Hexo 命令新建一个名为 tags 的页面即可 :

hexo new page tags

791dc27131f18af184f7dcde2438fe18.png

​ 该页面标题可以在文件 hexosourcetagsindex.md 中修改

​ ③about页面:

​ 使用 Hexo 命令新建一个名为 about 的页面即可

hexo new page about

fd5ecb902452cd330c8c00093386dab0.png

​ 该页面内容在文件 hexosourceaboutindex.md 中修改 :

2460365233472bcc52d0f6f1e4edf8bd.png

21、在每篇文章末尾统一添加“本文结束”标记:

​ ①在路径 themesnextlayout_macro 中新建 passage-end-tag.swig 文件,并添加以下内容:

<div>{% if not is_index %}<div style="text-align:center;color: #ccc;font-size:14px;">-------------本文结束<i class="fa fa-paw"></i>感谢您的阅读-------------</div>{% endif %}
</div>

​ ②接着打开themesnextlayout_macropost.swig文件,在post-body 之后, post-footer 之前添加如下画红色部分代码(post-footer之前两个DIV):

​ 代码如下:

<div>{% if not is_index %}{% include 'passage-end-tag.swig' %}{% endif %}
</div>

​ 然后打开主题配置文件(_config.yml),在末尾添加:

# 文章末尾添加“本文结束”标记
passage_end_tag:enabled: true

​ 完成以上设置之后,在每篇文章之后都会添加如上效果图的样子。

208bc6d3a3c9d0737538e75f5454916e.png

22、在网站底部加上访问量:

​ ①打开themesnextlayout_partialsfooter.swig文件,在copyright前加上画红线这句话:

3d04133ccd1326b30e8ea01bdcd15a99.png

​ 代码如下:

​ <script async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>

​ 然后再合适的位置添加显示统计的代码,如图:

3f0763fc0ee181ef4d71a703f2a07fdc.png

​ 代码如下:

23、隐藏网页底部powered By Hexo / 强力驱动

​ 打开themes/next/layout/_partials/footer.swig,使用””隐藏之间的代码即可,或者直接删除。

737e159748215779dddab7d4197ee12f.png

​ 运行截图:

25e310bf525cb8abc18a82aa6186b721.png

完!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

漫画:三种 “奇葩” 的排序算法

在算法的世界里&#xff0c;有许多高效率的排序算法&#xff0c;比如快速排序、归并排序、桶排序......它们大大提高了程序的性能。但是&#xff0c;也有一些比较奇葩的排序算法&#xff0c;它们既不能做到高效率&#xff0c;也没有很好的可读性。那它们存在的意义是什么呢&…

常用c语言小程序,c语言经典小程序汇总大全

网上有很多的人说编程有多么多么无聊&#xff0c;其实&#xff1a;不要管别人怎么说&#xff0c;别人说什么&#xff0c;做你自己喜欢做的事就好。坚持下来&#xff0c;你会发现编程的乐趣的。当然&#xff0c;如果你觉得学习编程语言很痛苦&#xff0c;坚持了一段时间后无果&a…

opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法

一、引言在《OpenCV阈值处理函数threshold处理32位彩色图像的案例》介绍了threshold 函数&#xff0c;但threshold 的图像阈值处理对于某些光照不均的图像&#xff0c;这种全局阈值分割的方法并不能得到好的效果。图像阈值化操作中&#xff0c;我们更关心的是从二值化图像中分离…

让你不再害怕指针.pdf

今天推荐一本书&#xff0c;是讲解指针的&#xff0c;C 语言理解指针应该算一个重点&#xff0c;也算是一个难点&#xff0c;这个pdf 文章总结非常好&#xff0c;推荐给大家。想获取书籍Pdf的同学&#xff0c;请在公众号后台回复 「指针」&#xff0c;希望这本书籍让你们不再害…

revit如何根据坐标进行画线_在工程设计中如何根据工艺阀门的结构与特点来进行设计呢?...

在工程设计的实践中发现&#xff0c;因为阀门的种类繁多&#xff0c;每种阀门都有自己的特点&#xff0c;工程设计人员&#xff0c;尤其年轻的设计者由于不太了解阀门的结构和特点往往选错阀门&#xff0c;造成设计失误。系统的了解阀门&#xff0c;对工程设计人员(不是阀门设计…

c语言中二维数组中产生随机数,C语言中是如何进行随机数生成的[多图]

C语言中是如何进行随机数生成的.C语言是编程人员经常会到的一款计算机编程语言,有的朋友想知道怎样使用C语言进行随机数生成,那么就快随小编一起来看看这篇C语言中是如何进行随机数生成的吧!其中不仅为大家介绍了生成随机数的函数,还提供了测试代码!同时为大家附带了随机数字生…

一文带你了解V4L2

1、什么是v4l2V4L2&#xff08;Video4Linux的缩写&#xff09;是Linux下关于视频采集相关设备的驱动框架&#xff0c;为驱动和应用程序提供了一套统一的接口规范。V4L2支持的设备十分广泛&#xff0c;但是其中只有很少一部分在本质上是真正的视频设备&#xff1a;•Video captu…

Linux 僵尸进程可以被杀死吗?

在 Unix 进程模型中&#xff0c;父进程和其所产生的子进程是异步运行的&#xff0c;所以如果子进程在结束后&#xff0c;会留下一些信息需要父进程使用 wait / waitpid 来接收。而如果父进程太忙了&#xff0c;没有调用 wait / waitpid 的话&#xff0c;子进程就会变成…

jstl 获取 javascript 定义的变量_前端开发大牛完整总结出了JavaScript 难点 +最新web前端开发教程...

1. 立即执行函数立即执行函数&#xff0c;即Immediately Invoked Function Expression (IIFE)&#xff0c;正如它的名字&#xff0c;就是创建函数的同时立即执行。它没有绑定任何事件&#xff0c;也无需等待任何异步操作&#xff1a;立即执行函数function(){…}是一个匿名函数&…

MySQL 5.6.20-enterprise-commercial的参数文件位置问题

今天在折腾MySQL的参数文件时&#xff0c;突然发现MySQL 5.6.20-enterprise-commercial-advanced-log这个版本数据库的参数文件my.cnf的位置有点奇怪&#xff0c;如下所示&#xff1a; [rootDB-Server ~]# mysql --help | grep my.cnforder of preference, my.cnf, $MYSQL_TCP_…

最害怕的是,不知道想要什么

生活在现在的时代&#xff0c;你要是出去吹牛说你与世无争&#xff0c;你看破红尘&#xff0c;你就想开心上班啥也不图&#xff0c;别人要不以为你是一个傻子&#xff0c;要不就以为你是一个家财万贯的主&#xff0c;特别是现在&#xff0c;从2015年开始&#xff0c;房价像吃了…

c语言gcc汇编文件,[汇编]gcc生成汇编.s文件 $ gcc -Og -S sum.c /$ gcc -Og -S -masm=intel sum.c 与 反汇编 objdump...

目录- C语言源码文件&#xff1a;sum.c- gcc 生成的汇编语言文件 sum.sx86-64 AT&T 语法格式x86-64 Intel格式- 反汇编 objdump3.1 输出 AT&T格式 objdump -d sum3.2 输出 Intel格式 objdump -M intel -d sumC语言源码文件&#xff1a;sum.c加法&#xff1a;c a b#in…

diff算法_详解 React 16 的 Diff 策略

这是我 Deep In React 系列的第二篇文章&#xff0c;如果还没有读过的强烈建议你先读前一篇&#xff1a;详谈 React Fiber 架构(1)。前言我相信在看这篇文章的读者一般都已经了解过 React 16 以前的 Diff 算法了&#xff0c;这个算法也算是 React 跨时代或者说最有影响力的一点…

实力剖析一个经典笔试题

昨天群里有个同学发了这样一个题目过来&#xff0c;这个题目应该是嵌入式笔试经典题目了&#xff0c;如果是校招的话&#xff0c;笔试不考这个题目&#xff0c;都觉得有点说不过去。#include <stdio.h>int main() {int a[5] {1,2,3,4,5};int *ptr1 (int *)(&a 1);i…

点击开启此虚拟机时,出现“该虚拟机似乎正在使用中”问题

VMware是常用的虚拟机工具&#xff0c;受到广大群众的喜爱&#xff0c;有用户在意外断电或非正常关机&#xff08;直接关掉进程&#xff09;出现VMware虚拟机无法启动的情况&#xff0c;接下来让我们看看如何解决这一问题。 1.点击我的计算机的windows 10*64后弹出对话框&#…

get请求可以传body吗_都9102年了,GET和POST的区别掌握了没有?

1 前言最近看了一些同学的面经&#xff0c;发现无论什么技术岗位&#xff0c;还是会问到 get 和 post 的区别&#xff0c;而搜索出来的答案并不能让我们装得一手好逼&#xff0c;那就让我们从 HTTP 报文的角度来撸一波&#xff0c;从而搞明白他们的区别。2 标准答案在开撸之前吗…

玩转 Rockchip 的开发板,这些信息你要知道

RK 的处理器Rockchip 在江湖中简称 RK&#xff0c;是一家总部坐落于福建福州的 SOC 设计公司。RK 基于 Arm cortex-A 内核设计的一系列 SOC &#xff0c;宛如苍穹中一颗颗明星&#xff0c;在国内外的产业界和极客手中闪闪发光&#xff0c;其受欢迎程度超过了很多人的想象。登录…

htmlcss实例小项目_小程序websocket心跳库——websocket-heartbeat-miniprogram

前言在16年的时候因为项目接触到websocket&#xff0c;而后对心跳重连做了一次总结&#xff0c;写了篇博客&#xff0c;而后18年对之前github上的demo代码进行了再次开发和开源&#xff0c;最终封装成库。如下&#xff1a;博客&#xff1a;https://www.cnblogs.com/1wen/p/5808…

C语言,画吃豆人剖析

接上一篇文章&#xff0c;很多人还是搞不清楚ptr1[-1]是怎么回事&#xff0c;可以看看这篇文章&#xff0c;看完的同学还是多转发的&#xff0c;让更多的人看到。一道90%都会做错的指针题偶然的一次机会在知乎上看到这个代码&#xff0c;里面涉及的C语言点我觉得很酷&#xff0…

mit数据集_DriveSeg:动态驾驶场景分割数据集

【导读】麻省理工学院和丰田发布DriveSeg数据集以加速自动驾驶研究&#xff0c;DriveSeg包含许多常见道路对象的精确像素级表示&#xff0c;并通过连续视频驾驶场景的镜头。我们如何训练自动驾驶模型&#xff0c;以加深对周围世界的认识&#xff1f;计算机能否从过去的经验中学…