修复代码高亮
为了测试样式,随便找一个以前的 .md
文件粘贴到 blog 项目中渲染看看效果:
emmm,问题大了,必备的代码高亮都没有…
但是当我审查元素时发现,这竟然是已经被分词的状态,又经过一系列的资料搜集,发现 prismjs 已经预装到项目中,那么我们要做仅仅是引入 css 文件就行了。
成功添加样式!当然,除了 TWILIGHT,prismjs 还有其他样式如 COY、OKAIDIA 等,还有其他可以看官网右侧的选项。
大问题解决了然后就按照自己喜好调整样式吧~
全局自定义样式
方案 1:修改 typography.js
你可以通过在 src/utils/typography.js
中的 overrideThemeStyles
添加全局样式(当然,其更重要的作用是覆盖原有的主题样式)。
不过比较麻烦的是:
- 覆盖样式需重启服务才能生效
- 不能嵌套选择器
方案 2:使用 SCSS
除了修改 typography.js
,你还可以添加全局 CSS 文件。
因为预想到未来可能需要修改主题,方便起见应该将一些常用颜色存为变量,所以需要先安装 scss 和 gatsby 对应插件:
并在插件列表添加插件 gatsby-plugin-sass
参考 https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-plugin-sass
再次运行项目,此时已经可以正常引入 scss 文件。
css-title 这种命名方式或许很非主流,但是,不知道大家有没有这样的经历,在全局搜索时,搜一个常用词,就比如 title
,会搜出一大堆东西影响判断。所以我以 css-title 命名的目的是区分其他 title,在搜索 css-title 绝对不会出现在 js 中使用的变量,在特殊情况需要全选修改的时候可以轻松无坑地全选此 class。
其实实际上还是要两种方法都用上,因为有的地方需要覆盖原来的样式,这个时候最好用 js,而自定义的样式经常需要嵌套,使用 scss 更方便。
PS1 打包后出现的问题
明明开发环境好好的,但是打包后却出现了样式不正常的问题(第一次加载全局 css 失效,刷新才出现效果)。在 github 提了个 issue,得到了热心回答,真的感人 😭。简单来说这个问题就是上面说的最好用 js 覆盖原来样式的原因。➡️传送门
PS2 选择网络字体
字体对于中文用户是永远的痛。字符量大导致字体的体积大得可怕,严重影响用户体验。使用网络字体是其中一个方法(但是本质来说体积还是没有减小的,只是提供商可以为你高速提供字体,减少用户等待)。