博客有点丑,魔改优化来一波🛠️

幽灵公主-佩罗娜

前言

基于 HexoGitHub 服务搭建了博客,手动同步了一篇文章后发现页面的整体效果不是很好,也有一些小问题, 基于实际情况魔改优化来了一波后效果好多了,接下来就把魔改博客的实践过程和思路分享一下

博客文章中的掘金服务的图片不展示

由于博客是先在掘金上写的,图片文件也是上传到到掘金的文件服务器 https://p9-juejin.byteimg.com/ ,手动同步文章的时候发现 hexo 博客服务中的文章里面的图片不显示,如下效果

原因分析

由于图片资源是外部链接,发现图片资源的请求 403

HTTP 403状态码表示: 服务器拒绝请求,通常是因为缺少访问权限

搜索引擎 Bing,Google 了一波,找到了解决方案,给当前网站的 <head></head> 标签里添加 meta 标签,设置 name="referrer" content="no-referrer" ,目的是不发送请求头,这样就避开权限问题了

name 属性,<meta> 元素提供的是文档级别(document-level)的元数据,应用于整个页面。

namecontent 属性可以一起使用,以名 - 值对的方式给文档提供元数据,其中 name 作为元数据的名称,content 作为元数据的值。 在标准元数据名称中查看 HTML 规范等规范中定义的标准元数据名称。

添加 meta 标签

在默认 landscape 主题里,meta 标签添加在 /themes/landscape/layout/_partial/head.ejs 文件里

添加完 meta 标签后,重启服务图片显示就正常了

注意!

如果是设置的其他主题,需要在 themes 对应的主题下文件中找到 <head></head> 标签所在的文件,添加 <meta> 标签

关于外链图片不展示,也可以手动将图片添加到项目里,使用相对路径的方式引用图片

语言调整

在根目录下的 _config.yml 文件中修改 languagezh-CN

注意!

根目录下的 _config.yml 中的 language 的值对应的是当前应用主题下的 landscape/languages 下面的配置文件,如 landscape 主题下的 languages 文件夹下的中文配置文件是 zh-CN.yml,对应的 language 的配置就是 zh-CN,如果有的主题里面没有中文配置文件,那么就需要自己手动创建一个

themes/landscape/_config.yml 文件中修改 menu 下面的两个配置修改为中文菜单,不同的菜单对应不同的路由地址

yml 复制代码
# Header
menu:
  主页: /
  文章列表: /archives
rss: /atom.xml

不同的 _config.yml 下的配置修改的地方不一样,下图做了简单的标注

调整首页背景图

_config.yml 文件中没有找到背景图片相关的设置,我的思路是这样的,既然博客的页面主题是根据 /themes/landscape 下面的文件渲染出来的,那么默认主页图片应该也会出现在对应的文件里设置的,从页面显示入手查看

先查看主页图片的页面元素情况

通过分析页面元素,了解到了主页图片是用一个 idbannerdiv 显示的,通过 divbackground 属性显示了一个相对路径的图片,既然是相对路径,说明图片在项目仓库里存着,通过 images/banner.jpg 得知图片路径和图片名称,去项目里找一下,在 /themes/landscape/source/css/images/banner.jpg 下面找到了主页图片

后来在 Gtihubissues 区里面也看到了关于主页图片更换的其他网友的回复,也是在 themes/landscape/source/css/images 路径下修改图片文件

疑问?

这个图片地址资源放的感觉有点不专业, css 下面放 images 和其他功能作用的目录和文件,images 这些资源目录应该和 css 平级,都放到 source 下面

以上只是我的个人观点,可能作者当时有特殊的考虑

还发现一个有意思的地方, hexo-theme-landscape官方已经把这个问题作为配置解决了,并且已经合并了,查了一下版本发现官方正式版本已经 v1.0.0 了,我用的默认的版本还是 v0.0.3,怪不得啥啥都没有,这那不支持.....

找到主页图片位置了,开始换图片,由于标题的字体颜色是白色,因此背景需要一张深色背景,替换成海贼王中的 幽灵公主-佩罗娜 人物图,效果如下

在大屏幕的图片比例看起来效果不太好,在笔记本的屏幕中能达到预期的效果

通过查看主页图片的 css 样式,了解到了主页的背景图片使用的 background-size: cover; 进行的图片设置,直接改一下 background-size 的属性值测试了一下效果,发现 contain 的效果还不错

background-size 属性值

cover

缩放背景图片以完全覆盖背景区,可能背景图片部分看不见。和 contain 值相反,cover 值尽可能大的缩放背景图像并保持图像的宽高比例(图像不会被压扁)。该背景图以它的全部宽或者高覆盖所在容器。当容器和背景图大小不同时,背景图的 左/右 或者 上/下 部分会被裁剪。

contain

缩放背景图片以完全装入背景区,可能背景区部分空白。contain 尽可能的缩放背景并保持图像的宽高比例(图像不会被压缩)。该背景图会填充所在的容器。当背景图和容器的大小的不同时,容器的空白区域(上/下或者左/右)会显示由 background-color 设置的背景颜色。

在项目的 /themes/landscape 目录下搜索 background-size: cover 找到了主页图片的样式代码,在 /themes/landscape/source/css/_partial/header.styl 文件的 #banner

background-size 的值改成 contain,重启服务,博客的主页图片效果就改好了

Pages 服务打包出错

在本地魔改了一波样式和配置后,提交代码到 GitHub 竟然报错了,查看错误提示 hexo not found

先本地测试一下,本地执行了线上的命令,一切正常,重新清理缓存后执行命令也正常,本地执行 npm run cleannpm run build 后提交发现还是报错,在 pages.yml 中添加 npm cache clean --force 命令还报错,最后又仔细看了报错内容和部署脚本,发现把 Cache NPM dependencies 这个命令删除了部署就好了

博客地址,欢迎参观

gywgithub.github.io/gywgithub/

写在最后

到这里,个人博客的魔改就告一段落了,整体来看,改的地方也好几个点,拆开看都是各种各样的小问题,静下心来,一个个排查,都解决完以后还是挺开心的

欢迎大家讨论交流,如果喜欢本文章或感觉文章有用,用你那发财的小手点赞、收藏、关注再走呗 ^_^

微信公众号:草帽Lufei

相关推荐
腾讯TNTWeb前端团队4 小时前
helux v5 发布了,像pinia一样优雅地管理你的react状态吧
前端·javascript·react.js
范文杰7 小时前
AI 时代如何更高效开发前端组件?21st.dev 给了一种答案
前端·ai编程
拉不动的猪7 小时前
刷刷题50(常见的js数据通信与渲染问题)
前端·javascript·面试
拉不动的猪7 小时前
JS多线程Webworks中的几种实战场景演示
前端·javascript·面试
FreeCultureBoy8 小时前
macOS 命令行 原生挂载 webdav 方法
前端
uhakadotcom8 小时前
快速开始使用 n8n
后端·面试·github
uhakadotcom8 小时前
Astro 框架:快速构建内容驱动型网站的利器
前端·javascript·面试
uhakadotcom9 小时前
了解Nest.js和Next.js:如何选择合适的框架
前端·javascript·面试
uhakadotcom9 小时前
React与Next.js:基础知识及应用场景
前端·面试·github
uhakadotcom9 小时前
Remix 框架:性能与易用性的完美结合
前端·javascript·面试