博客搭建起来后,总感觉默认的 classic 主题有些呆板,而且字体太大,阅读体验不是很好。于是就尝试着更改下主题。把 Octopress 的推荐主题浏览了一遍后发现 Greyshade 的效果还不错。但是安装后发现该主题有些细节还是不尽如人意,比如字体大小、行高、代码高亮背景,等等。经过一番调试后总算基本满意了,但是用移动设备打开后,顿时碎了。它的样式对移动设备真是差劲,比如代码高亮字体大小不一、左右滑动后右边有一条不窄的黑边并且消不去、左侧边栏在 iPad 上不能很好的适应,等等等等。相比之下 Octopress 的默认主题对移动设备的支持就要好太多,几乎完美,而且由于样式不花哨,很好的突出了内容主体。也许这就是这个主题的设计初衷吧,以内容为主体,淡化样式。对于博客来说,阅读体验才是重中之重,而且在这个移动互联网的时代,对移动设备的支持也必须到位。出于以上考虑,我又换回了默认的 classic 主题,但决定对其进行个性化改造。
基本方法
主要使用到 Chrome 的审核元素
工具,通过它定位到想要修改的地方,然后根据相应的css
标记或关键字(比如title什么的),在命令行中通过grep "your_keyword" ./ -R
在source
或sass
目录下定位到相应的文件,然后对其进行修改。这里的修改分为对网页模板的修改和对样式的修改,之后会提到。
另外说一个关于主题切换的小技巧。比如你通过修改源文件,或者通过修改第三方的主题,配置出了一套新的主题,但感觉不是很满意。此时如果通过rake install
再去安装别的主题,就会把之前的主题给覆盖掉(关于该命令详细做了什么,参考根目录下的Rakefile
文件)。你可能想把两套主题都保留着,毕竟是用心配置出来的嘛。这时你可以将每套主题的source
或sass
目录做个备份,想要切换到哪个主题时,就把为该主题所备份的上述两个目录拷贝到根目录下,然后执行如下两个操作:
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 官方文档,另外提供几个参考链接: