Matrixzk’s Blog

keep moving

Octopress 主题修改小记

Nov 3rd, 2014

博客搭建起来后,总感觉默认的 classic 主题有些呆板,而且字体太大,阅读体验不是很好。于是就尝试着更改下主题。把 Octopress 的推荐主题浏览了一遍后发现 Greyshade 的效果还不错。但是安装后发现该主题有些细节还是不尽如人意,比如字体大小、行高、代码高亮背景,等等。经过一番调试后总算基本满意了,但是用移动设备打开后,顿时碎了。它的样式对移动设备真是差劲,比如代码高亮字体大小不一、左右滑动后右边有一条不窄的黑边并且消不去、左侧边栏在 iPad 上不能很好的适应,等等等等。相比之下 Octopress 的默认主题对移动设备的支持就要好太多,几乎完美,而且由于样式不花哨,很好的突出了内容主体。也许这就是这个主题的设计初衷吧,以内容为主体,淡化样式。对于博客来说,阅读体验才是重中之重,而且在这个移动互联网的时代,对移动设备的支持也必须到位。出于以上考虑,我又换回了默认的 classic 主题,但决定对其进行个性化改造。

基本方法

主要使用到 Chrome 的审核元素工具,通过它定位到想要修改的地方,然后根据相应的css标记或关键字(比如title什么的),在命令行中通过grep "your_keyword" ./ -Rsourcesass目录下定位到相应的文件,然后对其进行修改。这里的修改分为对网页模板的修改和对样式的修改,之后会提到。

另外说一个关于主题切换的小技巧。比如你通过修改源文件,或者通过修改第三方的主题,配置出了一套新的主题,但感觉不是很满意。此时如果通过rake install再去安装别的主题,就会把之前的主题给覆盖掉(关于该命令详细做了什么,参考根目录下的Rakefile文件)。你可能想把两套主题都保留着,毕竟是用心配置出来的嘛。这时你可以将每套主题的sourcesass目录做个备份,想要切换到哪个主题时,就把为该主题所备份的上述两个目录拷贝到根目录下,然后执行如下两个操作:

rake clean          # 清除缓存
rake generate       # 重新生成网站

这时用rake preview看下效果。可能需要多刷新几次才能看到新的效果,原因还是缓存,be patient~

忍不住想说一下我遇到的一个坑。在 Octopress 源码中,注释代码应该这样:

<!--
我被注释掉了 :]
<!-->

而不是这样:

<!--
我被注释掉了 :]
-->

对当时的我来说,这真是个坑啊。不要告诉我你没发现区别 :]

修改网页模板

这里主要包括对网页的头标签、顶部、导航栏、底部和侧边栏的修改。相关目录如下:

octopress/
|__ source/
	|__ _includes/  	# 主要用到的子模板
		|__ custom/     # 对 head, header, navigation, footer 和 sidebar 的自定义模板
		|__ asides/     # 侧边栏的子模板
		|__ post/       # 所发布文章的时间、作者等元信息,以及分享评论等子模板

比如,想要修改网页的 <head> 标签下的信息,对/source/_includes/custom/head.html进行相应修改即可。想要修改网页顶部(导航栏上边)的内容,修改/source/_includes/custom/header.html即可。如果想在导航栏中添加新的标签,修改/source/_includes/custom/navigation.html文件即可。

可参考官方文档 Theming & Customization

修改网页样式

这里主要对网页的字体、字号、颜色、背景图、行间距和边框间距等样式进行修改。相关目录如下:

octopress/
|__ sass/
	|__ base/
	|	|__ _theme.scss      # 用到的所有 color 都定义在这里
	|	|__ _layout.scss     # 响应式布局在这里定义
	|	|__ _solarized.scss  # 主要定义文章的排版,包括字体、字号、行间距和字体颜色引用等
	|	
	|__ custom/              # 修改这里的文件可以轻松得进行样式自定义
		|__ _colors.scss     # 这里可通过重写 base/_theme.scss 中的颜色变量来改变相应的颜色
		|__ _styles.scss     # 该文件在最后时刻引入,因此在这里可重写网页外观的所有样式
		|__ _layout.scss     # 在这里可通过重写 base/_layout.scss 中的变量改变布局

Octopress用到的所有颜色都通过Sass变量在/sass/base/_theme.scss中定义着。如果要修改某处颜色,最好是在sass/custom/_colors.scss中重写在sass/base/_theme.scss中所定义的相应颜色变量。这里很多 color 是使用Sass’s color functions获取的。

注意,以后要修改其他样式时,也最好遵守这样一个原则,尽量在sass/custom/目录下修改相应的文件。因为sass/custom/中的文件是在sass/base中文件之后被读取的,因此sass/custom/目录的内容决定着最终的样式。而且当通过rake update更新 Octopress 框架源码时,sass/custom/目录是不会被覆盖的,也就是你之前所做的自定义样式依然会保留,而sass/base目录下的文件会全部被更新后的 Octopress 框架源码给覆盖掉。

可参考官方文档Styles

参考链接

基于上述方法基本就可以对你的博客外观进行随心所欲的修改了,如果再懂点儿css和sass知识就会更得心应手,关于 css 和 sass 参考这里

除了非常棒的 Octopress 官方文档,另外提供几个参考链接:

返回顶部