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

在这里插入图片描述

文章目录

  • 前言
  • 一、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.mfbz.cn/a/349693.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows?linux?如何使用JMeter

windows?linux?如何使用JMeter 安装JMeter的步骤以GUI模式启动JMeter如何在非GUI模式下运行JMeter在linux中使用JMeter 安装JMeter的步骤 JMeter 是一个纯 Java应用程序&#xff0c;应该在任何具有兼容Java实现的系统上正确运行。 安装 JMeter 的步骤 步骤1&#xff09;安…

freeRTOS总结(六)列表及列表项

1&#xff0c;列表和列表项的简介&#xff08;熟悉&#xff09; 1、列表就是一个双向循环链表&#xff0c;列表项就是其中的节点 2、其用途就是在三大链表&#xff08;挂起、阻塞、就绪&#xff09;中将任务&#xff08;列表项&#xff09;进行排序管理。 列表是 FreeRTOS 中的…

人工智能的未来展望:自然语言处理(NLP)与计算机视觉(CV)

NLP和CV是人工智能的两个重要分支&#xff0c;它们在处理和分析信息方面有不同的侧重点和挑战。 NLP&#xff08;自然语言处理&#xff09;旨在让计算机理解和生成人类语言&#xff0c;主要处理的是文本信息。NLP的研究和应用主要集中在如何让计算机理解和生成人类语言&#x…

一、windows_Dos命令——批处理命令

一、批处理编程 winr输入cmd 1、打开记事本 notepad 回车 记事本保存文件要以.bat后缀进行保存 2、显示对应.bat的盘符位置 echo off 3、echo输出字符串内容 echo "hello world" 回车 4、pause等待任意键输入 win r 回车 输入cmd 回车 echo "hel…

深度学习道路提取代码跑自己的训练集(一)——CoANet代码

首先去下载作者发布在github上面的代码 为了防止我们之前的虚拟环境遭到破坏 我们首先重新克隆一个虚拟环境 conda create --name pytorch2 --clone pytorch接下来 1. 在mypath.py中定义自己的数据集 class Path(object):staticmethoddef db_root_dir(dataset):if dataset…

element el-date-picker type=“datetimerange“

刚写完结果需求变更了。封装的时间组件重新做。结合eacharts 。 直接上代码了 日期选择组件封装 <template><section class"warning-container"><header class"query-head"><el-form :inline"true" class"query-form…

【华为 ICT HCIA eNSP 习题汇总】——题目集8

1、在VRP平台下&#xff0c;关于各个协议的外部优先级的描述&#xff0c;正确的是&#xff08;&#xff09;。 A、OSPF路由的外部优先级是15 B、IS-IS路由的外部优先级是10 C、静态路由的外部优先级是60 D、BGP路由的外部优先级是20 考点&#xff1a;路由技术原理 解析&#xf…

普通相机标定——核心函数编写

准备工作 在前面的章节中我们完成了如下操作: 打开电脑摄像头采集标定图像编写基础功能函数,实现获取文件名、删除文件等操作 现在我们已经完成了标定图像的采集,如下图所示;接下来就要完成相机的内参标定了。 我们在编程实现中会调用OpenCV中的findChessbo…

Django 为应用定制化admin独立后台

定制后界面 在应用目录下找到admin.py并进行编辑 from django.contrib.admin import AdminSite from .models import Question,Choiceclass PollsAdminSite(AdminSite):site_header"Admin-site-header"site_title"admin-site-title"index_title"admi…

SpringBoot-yml文件的配置与读取

配置 值前边必须要有空格&#xff0c;作为分隔符 使用空格作为缩进表示层级关系&#xff0c;相同的层级左侧对齐 获取 使用Value(”${键名}”) 使用ConfigurationProperties(prefix "前缀") 1.前缀要与yml配置文件中的前缀一致 2.实体类的字段名与配置文件中的键名一…

[GXYCTF2019]BabySQli1

单引号闭合&#xff0c;列数为三列&#xff0c;但是没有期待的1 2 3回显&#xff0c;而是显示wrong pass。 尝试报错注入时发现过滤了圆括号&#xff0c;网上搜索似乎也没找到能绕过使用圆括号的方法&#xff0c;那么按以往爆库爆表爆字段的方法似乎无法使用了 在响应报文找到一…

拓展全球市场:静态代理IP成为跨境电商战略的关键工具

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【SpringBoot】springboot常用注解

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; SpringBoot ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 Spring Boot作为一个轻量级、快速开发的框架&#xff0c;提供了丰富的注解来简化配置和加速开发。…

深度学习如何弄懂那些难懂的数学公式?是否需要学习数学?

经过1~2年的学习&#xff0c;我觉得还是需要数学有一定认识&#xff0c;重新捡起高等数学、概率与数理、线代等这几本&#xff0c;起码基本微分方程、求导、对数、最小损失等等还是会用到。 下面给出几个链接&#xff0c;可以用于平时充电学习。 知乎上的&#xff1a; 机器学…

你对 TypeScript 中枚举类型的理解?应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景参考文献 一、是什么 枚举是一个被命名的整型常数的集合&#xff0c;用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说&#xff0c;枚举就是一个对象的所有可能…

python环境安装sklearn及报错解决

安装 如刚开始安装&#xff0c;还未遇到问题请直接从重新安装库开始看&#xff0c;如果遇到报错&#xff0c;从问题开始看 问题 python安装sklearn报错 &#xff0c;报错信息如下 File "<stdin>", line 1pip install scikit-learn^ SyntaxError: invalid s…

【方法论】费曼学习方法

费曼学习方法是由诺贝尔物理学奖得主理查德费曼提出的一种学习方法。这种方法强调通过将所学的知识以自己的方式解释给别人来提高学习效果。 费曼学习方法的步骤如下&#xff1a; 选择一个概念&#xff1a;选择一个要学习的概念或主题。 理解和学习&#xff1a;用自己的方式学…

Redis数据结构与底层实现揭秘

在高并发的系统开发中&#xff0c;缓存和高效的数据存储机制对于提升应用性能至关重要。Redis&#xff0c;作为其中的佼佼者&#xff0c;以其卓越的性能和丰富的数据结构赢得了开发者的青睐。本文将深入探讨Redis的数据结构及其底层实现&#xff0c;带领读者走进这个高性能数据…

3ds Max宣传片怎么提升渲染速度?从硬件升级到云渲染,全面提升你的渲染速度!

在3ds Max中&#xff0c;渲染是一项耗时的任务&#xff0c;尤其是对于大型场景和复杂的动画。然而&#xff0c;通过一些优化策略和技巧&#xff0c;你可以显著加速渲染过程。以下是一些建议和技巧&#xff0c;帮助你提高3ds Max的渲染速度&#xff1a; 1.升级硬件&#xff1a; …

element+vue 之 v-limit 按钮操作权限

1.新建一个permission.js文件 import store from /storeexport default {inserted: function (el, binding) {const { perms: limits } store.state.userconst { value: params } bindingif (!limits.length) returnif (params && Array.isArray(params)) {if (!limi…
最新文章