目录

Hugo 的 LoveIt 主题修改及增强(三)

当我的博客有了 logo 和网站图标后,总还是感觉少了点什么,所以逛了逛别的大佬建的站,发现了许多好玩的玩意儿,在这里记录一下,本篇为第三篇。

由于内容比较多,目前暂时分为四个部分,链接如下:

Hugo 的 LoveIt 主题修改及增强(一)

Hugo 的 LoveIt 主题修改及增强(二)

Hugo 的 LoveIt 主题修改及增强(三)

Hugo 的 LoveIt 主题修改及增强(四)

本文将大量修改_custom.scsscustom.js文件,关于_custom.scsscustom.js文件的引入,可见 Hugo 的 LoveIt 主题修改及增强(二)


双击生成颜表情

your_site\static\js\custom.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
42
43
44
45
46
47
48
49
/* 返回随机颜色 */
function randomColor() {
	return "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")";
}

/* 点击生成字符特效 */
var a_idx = 0;
var a_click = 1;
  /* 生成的字符内容 */
var a = new Array("乀(ˉεˉ乀)","𓂃𓂃𓂃𓊝𓄹𓄺𓂃𓂃𓂃","˘ᗜ˘","(╥╯^╰╥)","╰(*´︶`*)╯","✧(◍˃̶ᗜ˂̶◍)✩","。◕‿◕。",
"(๑ت๑)","(๑❛ᴗ❛๑)","w(゚Д゚)w","Σ( ° △ °|||)︴","(⊙ˍ⊙)","(๑ˉ∀ˉ๑)","<( ̄︶ ̄)>","╰(*°▽°*)╯","✿",
"(,,•́ . •̀,,)","վ'ᴗ' ի","(◔◡◔)","⚝","₍ᐢ. ֑ .ᐢ₎");
jQuery(document).ready(function($) {
    $("body").click(function(e) {
		/* 点击频率,点击几次就换文字 */
		var frequency = 2;
		if (a_click % frequency === 0) {
			
			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": 9999,
				"top": y - 20,
				"left": x,
				"position": "absolute",
				"font-weight": "bold",
				"color": randomColor(),
				"-webkit-user-select": "none",
				"-moz-user-select": "none",
				"-ms-user-select": "none",
				"user-select": "none"
			});
			$("body").append($i);
			$i.animate({
				"top": y - 180,
				"opacity": 0
			},
			1500,
			function() {
				$i.remove();
			});
			
		}
	a_click ++;
		
    });
});

离开进入网站的标题变化

可以发现,若离开我的网站去其他页面,那么我的网站的标题和图标会发生变化。若再次回到我的网站,则标题和图标会再次发生变化。想要达到这个效果,只需在your_site\static\js\custom.js文件中添加如下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
/* 离开当前页面时修改网页标题,回到当前页面时恢复原来标题 */
window.onload = function() {
	var OriginTitile = document.title;
	var titleTime;
	document.addEventListener('visibilitychange', function() {
	  if(document.hidden) {
		$('[rel="icon"]').attr('href', "/failure.ico");
		$('[rel="shortcut icon"]').attr('href', "/failure.ico");
		document.title = '哦~该回码头了';
		clearTimeout(titleTime);
	  } else {
		$('[rel="icon"]').attr('href', "/favicon.ico");
		$('[rel="shortcut icon"]').attr('href', "/favicon.ico");
		document.title = '哈~又整到薯条了';
		titleTime = setTimeout(function() {
		  document.title = OriginTitile;
		}, 2000);
	  }
	});
  }

其中文字部分改为自己喜欢的就可以了,而至于网站图标文件favicon.icofailure.ico如果不清楚,具体可见我之前的文章 Hugo 的美化

这里只简单的说一下:一般而言,我们会把网站图标放到your_site\static\路径下,而在当前的目的下,我们可以只调用48*48的.ico文件作为显示图标。此外,favicon.ico一般是我们原来的网站图标,所以我们只需要在创建一个failure.ico作为离开页面时显示的图标即可。


修改二级标题,行内代码和分割线等样式

为了使文章的可读性更强,在这里最好修改一下 LoveIt 主题的文章样式。

二级标题的修改

原主题的二级标题我不好评价,它跟下一级的标题几乎区分不开,这导致文章看起来没有条理。因此在这里我们将修改二级标题的样式以做区分。

找到your_site\assets\css\_custom.scss文件,在里面添加如下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
/* 标题 */
.page.single h2 {
  box-shadow: rgb(95, 90, 75) 0px 0px 0px 1px, rgba(10, 10, 0, 0.5) 1px 1px 6px 1px;
  color: rgb(255, 255, 255);
  font-family: 微软雅黑, 宋体, 黑体, Arial;
  font-weight: bold;
  line-height: 1.3;
  text-shadow: rgb(34, 34, 34) 2px 2px 3px;
  background: rgb(43, 102, 149);
  border-radius: 6px;
  border-width: initial;
  border-style: none;
  border-color: initial;
  border-image: initial;
  padding: 7px;
  margin: 18px 0px 18px -5px !important;
}

行内代码

原主题的行内代码能用,但只能用一点点,实在是与正文区分不开,所以在这修改一下它的样式。

找到your_site\assets\css\_custom.scss文件,在里面添加如下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
/* 行内代码块 */
code {
  margin: 0 .2rem;
  font-size: .9em;
  border: 1px solid #d6d6d6;
  border-radius: .2rem;
}

/* 预格式代码块(用tab键插入的代码块) */
pre code {
  margin: 0;
  border: none;
  font-size: .875rem;
}

/* 标题里的代码块样式 */
.page.single .content>h2 code {
  color: #f7ab01;
  background: transparent !important;
  border: none;
}

分割线

在原主题中分割线几乎看不到,这里修改一下。

找到your_site\assets\css\_custom.scss文件,在里面添加如下内容:

1
2
3
4
5
/* 分隔线 */
hr {
  border: none;
  border-bottom: 2px dashed #7a7a7a !important;
}

页脚分割线

页脚内容与其他内容连在一起有点杂乱,因此添加一个页脚的分割线还是很有必要的。

找到your_site\assets\css\_custom.scss文件,在里面添加如下内容:

 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
/* 页脚分割线 */
.footer {
  display: block;
border-top-width: 3px;
  border-top-style: solid;
  border-top-color: #96c1db;
  position: relative;
  z-index: -1;
  max-width: 800px;
  width: 60%;
  margin: .5rem auto 0 auto;
padding-left: 0rem;
padding-right: 0rem;
}
@media only screen and (max-width: 1440px) {
  .footer {
      width:54.5%
  }
}
@media only screen and (max-width: 1200px) {
  .footer {
      width:50.5%
  }
}
@media only screen and (max-width: 960px) {
  .footer {
      width: 77%
  }
}
@media only screen and (max-width: 680px) {
  .footer {
      width: 95%
  }
}

首页头像旋转

这是一个没什么用的功能,但是好玩。

找到your_site\assets\css\_custom.scss文件,在里面添加如下内容:

 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
/* 头像旋转 */
.home .home-profile .home-avatar img {
    width: 5rem;

  /* 设置循环动画
  [animation: 
	(play)动画名称
	(2s)动画播放时长单位秒或微秒
	(ease-out)动画播放的速度曲线为以低速结束 
	(1s)等待1秒然后开始动画
	(1)动画播放次数(infinite为循环播放) ]*/
 
  /* 鼠标经过头像旋转360度 */
  -webkit-transition: -webkit-transform 1.0s ease-out;
  -moz-transition: -moz-transform 1.0s ease-out;
  transition: transform 1.0s ease-out;
    &:hover {
      /* 鼠标经过停止头像旋转 
      -webkit-animation-play-state:paused;
      animation-play-state:paused;*/

      /* 鼠标经过头像旋转360度 */
      -webkit-transform: rotateZ(360deg);
      -moz-transform: rotateZ(360deg);
      transform: rotateZ(360deg);
    }
}

更新时间设置

原主题是有最近更新时间参数的,只不过藏的比较深,一般不显示。但实际上,更新时间是要比发布时间更好用的(毕竟老文章改改也就成新文章了)。

首页显示最近更新时间

虽然我们有最近更新时间,但首页并不显示,这好吗?这不好!所以我劝年轻人们都把它加上。

your_site/themes/LoveIt/layouts/_default/summary.html复制到your_site/layouts/_default/路径下,然后打开your_site/layouts/_default/summary.html文件,找到如下内容:

1
2
3
4
5
        {{- with .Site.Params.dateFormat | default "2006-01-02" | .PublishDate.Format -}}
            &nbsp;<span class="post-publish">
                {{- printf `<time datetime="%v">%v</time>` . . | dict "Date" | T "publishedOnDate" | safeHTML -}}
            </span>
        {{- end -}}

把它修改为下面的内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
        {{- with .Site.Params.dateFormat | default "2006-01-02" | .PublishDate.Format -}}
            &nbsp;<span class="post-publish">
                {{- printf `<time datetime="%v">%v</time>` . . | dict "Date" | T "publishedOnDate" | safeHTML -}}, 
            </span>
        {{- end -}}

        {{- with .Site.Params.dateFormat | default "2006-01-02" | .Lastmod.Format -}}
            &nbsp;<span class="post-publish">
                {{- printf `<time datetime="%v">%v</time>` . . | dict "Date" | T "updatedOnDate" | safeHTML -}}, 
            </span>
        {{- end -}}

显示最近更新的十篇文章

一般来说,归档页面只有按发布时间排序的列表,但是我们最新的动态往往会涉及到修改以前的文章,所以我们最好加一栏用来显示最近更新的文章。

首先,在your_site/config.toml配置文件中添加新参数:

1
2
3
[params.section]
  # 显示最近更新文章的数量
  lastUpdatedSize = 10

然后,把your_site/themes/LoveIt/layouts/_default/section.html复制到your_site/layouts/_default/路径下,然后打开your_site/layouts/_default/section.html文件,找到如下内容:

1
{{- /* Paginate */ -}}

在它的上面添加如下内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{{- /* Last Modified */ -}}
{{- $lastUpdatedSize := .Site.Params.section.lastUpdatedSize -}}
{{- if $lastUpdatedSize -}}
	{{- if .Pages -}}
		{{- $pages := .Pages.ByLastmod.Reverse -}}
		<h3 class="group-title">{{ T "RecentUpdate" -}} <sup>{{- $lastUpdatedSize -}}</sup></h3>
		{{- range first $lastUpdatedSize $pages -}}
			<article class="archive-item">
				<a href="{{ .RelPermalink }}" class="archive-item-link">
					{{- .Title -}}
				</a>
				<span class="archive-item-date2">
					{{- "2006-01-02" | .Lastmod.Format -}}
				</span>
			</article>
		{{- end -}}
	{{- end -}}
{{- end -}}

接着来修改国际化文件,把your_site\themes\LoveIt\i18n\zh-CN.toml复制到your_site\i18n\路径下,打开your_site\i18n\zh-CN.toml文件,添加如下内容:

1
2
[RecentUpdate]
  other = "最近更新"

如果还设置了其他语言,那么我们只需将这个参量添加到对应的文件,再把 other 的内容改掉即可。


然后在your_site/assets/css/_custom.scss中添加如下内容:

1
2
3
.archive-item-date2 {
  color: #7c7c88;
}

最后,为了区分开发布时间和最近更新时间,我们要在每篇文章中添加最近更新时间的 meta。把your_site/themes/LoveIt/layouts/posts/single.html复制到your_site/layouts/posts/路径下,然后打开your_site/layouts/posts/single.html文件,找到如下内容:

1
2
3
{{- with .Site.Params.dateformat | default "2006-01-02" | .PublishDate.Format -}}
    <i class="far fa-calendar-alt fa-fw"></i>&nbsp;<time datetime="{{ . }}">{{ . }}</time>&nbsp;
{{- end -}}

将其改为:

1
2
3
4
5
6
{{- with .Site.Params.dateformat | default "2006-01-02" | .PublishDate.Format -}}
    <i class="far fa-calendar fa-fw"></i>&nbsp;<time datetime="{{ . }}">{{ . }}</time>&nbsp;
{{- end -}}
{{- with .Site.Params.dateformat | default "2006-01-02" | .Lastmod.Format -}}
    <i class="far fa-calendar-plus fa-fw"></i>&nbsp;<time datetime="{{ . }}">{{ . }}</time>&nbsp;
{{- end -}}

参考文章:

  1. NexT主题美化与博客功能增强 · 第二章
  2. LoveIt主题美化与博客功能增强 · 第四章
警告
本文最后更新于 July 31, 2023,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系删除。
若文章帮助到了您,就不妨点一下👇广告,支持博主吧!