前言:写这个仅用于自己写文章时,方便直接拿来使用。插件的原理就是封装好了短代码,但是最终呈现还是以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 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
| <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> 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 %}