分享一款博客园皮肤及其解决方案


前言

要分享的皮肤就是您现在看到的这款,虽然还有不少瑕疵,但是这个皮肤也算是大致完成。

本皮肤完全使用css样式,无需申请js权限,对移动端的也做了相应处理,也许您可以从其
中得到些借鉴。

当然皮肤其实是次要的,主要是分享一下这个解决方案。

这里是项目地址:cnblogs-skin

2020-1-13更新 。

痛点

很多人都会使用博客园的css修改自己博客的样式,但是说实话其实在修改的过程中会存在不少麻烦。

以我个人作为例子,最开始我使用最原始的方式修改样式。

同时开两个页面,一边修改样式,一边刷新页面。

这样导致的问题是操作麻烦,效率低,遇到缓存的情况还要强制刷新。特别是当遇到样式大改的时候还可能出现样式冲突。

所以就有了以下的解决方案。

另外:

如果是前端新手或者后端,即使对接下来的解决方案不太了解,也依然可以简单使用本解决方案制作博客园的皮肤。(前提是懂得基本的webpack,这里是入门教程)

解决方案

这里的解决方案实际上是借助webpackwebpack-dev-server来做一个本地的服务器来解决问题。

关于这部分就不讲了,相信很多人都了解怎么做的。

总之通过webpack我们可以实现模块化开发,通过webpack-dev-server我们可以实时看到样式修改的效果。(当然这里也用了那个热加载的插件)

因为博客园可供修改的样式可以影响到三个页面:

  • 博客列表页
  • 博客分类列表页
  • 博客详情页

所以还得借助HtmlWebpackPlugin,生成一个多页面应用,这样使得我们在修改皮肤样式的时候可以随时切换。

那么为了样式结构更简单清晰,处理更方便,也引入了LESS

并且,为了之后整体样式风格的改变,将一些常用的颜色定义为变量提取到了color.less中。

虽然本皮肤暂时只有精灵球跳动那一个动画,但是还是单独提取了一个animation.less文件用来存放动画。

最后可以通过执行webpack命令,生成main.css文件,那里就是最后可以使用的样式了。

坑点及解决方案

  • 因为博客园的图片没法跨域,所以在本地生成可能存在无法加载一些图片的问题。
    * 解决方案:在chrome下,打开博客园中自己博客的页面,这样会加载到那些图片资源,然后再运行解决方案,此时可以加载到这些图片
  • 因为无法修改博客园原有的html结构,将标题从文字修改成了头像时,标题文字不会消失,所以需要将标题设为空,而页面上显示的标题实际上是写在样式里的
    * 更好的解决方案:实际上博客园可以定制页头和页尾,我只是单纯懒得多写代码,所以通过取巧的方式绕过了。
  • 记得禁用掉博客园的默认样式哦,我还以为blank就是什么样式都没有,哪知道还是会有样式。

总结

也会在简书写点东西,但是还是更喜欢博客园,因为可定制化更强一点。

完整地写一个皮肤出来其实还是个很有成就感的事情。

另外:

虽然都是用markdown格式书写博客,但是有时候在简书写的markdown文件,直接复制粘贴过来样式会表现得比较奇怪。这个以后有时间再修改吧。

最后还有一点小尴尬,因为按照固定的格式去书写博客才能呈现完美的效果,所以之前一些博客在二级标题和图片上可能存在样式问题,不过倒是不影响阅读。