前言:写这个仅用于自己写文章时,方便直接拿来使用。插件的原理就是封装好了短代码,但是最终呈现还是以HTML来展示的。个人觉得插件有插件的好处,手搓有手搓的好处。手搓意味着不依赖插件,文章跨平台迁移更方便,不用担心文章样式失效。

以下组件均已集成到主题的 CSS 中,可直接在文章中使用对应的 HTML 代码。


一. 展开关闭盒子

这是一个可折叠的内容区域,默认可以设置为关闭或打开状态。

代码

默认关闭:

1
2
3
4
5
6
7
8
9
<details>
<summary>点击查看更多</summary>
这里是默认关闭时显示的内容。可以是任何 HTML,比如段落、列表、图片等。
<p>例如,这是一个段落。</p>
<ul>
<li>列表项 1</li>
<li>列表项 2</li>
</ul>
</details>

默认打开:

1
2
3
4
<details open>
<summary>点击收起</summary>
这里是默认打开时显示的内容。
</details>

预览

默认关闭:

点击查看更多 这里是默认关闭时显示的内容。可以是任何 HTML,比如段落、列表、图片等。

例如,这是一个段落。

  • 列表项 1
  • 列表项 2

默认打开:

点击收起 这里是默认打开时显示的内容。

二. 引用文章链接

用于以卡片形式引用外部文章链接。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<div class="tab-item-content active" id="link-3">
<a class="tag-link" href="https://blog.deepsea.xin/posts/6050.html" target="_blank">
<div class="tag-link-tips">
引用文章链接
</div>
<div class="tag-link-bottom">
<div class="tag-link-left">
<i class="solitude fas fa-link"></i>
</div>
<div class="tag-link-right">
<div class="tag-link-title">
白衣博客
</div>
<div class="tag-link-sitename">
基于lua简单实现APP的远程更新
</div>
</div>
<i class="solitude fas fa-chevron-right"></i>
</div>
</a>
</div>

预览


三. 行内代码

用于在段落中突出显示一小段代码。

代码

1
<span class="inline-code">文本内容</span>

预览

这是一段普通的文字,其中包含了一个 <span class="inline-code">行内代码</span> 的示例。


四. 选项卡 (主题自带)

此功能为主题自带的标签插件(Tag Plugin),并非纯 HTML/CSS 组件。它通过特定的标签语法在文章中创建选项卡,主题会自动将其渲染成相应的 HTML 和样式。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{% tabs 选项卡示例 %}

<!-- tab 选项一 -->
选项一文本内容
<!-- endtab -->

<!-- tab 选项二 -->
选项二文本内容
<!-- endtab -->

<!-- tab 选项三 -->
选项三文本内容
<!-- endtab -->

{% endtabs %}

---

### 五. 复制提示与尾随文本

以下功能可以增强用户复制文章内容时的交互体验,并添加版权信息。

#### 一. Layer 样式提示 (推荐)

这是一种轻量级的、非侵入式的提示,当用户复制内容时,会在页面某个位置(通常是右下角或中央)短暂显示一个提示框。

**实现方法:**
将以下代码添加到主题的页脚模板文件中(例如 `themes/hexo-theme-solitude/layout/includes/inject/body.pug`)。
```html
<!-- 引入layer.js-->
<script src="https://cdn.staticfile.org/layer/3.1.1/layer.js"></script>
<!-- 复制提醒 -->
<script>document.body.oncopy = function() {layer.msg('复制成功,若要转载请务必保留原文链接!');};</script>

预览:
当用户复制页面内容时,会看到一个优雅的提示框,例如:“复制成功,若要转载请务必保留原文链接!”。


二. SweetAlert 样式提示

这是一种弹窗式的提示,会中断用户的操作,直到用户点击确认。

实现方法:
将以下代码添加到主题的页脚模板文件中。

1
2
3
4
5
6
7
8
9
<!-- 引入sweetalert2 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.css" />
<script type="text/javascript" src="https://cdn.bootcss.com/sweetalert/1.1.3/sweetalert.min.js"></script>
<!-- 复制提醒 -->
<script>
document.body.oncopy = function() {
swal("复制成功!", "您的博客名称提醒您:若要转载请保留原文链接!", "success");
};
</script>

预览:
当用户复制页面内容时,会弹出一个模态对话框,显示复制成功的消息。


三. 尾随文本

此功能会在用户复制的内容末尾自动追加一段文本,例如原文链接和版权声明。

实现方法:
将以下代码添加到主题的页脚模板文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
/** 监听copy事件 */
document.addEventListener("copy",function(e){
//取消默认事件,才能修改复制的值
e.preventDefault();
//复制的内容
var copyTxt = `${window.getSelection(0).toString()}\n————————————————\n原文链接:${window.location.href}\n您的博客名称:https://your-blog-url.com,如若转载请附上原文链接`;
if(e.clipboardData) {
e.clipboardData.setData('text/plain', copyTxt);
}
else if(window.clipboardData){
return window.clipboardData.setData("text", copyTxt);
}
})
</script>

预览:
当用户复制一段文字并粘贴到其他地方时,粘贴的内容会自动变成:

1
2
3
4
[用户复制的原始文本]
————————————————
原文链接:[当前文章的URL]
您的博客名称:https://your-blog-url.com,如若转载请附上原文链接

个人推荐:第一种 layer.js 样式,高端大气上档次,用户体验好;第二种 sweetalert 是弹窗,感觉入侵感比较强,不如第一种顺眼。第三种尾随文本可以有效保护版权,可以与第一种或第二种结合使用。


#### 预览

{% tabs 选项卡示例 %}


选项一文本内容



选项二文本内容



选项三文本内容


{% endtabs %}