【Hexo博客|Fluid主题】实现链接卡片效果

news/2024/7/3 9:16:06 标签: vue.js, hexo, 卡片链接

在这里插入图片描述

文章目录

  • 前言
  • 一、CardLink库
  • 二、配置步骤
    • 1. 添加静态js文件
    • 2. 使库文件生效
    • 3. 编写启用CardLink
    • 4. 查看效果
    • 效果与前面一致。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/06e0630f994d4d67a90e18e291c3fdc5.png#pic_center)
  • 总结


前言

今天在阅读Github新闻时,发现一个链接卡片的库登上了Hello Github,看到这个效果实在是太有趣了,就跟知乎上的链接差不多,所以打算将该功能添加到我的博客中。先看看效果
在这里插入图片描述
如果你也有类似的需求,那么就学起来吧。


一、CardLink库

CardLink是今天(2024年1月26日)在Hello Github上开源自荐的项目,他的功能很简单,就是为页面上的超链接生成卡片式链接。

仓库地址:https://github.com/Lete114/CardLink.git

在学习本节内容时,首先你要

  1. 有一个基于Hexo的博客。
  2. 安装了Fluid主题(如果不是,可以借鉴本文)。

二、配置步骤

1. 添加静态js文件

首先打开文件blog/_config.fluid.yml,也就是你的配置文件,找到static_prefix部分,添加

cardlink: https://cdn.jsdelivr.net/npm/cardlink@1.0.2/dist/

在这里插入图片描述

2. 使库文件生效

打开文件blog/themes/fluid/layout/_partial/scripts.ejs,找到<% if (is_post() || is_page()) { %>,添加

<%- js_ex(theme.static_prefix.cardlink, 'cardlink.js') %>

这里的意思是,如果是文章或者是个页面的话,执行下面的操作,也就是说执行这句代码,而这句代码的意思是执行文件

static_prefix.cardlink/cardlink.js

换句话说就是把js库文件包含了进去,导入该库。
在这里插入图片描述

3. 编写启用CardLink

首先新建文件blog/source/js/enable_cardjs.js
在这里插入图片描述
然后写入以下代码

// 注意: 只有发生跨域请求时,cardLink 才会将请求发送到代理服务器(以此可以减轻代理服务器的压力)
// 在执行 cardLink 之前预设代理服务器
cardLink.server = 'https://api.allorigins.win/raw?url='
// 为<article></article>(文章)标签下所有打开新标签窗口的a标签生成卡片链接
cardLink(document.querySelectorAll('article a[mtype|="card"]'))
// 兼容以前的文章
cardLink(document.querySelectorAll('article a[rel=noopener]'))

这段代码是在使用一个叫做 cardLink 的函数为文章中的链接生成卡片链接。这些卡片链接是在新的标签窗口中打开的。代码通过设置一个代理服务器来处理跨域请求并减轻代理服务器的压力。
第一行注释解释了什么情况下会发送请求到代理服务器。在执行 cardLink 之前,需要预设代理服务器。
第二行代码设置了代理服务器的地址,使用了 https://api.allorigins.win/raw?url=
第三行代码使用 querySelectorAll 选择了所有 <article></article> 标签下具有 mtype 属性值为 carda 标签,并为它们生成卡片链接
第五行代码使用 querySelectorAll 选择了所有 <article></article> 标签下具有 rel 属性值为 noopenera 标签,并为它们生成卡片链接
这段代码的作用是为文章中的特定链接生成卡片链接,并在新的标签窗口中打开这些链接。同时,使用代理服务器处理跨域请求以减轻代理服务器的压力。

在这段代码下,你只要在文章中按照这个格式写了

<a mtype="card" href="#链接地址">文字</a>

就能生成卡片链接
然后打开文件blog/_config.fluid.yml,找到custom_js,添加/js/enable_cardjs.js,如下

custom_js: 
  - /js/enable_cardjs.js

在这里插入图片描述
这样就启用了。

4. 查看效果

效果与前面一致。
在这里插入图片描述

总结

  1. 对于该功能,应该整合相关代码片段,这样使用体验会更好,后面有空写一个。
  2. 该库还存在一些跨于问题,一些还经过服务器才能得到数据,甚至以后可能变收费。

http://www.niftyadmin.cn/n/5347553.html

相关文章

【C++】C++入门基础讲解(一)

&#x1f497;个人主页&#x1f497; ⭐个人专栏——C学习⭐ &#x1f4ab;点击关注&#x1f929;一起学习C语言&#x1f4af;&#x1f4ab; 导读 经过一段时间的C语言学习&#xff0c;我们以及基本掌握了C语言的知识&#xff0c;今天&#xff0c;我们就开始学习C&#xff0c;…

VMware虚拟机安装优麒麟(ubuntukylin)操作系统

1.镜像下载 官网:https://www.ubuntukylin.com/ 优麒麟官网提供的宣传视频:https://www.ubuntukylin.com/upload/video/202204/1650594049260581.mp4官网提供的视频后续随着版本的更新,此视频可能失效,去官网查看最新的即可,这不是重点 1.1搜索出优麒麟官网,下载镜像 下载…

Vue禁止指定vue页面缩放适配移动端

index.html中 head标签中设置meta元数据 <meta name"viewport" content"widthdevice-width,initial-scale1,minimum-scale1,maximum-scale1,user-scalable0">这段代码是HTML中用于设置移动设备视口的meta标签。让我们逐步解释&#xff1a; widthde…

70_Pandas中获取最大最小值的行名和列名

70_Pandas中获取最大最小值的行名和列名 使用 idxmax() 和 idxmin() 方法获取 pandas.DataFrame 和 pandas.Series 中每列和行的最大值和最小值元素的行名和列名。 pandas.DataFrame 和 pandas.Series 都有 idxmax() 和 idxmin() 方法。 在此对以下内容进行说明。 获取最大值…

springmvc-dispatcherserlet

springmvc dispatcherselvet核心,负责截获请求分派给对应的处理器处理 springmvc 包括 注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理、表单标签绑定等内容 从接收请求到相应&#xff0c;springmvc框架众多组件通力合作 各司其职 有条…

2.数据结构 顺序表(自留笔记)

文章目录 一.静态顺序表&#xff1a;长度固定二.动态顺序表1.下面证明原地扩容和异地扩容代码如下&#xff1a;2.下面是写一段Print&#xff0c;打印数字看看&#xff1a;3.头插4.尾删5.头删6.越界一定会报错吗7.下标插入8.下标删除9.查找数字10.应用&#xff1a;利用顺序表写一…

【kubernets】kubelet证书单独更新

前言说明 接上一篇文章https://blog.csdn.net/margu_168/article/details/132584109关于kubernets中的证书管理。本篇文章将单独说明一下kubelet的证书更新。在1.19.16版本中&#xff0c;默认情况下使用 kubeadm alpha certs renew all 不能更新kubelet的证书&#xff0c;其他…

研究性学习背景

研究性学习是学生在教师指导下,从自然、社会和生活中选择和确定专题进行研究,并在研究过程中主动地获取知识、应用知识和解决问题的学习活动。是《普通高中课程方案(2017 年版 2020 年修订)》中“综合实践活动”的主要组成部分,是全体普通高中学生必须完成的国家必修课程,也…