<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>ZeroLatency</title>
  
  <subtitle>探索科技与生活的交汇</subtitle>
  <link href="https://blog.3ms.run/atom.xml" rel="self"/>
  
  <link href="https://blog.3ms.run/"/>
  <updated>2026-02-25T09:16:38.517Z</updated>
  <id>https://blog.3ms.run/</id>
  
  <author>
    <name>DaLiYuEr</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>微软Office 365 E3订阅限时开放免费购买：尊享25席位，内含Outlook 100GB与OneDrive 1TB！</title>
    <link href="https://blog.3ms.run/archives/office365-e3.html"/>
    <id>https://blog.3ms.run/archives/office365-e3.html</id>
    <published>2025-11-13T14:58:38.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<p>Office 365 E3订阅作为微软面向企业推出的一体化云端办公套件，旨在赋能高效协作、强化数据安全防护及确保企业合规运营，以全面满足各类团队的多元化办公需求。</p><p>此订阅方案涵盖企业日常运营所需的全套核心办公工具，允许每位授权用户在最多5台个人电脑&#x2F;Mac设备、5台平板电脑及5部智能手机上进行安装与使用。其内容广泛，不仅包括Word、Excel、PowerPoint等基础生产力软件，更集成了Outlook（邮件与日程管理）、OneNote（高效笔记工具）、SharePoint（企业内容管理及团队协作平台）以及OneDrive（个人云存储服务），从而全面覆盖从文档编辑到团队协作的各项基本办公场景。</p><p>Office 365 E3还配备了Exchange Online服务，为每位用户提供高达100GB的企业级电子邮件存储与完善的日历管理功能。同时，OneDrive提供每位用户1TB或更高容量的个人云存储空间，确保文件可跨设备无缝访问，并支持灵活精细的文档共享权限控制。</p><h2 id="前期准备："><a href="#前期准备：" class="headerlink" title="前期准备："></a>前期准备：</h2><p>在着手获取Office 365 E3订阅之前，您需要具备一个<strong>具备管理员权限的 Microsoft 365 Admin Center 账户</strong>。此账户可以是先前用于E5订阅的旧账户（即使E5订阅已失效&#x2F;被ban亦可）。</p><p>如果你没有 Microsoft 365 Admin Center 账号也可以跟着我的操作一步一步申请一个Microsoft 365 Admin Center管理员账号。</p><p>值得注意的是，若您的 Microsoft 365 Admin Center 账户在注册时选择的区域并非中国大陆（CN），则需要准备与该注册区域相符的国际信用卡，如Visa卡或Mastercard等海外银行卡。例如，如果注册区域为美国（US），则需提供一张美国本地的银行卡。然而，若您的 Microsoft 365 Admin Center 账户的注册区域为中国大陆（CN），您便可直接通过支付宝完成支付流程。</p><h2 id="申请Microsoft-365管理员账号"><a href="#申请Microsoft-365管理员账号" class="headerlink" title="申请Microsoft 365管理员账号"></a>申请Microsoft 365管理员账号</h2><ol><li><p>打开Microsoft 365 商业版购买页面：<a href="https://www.microsoft.com/zh-cn/microsoft-365/business/microsoft-365-plans-and-pricing">点此进入</a></p></li><li><p>找到商业基础版 &gt; 点击免费试用。<br><img src="https://img.muooy.com/img/1/2025/11/13/69158381358cb.webp"></p></li><li><p>输入你已有的微软账号邮箱地址。&gt; 确认邮件地址 &gt; 点击创建创建账户。<br><img src="https://img.muooy.com/img/1/2025/11/13/691583c04a5cb.webp"></p></li><li><p>填写你的姓名公司等信息，公司名称可以随意填写，国家地址选择中国，如果你选择的是其他国家地区你需要提供对应地区支付方式，如图所示。<br><img src="https://img.muooy.com/img/1/2025/11/13/691584299abcc.webp"></p></li><li><p>设置Microsoft 365管理员账号的用户名和域名前缀，点击下一步。<br><img src="https://img.muooy.com/img/1/2025/11/13/6915849ae1cd5.webp"></p></li><li><p>**设置地址和付款信息：**其实你只要完成上一步，你的Microsoft 365管理员账号就已经注册完成了。为了不影响后续操作我还是建议大家在这一步就完成一下付款方式的设置。</p><p>当管理员账号设置完成之后会要求你提供地址信息，以及添加付款信息，以上步骤全部操作完成你会看到注册完成的提示点击管理订阅。<br><img src="https://img.muooy.com/img/1/2025/11/13/691584bba616e.webp"></p></li><li><p>**设置界面语言：**进入Microsoft 365管理后台之后点击右上角的依次<code>小人图标</code> &gt; <code>View account</code> &gt; <code>Settings &amp; Privacy</code>。或直接[<a href="https://myaccount.microsoft.com/settingsandprivacy/language">点击此进入语言更改界面</a>]<br><img src="https://img.muooy.com/img/1/2025/11/13/6915890e84e42.webp"><img src="https://img.muooy.com/img/1/2025/11/13/69158a159e7c8.webp">语言更改之后会要求你注销重新登录。</p></li></ol><h2 id="Office-365-E3订阅购买"><a href="#Office-365-E3订阅购买" class="headerlink" title="Office 365 E3订阅购买"></a>Office 365 E3订阅购买</h2><ol><li>使用你刚刚申请Microsoft 365管理员账号的或现有的E5账号登录 <a href="https://admin.microsoft.com/">Microsoft 365 Admin Center</a>，并确保你有管理员权限。</li><li>在左侧导航栏中，依次选择“<code>市场</code>” &gt; “<code>所有产品</code>” &gt; “<code>Office 365</code>” &gt; “&#96;Office 365 E3 Developer” &gt; “详细信息” &gt; “购买”。随后，依据系统提示选择您的支付方式并完成购买。</li><li>重要提示： 在“选择许可证数量”环节，请务必填写 25 个。</li></ol><p>您亦可通过以下链接直接跳转至购买页面：<a href="https://admin.cloud.microsoft/#/catalog/offer-details/office-365-e3-developer/C69E7747-2566-4897-8CBA-B998ED3BAB88">https://admin.cloud.microsoft/?#/catalog/offer-details/office-365-e3-developer/C69E7747-2566-4897-8CBA-B998ED3BAB88</a></p><p><img src="https://img.muooy.com/img/1/2025/11/13/69158d66184bb.webp"></p><p><img src="https://img.muooy.com/img/1/2025/11/13/69158d771f778.webp"></p><p>成功获取的订阅通常有效期为一年&#x2F;商业版为一个月，期满后可选择继续续费。</p><h2 id="取消Microsoft-365-商业订阅"><a href="#取消Microsoft-365-商业订阅" class="headerlink" title="取消Microsoft 365 商业订阅"></a>取消Microsoft 365 商业订阅</h2><p>注意完成了Office 365 E3别忘记取消Microsoft 365 商业版的订阅哦，不然到时候扣费就亏大了。</p><ul><li>在Microsoft 365管理后台找到<code>账单</code> &gt; <code>你的产品</code> &gt; 勾选<code>Microsoft 365 Business Basic Trial</code> 点击上方的取消订阅即可如图。<img src="https://img.muooy.com/img/1/2025/11/13/691590f8c4f86.webp"></li></ul><h2 id="结语与建议："><a href="#结语与建议：" class="headerlink" title="结语与建议："></a>结语与建议：</h2><p>完成购买后，您需要在“<strong>Microsoft 365管理中心</strong>”中创建新用户，并为这些用户分配合适的Office 365 E3许可证。</p><p>衷心祝愿各位读者都能顺利获取并成功配置！</p><p>然而，我们在此<strong>郑重提醒，请勿滥用此项服务！</strong> 过度或不当的使用行为可能会导致账户被禁用（如同以往的E5订阅事件），从而使未来类似的优惠获取途径变得更加困难。请务必遵守微软的服务条款，合理利用资源。</p><p>基于原文优化改写：<a href="https://www.tr0.cn/officefore3/">https://www.tr0.cn/officefore3/</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Office 365 E3订阅作为微软面向企业推出的一体化云端办公套件，旨在赋能高效协作、强化数据安全防护及确保企业合规运营，以全面满足各类团队的多元化办公需求。&lt;/p&gt;
&lt;p&gt;此订阅方案涵盖企业日常运营所需的全套核心办公工具，允许每位授权用户在最多5台个人电脑&amp;#x2F;</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.3ms.run/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Office 365 E3" scheme="https://blog.3ms.run/tags/Office-365-E3/"/>
    
    <category term="微软 Office 365 E3" scheme="https://blog.3ms.run/tags/%E5%BE%AE%E8%BD%AF-Office-365-E3/"/>
    
    <category term="Office 365 E3 订阅" scheme="https://blog.3ms.run/tags/Office-365-E3-%E8%AE%A2%E9%98%85/"/>
    
    <category term="免费 Office 365" scheme="https://blog.3ms.run/tags/%E5%85%8D%E8%B4%B9-Office-365/"/>
    
  </entry>
  
  <entry>
    <title>Giffgaff 英国保号卡教程：0月租、免费申请、激活与保号全攻略（支持 eSIM）</title>
    <link href="https://blog.3ms.run/archives/92e5a44c.html"/>
    <id>https://blog.3ms.run/archives/92e5a44c.html</id>
    <published>2025-07-14T20:47:23.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<p>如果你需要一张境外电话卡来接收短信，那么 Giffgaff 会是一个不错的选择。这张英国实体 SIM 卡既支持<strong>零月租</strong>，还能<strong>免费接收短信</strong>，同时具备<strong>长期保号</strong>的能力，而且费用相当低。更棒的是，它还能从实体卡升级为 eSIM 卡，即便是在中国也能正常使用。不论是注册 ChatGPT、Telegram、Google、Apple ID 等境外程序，还是用于其他应用，这张卡都能满足需求。</p><p>长久以来，拥有一个可靠的境外电话号码被视为连接数字世界的桥梁，尤其在注册特定国际服务或处理跨境事务时显得尤为关键。目前市场上常见的替代方案包括虚拟号码Google Voice和美国实体卡Ultra Mobile Paygo。然而，这些选项各自存在显著的局限性：Google Voice因其非实体身份，在诸多境外服务注册环节频频受阻；而Ultra Mobile Paygo每月高达3美元的固定费用，对于期望低成本长期保号的用户而言，无疑是不经济的选择。</p><p>相比之下，Giffgaff 更加贴心。零月租、短信全免费，再加上最低的保号成本，使它成为境外卡中的佼佼者。特别是想要注册国际银行应用、ChatGPT 等 AI 服务的用户都会发现它非常合适。而且它同样可以用来注册微信、支付宝等国内平台，是一张用途很广的境外电话卡。</p><p><img src="https://img.muooy.com/img/1/2025/07/12/6871f9997c96d.webp"></p><h2 id="所需关键网址集合："><a href="#所需关键网址集合：" class="headerlink" title="所需关键网址集合："></a>所需关键网址集合：</h2><p><strong>Giffgaff电话卡免费申请专属链接</strong>（通过此链接申请，并于活动期间激活，可额外获赠5-10英镑话费）：<a href="https://www.giffgaff.com/orders/affiliate/rain9788_1734654644788">点击此处直达申请通道</a></p><p>Giffgaff iOS版官方应用下载：<a href="https://apps.apple.com/gb/app/giffgaff/id571246020">点击下载</a>（需要外区apple id 如果你没有可以<a href="https://juzixp.top/">点击这里</a>去购买一个）</p><p>Giffgaff安卓版官方应用下载（Google Play）：<a href="https://play.google.com/store/apps/details?id=com.giffgaffmobile.controller">点击下载</a></p><p>Giffgaff账户注册入口：<a href="https://www.giffgaff.com/auth/register?redirect=/dashboard/affiliate/rain9788_1734654644788">点击注册</a></p><h3 id="步骤一：申请Giffgaff-SIM卡"><a href="#步骤一：申请Giffgaff-SIM卡" class="headerlink" title="步骤一：申请Giffgaff SIM卡"></a>步骤一：申请Giffgaff SIM卡</h3><p>打开Giffgaff的免费申请地址：<a href="https://www.giffgaff.com/orders/affiliate/rain9788_1734654644788">https://www.giffgaff.com/orders/affiliate/rain9788_1734654644788</a></p><p>请务必通过我提供的专属免费申请地址进行操作，若您选择其他链接进行申请，将无法享受激活时可能获赠的5-10英镑话费优惠。</p><p>接下来，请按照指引准确填写您的收货地址等必要信息。请注意，所有信息均须以<strong>拼音</strong>形式填写。具体填写规范如下：</p><ul><li><strong>First name（名字）</strong> ：填写您的名字拼音，例如“三”对应填写“San”。</li><li><strong>Last name（姓氏）</strong> ：填写您的姓氏拼音，例如“张”对应填写“Zhang”。</li><li><strong>Email（电子邮件地址）</strong> ：此处用于接收Giffgaff关于发货状态、通知等重要邮件，请填写常用且可接收邮件的地址，如<code>666@163.com</code>。</li><li><strong>Country（国家&#x2F;地区）</strong> ：在国家选择项中，请明确选择“China”（中国）。</li><li><strong>Address line 1（详细地址第一行）</strong> ：请以逆序方式填写您的具体住址信息，其典型格式为：“楼层-栋号-小区地址-街道地址”。例如，若您的中文地址是“某某街道某某小区A栋10楼”，则推荐填写为“10A Mouxiaoqu Moujiejie”。如对拼音填写不熟练，可借助在线翻译工具将中文地址转换，但请特别注意：即使翻译结果为英文单词，也需将其改写为拼音，例如“桔子公寓”翻译为“Orange Apartment”后，应调整为“JuZiGongYu”。</li><li><strong>Address line 2 (optional)（详细地址第二行，可选）</strong> ：在此处可选择性地填写您的手机号码，这有助于投递员在派送过程中进行联系，增加投递成功率。</li><li><strong>Town（城市）</strong> ：填写您所在城市的拼音，例如“Shenzhen”（深圳）。</li><li><strong>State（省份&#x2F;自治区）</strong> ：填写您所在省份的拼音，例如“Guangdong”（广东）。</li><li><strong>Postcode（邮政编码）</strong> ：此项至关重要，请务必<strong>准确无误</strong>地填写您所在地的邮政编码。</li></ul><p><img src="https://img.muooy.com/img/1/2025/07/12/68720131e5efe.webp"></p><p>完成上述所有信息的填写后，点击“Order your free SIM”按钮，即可提交SIM卡申请，耐心等待到货就是啦。</p><h3 id="邮寄须知"><a href="#邮寄须知" class="headerlink" title="邮寄须知"></a>邮寄须知</h3><div class="note orange icon-padding flat"><i class="note-icon fas fa-battery-half"></i><p>Giffgaff采取的是<strong>平信邮寄</strong>方式，这意味着邮件将不提供物流追踪信息。根据以往经验，从英国寄送至中国境内的平信通常需要大约<strong>20-30天</strong>的邮寄时间才能收到。鉴于国际平信存在一定的丢件风险，为确保您能及时收到卡片，我们强烈建议您在申请时<strong>一次性多申请几张SIM卡</strong>，以有效应对潜在的丢件情况。若长时间未收到卡片，您可以尝试联系中国邮政客服热线<strong>11185</strong>，转接至人工服务。向客服提供您的地址、姓名以及信件内容（Giffgaff SIM卡），请求他们协助留意并协调附近网点进行查找，之后负责您所在片区的投递员可能会与您主动联系。</p></div><h2 id="步骤二：激活Giffgaff-SIM卡"><a href="#步骤二：激活Giffgaff-SIM卡" class="headerlink" title="步骤二：激活Giffgaff SIM卡"></a>步骤二：激活Giffgaff SIM卡</h2><p>在您顺利收到Giffgaff实体SIM卡后，请按照以下步骤进行激活，并确保首次充值10英镑，方可正常使用。</p><ol><li><strong>Giffgaff账户注册流程：</strong><ul><li>首先，访问Giffgaff的官方注册页面：<a href="https://www.giffgaff.com/auth/register?redirect=/dashboard/affiliate/rain9788_1734654644788">https://www.giffgaff.com/auth/register</a>。</li><li>输入您的邮箱地址，随后点击“Next”按钮继续。<img src="https://img.muooy.com/img/1/2025/07/12/68720dfb2d5f2.webp"></li><li>Giffgaff将向您的注册邮箱发送一条验证码，请查收并将其准确输入，然后点击“Confirm”进行提交。<img src="https://img.muooy.com/img/1/2025/07/12/68720e66df99a.webp"></li><li>接下来，系统将引导您设置账户密码。请确保您设定的密码符合安全性要求，即需包含大小写字母以及至少一个特殊字符。<img src="https://img.muooy.com/img/1/2025/07/12/68720ee421e43.webp"></li></ul></li><li><strong>完成注册与用户名确认：</strong><ul><li>密码设置完成后，页面将跳转至一个确认界面。请选择“No, thanks”，随后点击“Continue”按钮，即可完成注册。</li><li>注册成功后，系统将自动登录您的账户。此时，请务必关注并牢记页面右上角显示的<strong>用户名</strong>，这是您后续登录Giffgaff账户的重要凭证。若不慎遗忘，无需担忧，Giffgaff会在您注册时发送的欢迎邮件中包含此用户名信息，请注意查阅您的注册邮箱。<img src="https://img.muooy.com/img/1/2025/07/12/687211c2c63d2.webp"> <img src="https://img.muooy.com/img/1/2025/07/12/68721235a3d84.webp"></li></ul></li><li><strong>下载Giffgaff官方应用程序：</strong><ul><li>安卓（Android）设备用户，请在Google Play商店中搜索“Giffgaff”并下载安装。</li><li>苹果（iOS）设备用户，则需要使用<strong>境外区域的Apple ID</strong>登录App Store，搜索“Giffgaff”完成下载。</li><li><img src="https://img.muooy.com/img/1/2025/07/12/6872145d71a9f.webp"></li></ul></li><li><strong>登录Giffgaff应用程序：</strong><ul><li>打开已安装的Giffgaff App，点击“Login”，接着选择“Continue”。<img src="https://img.muooy.com/img/1/2025/07/12/687214be228b6.webp"></li><li>在新弹出的登录界面中，请输入您之前注册时记下的用户名和设定的密码，然后点击“Login”。</li><li>为了安全验证，Giffgaff会向您的注册邮箱发送一条登录验证码，将其输入App即可成功登录。<img src="https://img.muooy.com/img/1/2025/07/12/6872155042293.webp"></li></ul></li><li><strong>激活您的实体SIM卡：</strong><ul><li>成功登录App后，请在应用界面中寻找并点击“Activate your SIM card”选项，随即进入SIM卡激活流程。</li><li><img src="https://img.muooy.com/img/1/2025/07/12/6872164e7e470.webp"></li><li>您需要输入所持实体SIM卡卡片背面印有的<strong>6位激活码</strong>，输入完毕后点击“Continue”。<img src="https://img.muooy.com/img/1/2025/07/12/687216c497da6.webp"></li></ul></li><li><strong>选择充值金额并跳过套餐选择：</strong><ul><li>在后续出现的界面中，请向下滚动页面，直到看到并点击“I don’t want a plan”（我不需要套餐）选项。</li><li>此时，一个信息框将展开，请点击其中的黄色“continue”按钮。</li><li><img src="https://img.muooy.com/img/1/2025/07/12/6872179a90c54.webp"></li></ul></li><li><strong>确定充值金额为10英镑：</strong><ul><li>在接下来的充值选项界面，请务必选择金额为<strong>10英镑</strong>的充值方案。<img src="https://img.muooy.com/img/1/2025/07/12/6872183d73d1c.webp"></li></ul></li><li><strong>添加支付方式：</strong><ul><li>您需要增添一个有效的支付方式来完成充值。Giffgaff普遍支持国际信用卡支付，包括VISA和Mastercard等。</li><li>在此，我们特别推荐使用<strong>PokePay虚拟卡</strong>作为支付手段。若您当前不具备国际信用卡，或对虚拟卡的获取有疑问，可考虑寻求博主代购服务。</li><li>在填写账单地址时，请务必细致检查并<strong>选择“China”（中国）作为账单国家</strong>，以有效规避可能产生的额外税费。<img src="https://img.muooy.com/img/1/2025/07/12/687218aee06c0.webp"></li><li><img src="https://img.muooy.com/img/1/2025/07/12/6872198b3b566.webp"></li></ul></li><li><strong>最终确认与激活：</strong><ul><li>成功添加并确认您的支付卡片信息后，请勾选“I understand and agree”复选框，表明您已阅读并同意相关条款。</li><li>最后，点击“Activate now”按钮。请耐心等待一段时间，您的Giffgaff SIM卡将顺利激活。</li><li><img src="https://img.muooy.com/img/1/2025/07/12/68721ac4347bb.webp"></li></ul></li></ol><h2 id="Giffgaff保号策略与常见问题详解"><a href="#Giffgaff保号策略与常见问题详解" class="headerlink" title="Giffgaff保号策略与常见问题详解"></a>Giffgaff保号策略与常见问题详解</h2><h3 id="Giffgaff-保号攻略：确保号码长期有效"><a href="#Giffgaff-保号攻略：确保号码长期有效" class="headerlink" title="Giffgaff 保号攻略：确保号码长期有效"></a>Giffgaff 保号攻略：确保号码长期有效</h3><p>维持Giffgaff号码活跃的关键在于其<strong>保号要求</strong>：您需要<strong>每 6 个月内至少进行一次产生费用的操作</strong>，例如发送短信、拨打电话或进行数据流量消耗，以避免号码因长期不活跃而被冻结或回收。</p><ul><li><strong>费用概览：</strong> 具体消费成本如下：每发送一条短信费用为£0.3英镑，每分钟通话费用为£1英镑，上网流量费用为每MB£0.2英镑。值得注意的是，<strong>接收短信是完全免费的</strong>。</li><li><strong>推荐保号方式：</strong> 鉴于短信费用相对最低，我们强烈建议您采用<strong>发送短信</strong>的形式进行保号。为确保不遗漏保号操作，您可以活用手机或日历应用，设置一个<strong>每6个月周期性提醒</strong>的日程。此外，Giffgaff系统会在您的号码保号到期前<strong>约一周</strong>发送提醒邮件至您的注册邮箱，请务必注意查收这些重要的通知邮件。</li></ul><h3 id="Giffgaff常见问题解答"><a href="#Giffgaff常见问题解答" class="headerlink" title="Giffgaff常见问题解答"></a>Giffgaff常见问题解答</h3><p><strong>1. 卡片与充值相关问题</strong></p><ul><li><p>Q：通过官网申请的空白卡是否已包含话费？</p><ul><li><strong>A：</strong> 官网申领的空白SIM卡本身不含初始话费。用户需自行进行充值激活，首次充值的最低金额为 <strong>£10英镑</strong>。</li></ul></li><li><p>Q：具体如何操作保号，以及其成本如何？</p><ul><li><strong>A：</strong> 保号的核心在于，您需要确保在<strong>每180天（约6个月）</strong> 内，您的Giffgaff账户发生一次话费变动，这可以是自主充值，也可以是发送一条短信。在国内，<strong>最经济有效的保号方式是发送短信</strong>，每条短信费用为£0.3英镑（折合约人民币3元）。因此，一年只需消费£0.6英镑，即可轻松维系号码活跃。</li></ul></li><li><p>Q：接收短信是否免费？其他服务具体费用如何？</p><ul><li><p>A：</p><p>接收短信是完全免费的</p><p>。其他服务费用细则如下：</p><ul><li>拨打电话&#x2F;接听电话：£1英镑&#x2F;分钟</li><li>发送短信：£0.3英镑&#x2F;条</li><li>移动数据流量：£0.2英镑&#x2F;MB</li></ul></li></ul></li></ul><p><strong>2. 激活与充值疑难解答</strong></p><ul><li>Q：首次充值激活Giffgaff卡需要准备哪些条件？<ul><li><strong>A：</strong> 您需要准备一张支持国际支付的<strong>VISA卡或万事达（Mastercard）外币信用卡</strong>。国内银行发行的实体信用卡，只要具备国际支付功能，通常即可用于首次充值。请记住，首次充值的最低金额为£10英镑。</li></ul></li><li>Q：Giffgaff卡号如何查询？<ul><li><strong>A：</strong> 当您首次将Giffgaff SIM卡插入手机并成功注册网络后，系统会自动向您的手机发送一条包含您Giffgaff卡号的短信。</li></ul></li><li>Q：插入SIM卡后手机没有信号如何解决？<ul><li><strong>A：</strong> 请首先耐心等待<code>1-5分钟</code>，网络注册可能需要一定时间。若仍无信号，尝试进入手机设置，关闭 <strong>“运营商自动选择”</strong> 功能，然后手动选择“中国移动”网络（Giffgaff在国内通常漫游至中国移动或中国联通）。完成选择后，重启您的设备。</li></ul></li></ul><p><strong>3. 兼容性与高效使用技巧</strong></p><ul><li>Q：Giffgaff支持哪些手机设备？在国内信号质量如何？<ul><li><strong>A：</strong> Giffgaff卡片兼容市场<strong>大部分主流手机设备</strong>，包括最新的5G手机。在中国境内，Giffgaff通过与中国移动或中国联通的漫游合作提供服务，因此，其信号覆盖广度与网络质量均表现出色，与国内运营商无异。</li></ul></li><li>Q：针对苹果手机用户，有无特别需要注意的事项？<ul><li><strong>A：</strong> 建议苹果手机用户<strong>谨慎开启iMessage&#x2F;Facetime功能</strong>，因为这些功能在后台进行激活验证时，可能会自动发送国际验证短信，从而产生£0.3英镑的扣费。为避免不必要的支出，请根据自身需求权衡是否开启。</li></ul></li><li>Q：登录Giffgaff官方网站时，对于号码格式有何要求？<ul><li><strong>A：</strong> 在登录Giffgaff官网时，输入您的英国号码需确保格式正确，通常需要在号码前添加<strong>英国区号（+44或0044）</strong> 。若系统提示号码格式不正确，请仔细核对您输入的号码格式与区号是否匹配。</li></ul></li></ul><h2 id="结束"><a href="#结束" class="headerlink" title="结束"></a>结束</h2><p>期望本篇涵盖Giffgaff英国实体手机卡申请、激活、充值乃至长期保号策略的详尽图文教程，能够为各位读者提供实质性的帮助，助力您顺利拥有并管理自己的Giffgaff手机卡。无论您的核心需求是稳定接收境外短信、便捷注册国际在线服务，或是仅仅寻求一个经济高效且能长期维系的境外号码解决方案，Giffgaff无疑都是一个极具价值且值得优先推荐的卓越选择。</p><p>若在依照本教程操作过程中，您遭遇任何疑问或需要进一步的协助，我们热忱欢迎您在评论区积极留言交流。衷心祝愿每位读者最终都能拥有一个便捷好用的境外号码，从而更加畅通无阻地连接数字世界，探索全球精彩！</p>]]></content>
    
    
    <summary type="html">详细Giffgaff英国实体手机卡保号教程，涵盖免费申请（附5£奖励链接）、激活、充值、无限期保号，并介绍Giffgaff可转eSIM，完美注册境外APP如ChatGPT、Telegram等。</summary>
    
    
    
    <category term="闲聊杂谈" scheme="https://blog.3ms.run/categories/%E9%97%B2%E8%81%8A%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="Giffgaff" scheme="https://blog.3ms.run/tags/Giffgaff/"/>
    
    <category term="英国手机卡" scheme="https://blog.3ms.run/tags/%E8%8B%B1%E5%9B%BD%E6%89%8B%E6%9C%BA%E5%8D%A1/"/>
    
    <category term="Giffgaff激活" scheme="https://blog.3ms.run/tags/Giffgaff%E6%BF%80%E6%B4%BB/"/>
    
    <category term="Giffgaff保号" scheme="https://blog.3ms.run/tags/Giffgaff%E4%BF%9D%E5%8F%B7/"/>
    
  </entry>
  
  <entry>
    <title>1Panel面板部署独角数卡的教程</title>
    <link href="https://blog.3ms.run/archives/e16b64b.html"/>
    <id>https://blog.3ms.run/archives/e16b64b.html</id>
    <published>2025-06-23T16:30:11.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<p>最近从宝塔换到了1Panel面板，正好我也在使用独角数卡这个程序，记录一下如何使用1Panel面板搭建独角数卡的方法。V1 V2方法一样。</p><h2 id="一、配置PHP运行环境"><a href="#一、配置PHP运行环境" class="headerlink" title="一、配置PHP运行环境"></a>一、配置PHP运行环境</h2><p>请根据以下指导在 <code>1Panel</code> 中配置您的 <code>PHP</code> 环境。</p><p>网站-&gt;运行环境-&gt;创建运行环境（如有请直接编辑）。</p><p>**<code>PHP</code> 版本选择：**7.4</p><p>并安装以下默认扩展，一定要安装我列出的扩展否则可能无法运行。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">mysqli</span><br><span class="line">pdo_mysql</span><br><span class="line">fileinfo</span><br><span class="line">redis</span><br><span class="line">opcache </span><br><span class="line">exif</span><br><span class="line">bcmath</span><br><span class="line">intl</span><br><span class="line">mbstring</span><br><span class="line">gd </span><br><span class="line">imagick</span><br><span class="line">curl </span><br></pre></td></tr></table></figure><p><img src="https://img.muooy.com/img/1/2025/06/23/6858da0522868.webp"></p><h2 id="二、创建网站-数据库"><a href="#二、创建网站-数据库" class="headerlink" title="二、创建网站&#x2F;数据库"></a>二、创建网站&#x2F;数据库</h2><p>1.在网站中创建一个网站，选择运行环境php7.4，并勾选创建数据库</p><p><img src="https://img.muooy.com/img/1/2025/06/23/6858db8d517d2.webp">2.打开刚刚创建的网站目录将所有文件选择用户跟用户组改成<code>1Panel</code>，<del>并编辑<code>.env</code>配置好mysql跟redis连接信息。</del></p><p><img src="https://img.muooy.com/img/1/2025/06/23/6858dc67a2de4.webp"></p><p>3.文件上传完成后打开网站设置将网站运行目录(设置为：<code>public</code>), 伪静态(<code>laravel5</code>)</p><p><img src="https://img.muooy.com/img/1/2025/06/23/6858de8d0ac2f.webp"></p><p><img src="https://img.muooy.com/img/1/2025/06/23/6858de9df302d.webp"></p><h2 id="三、配置进程守护"><a href="#三、配置进程守护" class="headerlink" title="三、配置进程守护"></a>三、配置进程守护</h2><p>独角数卡依赖 <code>Laravel</code> 队列来处理后台任务，如邮件发送、订单回调等。在 <code>1Panel</code> 的容器化环境中，需要通过 <code>Supervisor</code> 配置进程守护。</p><ol><li>在 <code>1Panel</code> 控制面板的“工具箱”中找到并安装 <code>Supervisor</code>（进程守护）。</li><li>安装完成后，进入 <code>Supervisor</code> 管理界面，点击“创建进程守护”。</li><li>启动用户选择：<code>root</code></li><li>运行目录是你的网站目录，例如：<code>/opt/1panel/www/sites/网站域名/index</code>。</li><li>**启动命令：**这是核心配置。由于 <code>PHP</code> 应用运行在 docker 容器内，您需要使用 <code>docker exec</code> 命令进入容器并执行 <code>Laravel</code> 的队列工作。请将命令设置为：</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">docker exec 您的PHP容器名称 php artisan queue:work</span><br></pre></td></tr></table></figure><p><img src="https://img.muooy.com/img/1/2025/06/23/68591045711d4.webp"></p><h2 id="部署完成与测试"><a href="#部署完成与测试" class="headerlink" title="部署完成与测试"></a>部署完成与测试</h2><p>恭喜！通过以上步骤，您已成功在 <code>1Panel</code> 面板上部署了独角数卡。您现在应该能够通过您的域名访问独角数卡网站。</p><p>访问网站域名根据指示安装即可。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近从宝塔换到了1Panel面板，正好我也在使用独角数卡这个程序，记录一下如何使用1Panel面板搭建独角数卡的方法。V1 V2方法一样。&lt;/p&gt;
&lt;h2 id=&quot;一、配置PHP运行环境&quot;&gt;&lt;a href=&quot;#一、配置PHP运行环境&quot; class=&quot;headerlink&quot; </summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.3ms.run/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="1Panel" scheme="https://blog.3ms.run/tags/1Panel/"/>
    
    <category term="独角数卡" scheme="https://blog.3ms.run/tags/%E7%8B%AC%E8%A7%92%E6%95%B0%E5%8D%A1/"/>
    
    <category term="部署教程" scheme="https://blog.3ms.run/tags/%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B/"/>
    
  </entry>
  
  <entry>
    <title>免费搭建高速静态网站！白嫖 Google Firebase Hosting：每月 10GB 流量 + CDN加速！</title>
    <link href="https://blog.3ms.run/archives/10ff7244.html"/>
    <id>https://blog.3ms.run/archives/10ff7244.html</id>
    <published>2025-06-01T22:18:13.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.40/image/2025/06/20250601222149.png" alt="免费搭建高速静态网站！白嫖 Google Firebase Hosting：每月 10GB 流量 + CDN加速！"></p><p>想要免费托管自己的个人网站、项目展示页或博客？Google Firebase Hosting 提供了一个非常适合开发者的解决方案：<strong>每月 10GB 流量、10GB 存储空间、全球 CDN 加速和 HTTPS 支持</strong>，统统免费！</p><h2 id="什么是-Firebase-Hosting？"><a href="#什么是-Firebase-Hosting？" class="headerlink" title="什么是 Firebase Hosting？"></a>什么是 Firebase Hosting？</h2><p><strong>Firebase Hosting</strong> 是由 <strong>Google Cloud</strong> 提供的静态网站托管服务，适用于部署 HTML、CSS、JS、图片等前端资源。它默认集成了 HTTPS、全球内容分发网络（CDN）和强大的构建工具，帮助你轻松上线自己的静态网站。</p><h2 id="免费额度说明"><a href="#免费额度说明" class="headerlink" title="免费额度说明"></a>免费额度说明</h2><p>Firebase 提供的 Spark 计划（即免费层）包含：</p><ul><li>每月 10GB 托管流量</li><li>每月 10GB 存储空间</li><li>全球高速 CDN + HTTPS 证书</li><li>可自定义域名绑定</li><li>不需绑定支付方式，项目不易被回收</li></ul><p> 官方价格页查看：<a href="https://firebase.google.com/pricing?hl=zh-cn">Firebase Pricing</a></p><h2 id="常见用途推荐"><a href="#常见用途推荐" class="headerlink" title="常见用途推荐"></a>常见用途推荐</h2><table><thead><tr><th>用途</th><th>示例</th></tr></thead><tbody><tr><td>个人博客</td><td>搭配 Hugo、Hexo、Astro 等静态引擎</td></tr><tr><td>简历展示页</td><td>前端开发者&#x2F;独立程序员专属展示窗口</td></tr><tr><td>项目 Demo 展示</td><td>前端作品、小工具、小网页合集</td></tr><tr><td>学习部署流程</td><td>初学者练习 Git &#x2F; CLI &#x2F; Web 项目托管</td></tr><tr><td>公众号&#x2F;站群引导页</td><td>搭配自定义域名，用作中转页、推广页等</td></tr></tbody></table><h2 id="部署教程"><a href="#部署教程" class="headerlink" title="部署教程"></a>部署教程</h2><p>推荐使用 Linux 环境进行部署，步骤如下：</p><h3 id="第一步：创建-Firebase-项目"><a href="#第一步：创建-Firebase-项目" class="headerlink" title="第一步：创建 Firebase 项目"></a>第一步：创建 Firebase 项目</h3><p>前往 <a href="https://console.firebase.google.com/">Firebase 控制台</a> 创建一个新项目。</p><ul><li>项目 ID 创建后不可修改，建议提前命名好（例如 <code>myblog</code> → 最终地址是 <code>myblog.web.app</code>）。</li><li>可后续绑定自定义域名。</li></ul><h3 id="第二步：安装-Firebase-工具链"><a href="#第二步：安装-Firebase-工具链" class="headerlink" title="第二步：安装 Firebase 工具链"></a>第二步：安装 Firebase 工具链</h3><ol><li><p>安装 Node.js LTS（包含 npm）：<a href="https://nodejs.org/">https://nodejs.org/</a> 下载 LTS 版本</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -</span><br><span class="line">apt install -y nodejs</span><br></pre></td></tr></table></figure></li><li><p>打开终端安装 Firebase CLI：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g firebase-tools</span><br></pre></td></tr></table></figure></li><li><p>登录授权 Firebase：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firebase login --no-localhost</span><br></pre></td></tr></table></figure><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.40/image/2025/06/1747124785265.png" alt="第二步：安装 Firebase 工具链"><br>复制授权链接至浏览器，登录 Google 账号，授权后返回命令行粘贴授权码。</p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.40/image/2025/06/1747124678898.png" alt="第二步：安装 Firebase 工具链"></p></li></ol><h3 id="第三步：初始化并部署网站"><a href="#第三步：初始化并部署网站" class="headerlink" title="第三步：初始化并部署网站"></a>第三步：初始化并部署网站</h3><ol><li><p>初始化项目：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firebase init hosting</span><br></pre></td></tr></table></figure><p>选择 “Use an existing project”，选择你刚刚创建的项目。</p><p>设置部署目录为 public，选择不启用 GitHub 自动部署。</p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.40/image/2025/06/1747125174814.png" alt="第三步：初始化并部署网站"></p></li><li><p>将你的网站静态文件放入 public 文件夹中。</p></li><li><p>部署上线：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">firebase deploy</span><br></pre></td></tr></table></figure><p>成功后控制台会显示你的网站访问地址（一般为：yourproject.web.app）。</p></li></ol><p><strong>也可以使用 Firebase 控制台绑定你自己的域名</strong></p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.40/image/2025/06/1747125476435.png" alt="第三步：初始化并部署网站"></p><h2 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h2><ul><li>Firebase Hosting 只支持<strong>静态内容托管</strong>，<strong>不支持 PHP、Node.js 等动态后端</strong>。</li><li>免费层不适用于高频访问的网站（如论坛、视频站），建议仅用于个人展示用途。</li><li>虽然免费，但也<strong>不适合大规模商用或流量突增的项目</strong></li><li>每个账号每日建站次数有限，请合理使用资源</li><li>项目无需绑定信用卡，<strong>无结算风险、长期稳定</strong>。</li></ul><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Firebase Hosting 适合所有想要免费建站、部署前端项目、展示静态网页的人。<br>配合 Hugo &#x2F; Hexo &#x2F; Astro 等工具，可以轻松搭建一个支持 HTTPS、CDN 加速的专业网站，0 成本也能拥有属于你自己的个人主页！</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;img src=&quot;https://jsd.gog.email/npm/daliyuer-static@1.0.40/image/2025/06/20250601222149.png&quot; alt=&quot;免费搭建高速静态网站！白嫖 Google Firebase Hosting：每</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.3ms.run/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Firebase静态托管" scheme="https://blog.3ms.run/tags/Firebase%E9%9D%99%E6%80%81%E6%89%98%E7%AE%A1/"/>
    
    <category term="网站托管推荐" scheme="https://blog.3ms.run/tags/%E7%BD%91%E7%AB%99%E6%89%98%E7%AE%A1%E6%8E%A8%E8%8D%90/"/>
    
    <category term="谷歌云白嫖" scheme="https://blog.3ms.run/tags/%E8%B0%B7%E6%AD%8C%E4%BA%91%E7%99%BD%E5%AB%96/"/>
    
  </entry>
  
  <entry>
    <title>本站同款 Butterfly 自定义页脚</title>
    <link href="https://blog.3ms.run/archives/44299b66.html"/>
    <id>https://blog.3ms.run/archives/44299b66.html</id>
    <published>2025-05-08T16:34:24.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<h2 id="系列文章"><a href="#系列文章" class="headerlink" title="系列文章"></a>系列文章</h2><ol class="series-items"><li><a href="/archives/2fff1258.html" title="Butterfly主题博客魔改美化教程总览（一）">Butterfly主题博客魔改美化教程总览（一）</a></li><li><a href="/archives/a2264388.html" title="Hexo使用gulp压缩博客Html+CSS+JS静态资源">Hexo使用gulp压缩博客Html+CSS+JS静态资源</a></li><li><a href="/archives/44299b66.html" title="本站同款 Butterfly 自定义页脚">本站同款 Butterfly 自定义页脚</a></li><li><a href="/archives/f9a47848.html" title="给Butterfly主题文章顶部添加波浪效果">给Butterfly主题文章顶部添加波浪效果</a></li></ol><h2 id="预览效果"><a href="#预览效果" class="headerlink" title="预览效果"></a>预览效果</h2><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.33/image/2025/an1/20250508164851.png"></p><h2 id="教程开始"><a href="#教程开始" class="headerlink" title="教程开始"></a>教程开始</h2><p>打开主题目录：<code>[BlogRoot]/themes/butterfly/layout/includes/footer.pug</code>修改原本的代码为以下代码：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br></pre></td><td class="code"><pre><span class="line">#footer-wrap</span><br><span class="line">  #ft</span><br><span class="line">    .ft-item-1</span><br><span class="line">      .t-top</span><br><span class="line">        .t-t-l</span><br><span class="line">          p.ft-t.t-l-t 格言🧬</span><br><span class="line">          .bg-ad</span><br><span class="line">            div</span><br><span class="line">              | 再看看那个光点，它就在这里，这是家园，这是我们 —— 你所爱的每一个人，你认识的每一个人，你听说过的每一个人，曾经有过的每一个人，都在它上面度过他们的一生✨</span><br><span class="line">            .btn-xz-box</span><br><span class="line">              a.btn-xz(href=&#x27;javascript:toRandomPost()&#x27;) 点击开启星辰之旅</span><br><span class="line">        .t-t-r</span><br><span class="line">          p.ft-t.t-l-t 猜你想看💡</span><br><span class="line">          ul.ft-links</span><br><span class="line">            li</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/archives/Hexo-Github-Vercel-DeploymentTutorial.html&#x27;) 建站指南</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/link&#x27;) 网址导航</span><br><span class="line">            li</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/&#x27;) 来杯咖啡</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/comments&#x27;) 留点什么</span><br><span class="line">            li</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/about&#x27;) 关于博主</span><br><span class="line">              a(href=&#x27;https://fe32.top/archives/&#x27;) 文章归档</span><br><span class="line">            li</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/categories&#x27;) 文章分类</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/tags&#x27;) 文章标签</span><br><span class="line">            li</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/&#x27;) 我的相册</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/&#x27;) 我的追番</span><br><span class="line">            li</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/&#x27;) 一些特效</span><br><span class="line">              a(href=&#x27;https://blog.3ms.run/&#x27;) 一些壁纸</span><br><span class="line">    .ft-item-2</span><br><span class="line">      p.ft-t 推荐友链</span><br><span class="line">      .ft-img-group</span><br><span class="line">        .img-group-item</span><br><span class="line">          a(href=&#x27;https://blog.3ms.run/&#x27;)</span><br><span class="line">            img(src=&#x27;/img/avatar-icon.jpg&#x27; alt=&#x27; ZeroLatency&#x27; title=&#x27;ZeroLatency&#x27;)</span><br><span class="line">        .img-group-item</span><br><span class="line">          a(href=&#x27;https://www.muooy.com/&#x27;)</span><br><span class="line">            img(src=&#x27;https://www.muooy.com/favicon.png&#x27; alt=&#x27;大理鱼儿&#x27; title=&#x27;大理鱼儿&#x27;)</span><br><span class="line">        .img-group-item</span><br><span class="line">          a(href=&#x27;https://blog.elykia.cn/&#x27; rel=&quot;external nofollow noreferrer noopener&quot;)</span><br><span class="line">            img(src=&#x27;https://bu.dusays.com/2024/10/25/671b2438203a6.gif&#x27; alt=&#x27;Elykia&#x27; title=&#x27;Elykia&#x27;)</span><br><span class="line">        .img-group-item</span><br><span class="line">          a(href=&#x27;https://blog.fiveth.cc/&#x27; rel=&quot;external nofollow noreferrer noopener&quot;)</span><br><span class="line">            img(src=&#x27;https://p.fiveth.cc/avatar.png&#x27; alt=&#x27;Fiveth&#x27; title=&#x27;Fiveth&#x27;)</span><br><span class="line">  if theme.footer.owner.enable</span><br><span class="line">    - var now = new Date()</span><br><span class="line">    - var nowYear = now.getFullYear()</span><br><span class="line">    if theme.footer.owner.since &amp;&amp; theme.footer.owner.since != nowYear</span><br><span class="line">      .copyright!= `&amp;copy;$&#123;theme.footer.owner.since&#125; - $&#123;nowYear + &#x27; &#x27;&#125; &lt;i id=&quot;heartbeat&quot; class=&quot;fa fas fa-heartbeat&quot;&gt;&lt;/i&gt; $&#123;config.author&#125;`</span><br><span class="line">    else</span><br><span class="line">      .copyright!= `&amp;copy;$&#123;nowYear + &#x27; &#x27;&#125; &lt;i id=&quot;heartbeat&quot; class=&quot;fa fas fa-heartbeat&quot;&gt;&lt;/i&gt; $&#123;config.author&#125;`</span><br><span class="line">  if theme.footer.copyright</span><br><span class="line">    .framework-info</span><br><span class="line">      span= _p(&#x27;footer.framework&#x27;) + &#x27; &#x27;</span><br><span class="line">      a(href=&#x27;https://hexo.io&#x27;)= &#x27;Hexo&#x27;</span><br><span class="line">      span.footer-separator |</span><br><span class="line">      span= _p(&#x27;footer.theme&#x27;) + &#x27; &#x27;</span><br><span class="line">      a(href=&#x27;https://github.com/jerryc127/hexo-theme-butterfly&#x27;)= &#x27;Butterfly&#x27;</span><br><span class="line">  if theme.footer.custom_text</span><br><span class="line">    .footer_custom_text!=`$&#123;theme.footer.custom_text&#125;`</span><br></pre></td></tr></table></figure><div class="note warning flat"><p>你需要添加的代码为#ft整个 div，注意在缩进上与主题的几个if对齐。这里你可以根据自己的需求修改以上内容等，例如【说点什么】、自定义底部导航链接等，【推荐友链】的图片尺寸建议 1:1。</p></div><p>将以下代码复制到自定义的css中，不会自定义css的请阅读：<a href="https://blog.3ms.run/archives/2fff1258.html#%E8%87%AA%E5%AE%9A%E4%B9%89CSS-JS%E6%96%B9%E6%B3%95">Butterfly主题博客魔改美化教程总览（一）</a></p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br><span class="line">180</span><br><span class="line">181</span><br><span class="line">182</span><br><span class="line">183</span><br><span class="line">184</span><br><span class="line">185</span><br><span class="line">186</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-pseudo">:root</span> &#123;</span><br><span class="line">    </span><br><span class="line">    <span class="attr">--daliyuer-border</span>: <span class="number">#e3e3e3</span>;</span><br><span class="line">    <span class="attr">--font-bg</span>: <span class="number">#fff</span>;</span><br><span class="line">    <span class="attr">--font-color</span>: <span class="number">#4c4948</span>;</span><br><span class="line">    <span class="attr">--daliyuer-bd-rd</span>: <span class="number">6px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&#x27;dark&#x27;</span>]</span> &#123;</span><br><span class="line">    <span class="attr">--font-bg</span>: <span class="number">#0d0d0d</span>;</span><br><span class="line">    <span class="attr">--daliyuer-border</span>: <span class="number">#e3e3e3</span>;</span><br><span class="line">    <span class="attr">--font-color</span>: <span class="built_in">rgba</span>(<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>, <span class="number">0.7</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 自定义底部  start */</span></span><br><span class="line"></span><br><span class="line"><span class="selector-id">#footer</span> &#123;</span><br><span class="line">    <span class="attribute">border-top</span>: <span class="number">1px</span> solid <span class="built_in">var</span>(--daliyuer-border);</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="built_in">var</span>(--font-bg) <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* #footer-wrap &#123;</span></span><br><span class="line"><span class="comment">    background-color: var(--font-bg);</span></span><br><span class="line"><span class="comment">&#125; */</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="selector-id">#footer-wrap</span>,</span><br><span class="line"><span class="selector-id">#footer-wrap</span> <span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--font-color)</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#ft</span> &#123;</span><br><span class="line">    <span class="attribute">max-width</span>: <span class="number">1200px</span>;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">0</span> auto <span class="number">12px</span>;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--font-color) <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">text-align</span>: left;</span><br><span class="line">    <span class="attribute">flex-wrap</span>: wrap;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-1</span>,</span><br><span class="line"><span class="selector-class">.ft-item-2</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">10px</span> <span class="number">14px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-1</span> &#123;</span><br><span class="line">    <span class="attribute">flex-direction</span>: column;</span><br><span class="line">    <span class="attribute">flex</span>: <span class="number">2</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-2</span> &#123;</span><br><span class="line">    <span class="attribute">flex</span>: <span class="number">1</span>;</span><br><span class="line">    <span class="attribute">flex-direction</span>: column;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.t-top</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.t-top</span> <span class="selector-class">.t-t-l</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">flex-direction</span>: column;</span><br><span class="line">    <span class="attribute">flex</span>: <span class="number">1.4</span>;</span><br><span class="line">    <span class="attribute">margin-right</span>: <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.t-top</span> <span class="selector-class">.t-t-l</span> <span class="selector-class">.bg-ad</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">85%</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">10px</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">0</span> <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.btn-xz-box</span> &#123;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.btn-xz</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: block;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="built_in">var</span>(--btn-bg);</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--daliyuer-white) <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">text-align</span>: center;</span><br><span class="line">    <span class="attribute">line-height</span>: <span class="number">2.4</span>;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">8px</span> <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">cursor</span>: pointer <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="built_in">var</span>(--daliyuer-bd-rd);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.btn-xz</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">text-decoration</span>: none <span class="meta">!important</span>;</span><br><span class="line"></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.btn-xz-box</span><span class="selector-pseudo">:hover</span> <span class="selector-class">.btn-xz</span> &#123;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="built_in">var</span>(--btn-hover-color);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.t-top</span> <span class="selector-class">.t-t-r</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">flex-direction</span>: column;</span><br><span class="line">    <span class="attribute">flex</span>: <span class="number">1</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-links</span> &#123;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">0</span> <span class="number">14px</span>;</span><br><span class="line">    <span class="attribute">list-style</span>: none;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-links</span> <span class="selector-tag">li</span> <span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: inline-block <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">50%</span>;</span><br><span class="line">    <span class="attribute">cursor</span>: pointer <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-links</span> <span class="selector-tag">li</span> <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">text-decoration</span>: none <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--btn-hover-color) <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-2</span> <span class="selector-class">.ft-img-group</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-t</span> &#123;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">0.8rem</span>;</span><br><span class="line">    <span class="attribute">margin-bottom</span>: <span class="number">20px</span>;</span><br><span class="line">    <span class="attribute">line-height</span>: <span class="number">1</span>;</span><br><span class="line">    <span class="attribute">font-weight</span>: <span class="number">600</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.t-l-t</span> &#123;</span><br><span class="line">    <span class="attribute">padding-left</span>: <span class="number">14px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-2</span> <span class="selector-class">.ft-img-group</span> <span class="selector-class">.img-group-item</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: inline-block;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">18.4%</span>;</span><br><span class="line">    <span class="attribute">margin-right</span>: <span class="number">14px</span>;</span><br><span class="line">    <span class="attribute">margin-bottom</span>: <span class="number">6px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-2</span> <span class="selector-class">.ft-img-group</span> <span class="selector-class">.img-group-item</span> <span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: inline-block;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">cursor</span>: pointer <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.ft-item-2</span> <span class="selector-class">.ft-img-group</span> <span class="selector-class">.img-group-item</span> <span class="selector-tag">a</span> <span class="selector-tag">img</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">max-height</span>: <span class="number">80px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">max-width</span>: <span class="number">768px</span>) &#123;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.ft-item-1</span> &#123;</span><br><span class="line">        <span class="attribute">flex-basis</span>: <span class="number">100%</span> <span class="meta">!important</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.ft-item-2</span> &#123;</span><br><span class="line">        <span class="attribute">flex-basis</span>: <span class="number">100%</span> <span class="meta">!important</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.t-top</span> <span class="selector-class">.t-t-l</span> <span class="selector-class">.bg-ad</span> &#123;</span><br><span class="line">        <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">max-width</span>: <span class="number">576px</span>) &#123;</span><br><span class="line">    <span class="selector-class">.t-top</span> &#123;</span><br><span class="line">        <span class="attribute">flex-wrap</span>: wrap;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.t-top</span> <span class="selector-class">.t-t-l</span> &#123;</span><br><span class="line">        <span class="attribute">flex-basis</span>: <span class="number">100%</span> <span class="meta">!important</span>;</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.t-top</span> <span class="selector-class">.t-t-r</span> &#123;</span><br><span class="line">        <span class="attribute">margin-top</span>: <span class="number">16px</span>;</span><br><span class="line">        <span class="attribute">flex-basis</span>: <span class="number">100%</span> <span class="meta">!important</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 自定义底部  End */</span></span><br></pre></td></tr></table></figure><div class="note info flat"><p>css 中的<code>--font-bg</code>，<code>--daliyuer-border</code>，<code>font-color</code>颜色改成你自己的。</p></div><h2 id="页脚GitHub徽标"><a href="#页脚GitHub徽标" class="headerlink" title="页脚GitHub徽标"></a>页脚GitHub徽标</h2><p><strong>需要使用的的网站</strong>：</p><ol><li>github徽标生成网站：<a href="https://shields.io/">shields</a></li><li>图标查询网站：<a href="https://simpleicons.org/">simpleicons</a></li></ol><h3 id="具体步"><a href="#具体步" class="headerlink" title="具体步"></a>具体步</h3><ol><li><p>通过<a href="https://shields.io/">shields.io</a>在线生成。</p><ul><li>label:标签，徽标左侧内容</li><li>message:信息，徽标右侧内容</li><li>color:色值,支持支持十六进制、rgb、rgba、hsl、hsla和 css 命名颜色。十六进制记得删除前面的#号</li></ul></li><li><p>输入相关信息后，点击<code>make badge</code>即可得到徽标的URL。可以用img标签引用，写法简单。不过正式写法建议用object标签引用，写法示例如下。</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- label=Frame，Message=Hexo，color=blue --&gt;</span></span><br><span class="line">https://img.shields.io/badge/Frame-Hexo-blue</span><br><span class="line"><span class="comment">&lt;!-- 在页面上可以使用img标签来引用 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue&quot;</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 部分属性例如link需要用object标签来引用 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">object</span> <span class="attr">data</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?link=https://hexo.io&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">object</span>&gt;</span></span><br></pre></td></tr></table></figure></li><li><p>拓展写法示例<div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">shields属性说明</button><button type="button" class="tab">示例代码演示</button></div><div class="tab-contents"><div class="tab-item-content active"><p>   仅仅如此肯定是不能令人满意的，还可以继续添加样式。<a href="https://shields.io/">shields.io</a>提供直接在URL内添加样式属性的功能。使用?引用，使用&amp;连接各属性。</p><table><thead><tr><th align="center">属性</th><th align="center">说明</th><th align="center">示例</th></tr></thead><tbody><tr><td align="center">style</td><td align="center">徽标样式，默认提供了五种样式：<br/>plastic,flat,flat-square,<br/>for-the-badge,social<br/></td><td align="center">?style&#x3D;flat-square</td></tr><tr><td align="center">label</td><td align="center">覆盖默认的左侧文本<br/>（空格或特殊字符需要转URL编码！）</td><td align="center">?label&#x3D;healthinesses</td></tr><tr><td align="center">logo</td><td align="center">给左侧标签前插入图标<br/>可以访问<a href="https://simpleicons.org/">simpleicons</a>查询图标</td><td align="center">?logo&#x3D;data:image&#x2F;png;base64,url</td></tr><tr><td align="center">logo</td><td align="center">自定义图标，限制较多，不推荐</td><td align="center"></td></tr><tr><td align="center">logoColor</td><td align="center">设置徽标的颜色（支持十六进制、rgb、rgba、hsl、hsla和 css 命名颜色）。支持命名徽标，但不支持自定义徽标。</td><td align="center">?logoColor&#x3D;violet</td></tr><tr><td align="center">logoWidth</td><td align="center">给图标提供的水平空间</td><td align="center">?logoWidth&#x3D;40</td></tr><tr><td align="center">link</td><td align="center">徽标指向的链接，此时需要用object标签引用才能生效写法看示例代码</td><td align="center">?link&#x3D;<a href="http://example.com/">http://example.com</a></td></tr><tr><td align="center">labelColor</td><td align="center">左侧部分背景色，（支持十六进制、rgb、rgba、hsl、hsla和 css 命名颜色）</td><td align="center">?labelColor&#x3D;abcdef或者?colorA&#x3D;abcdef</td></tr><tr><td align="center">color</td><td align="center">右侧部分背景色，（支持十六进制、rgb、rgba、hsl、hsla和 css 命名颜色）</td><td align="center">?color&#x3D;fedcba或者?colorB&#x3D;fedcba</td></tr></tbody></table></div><div class="tab-item-content"><p><strong>代码</strong>：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">&lt;!-- 普通样式 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue&quot;</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 五种style预览 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;style=plastic&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;style=flat&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;style=flat-square&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;style=for-the-badge&quot;</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;style=social&quot;</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 添加图标和自定义label --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;label=框架&quot;</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 添加图标和图标宽度 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;logoWidth=30&quot;</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 图标、label、message三部分颜色自定义 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;label=框架&amp;logoColor=violet&amp;labalColor=#1fd041&amp;color=rgb(222, 31, 31)&quot;</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 给标签添加链接 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">object</span> <span class="attr">data</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&amp;link=https://hexo.io/&amp;https://hexo.io/zh-cn/docs/&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">object</span>&gt;</span></span><br><span class="line"><span class="comment">&lt;!-- 也可以通过嵌套a标签来实现添加链接 --&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">target</span>=<span class="string">&quot;_blank&quot;</span> <span class="attr">href</span>=<span class="string">&quot;https://hexo.io&quot;</span> <span class="attr">title</span>=<span class="string">&quot;框架采用Hexo&quot;</span>&gt;</span><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&quot;https://img.shields.io/badge/Frame-Hexo-blue&quot;</span>&gt;</span><span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p><strong>样式预览</strong>：</p><ol><li>普通样式：<img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue"  /> </li><li>五种style预览：<img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&style=plastic"  />  <img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&style=flat"  />  <img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&style=flat-square"  />  <img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&style=for-the-badge"  />  <img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&style=social"  /></li><li>添加图标和自定义label：<img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&label=框架"  /> </li><li>添加图标和图标宽度：<img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&logoWidth=30"  /></li><li>图标、label、message三部分颜色自定义：<img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&label=框架&logoColor=violet&labalColor=#1fd041&color=rgb(222," style="height:31," /></li></ol><p>给标签添加链接：<object data="https://img.shields.io/badge/Frame-Hexo-blue?logo=Hexo&link=https://hexo.io/&https://hexo.io/zh-cn/docs/"></object><br>用a标签嵌套img标签：<a target="_blank" href="https://hexo.io" title="框架采用Hexo"><img class="inline-img" src="https://img.shields.io/badge/Frame-Hexo-blue"  /></a></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></p></li><li><p>在主题配置文件<code>_config.butterfly.yml</code>的<code>footer</code>配置项中添加徽标。为了不至于太过紧凑，用&nbsp;(空格的转义字符)隔开。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">footer:</span></span><br><span class="line">  <span class="attr">owner:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">    <span class="attr">since:</span> <span class="number">2024</span></span><br><span class="line"><span class="bullet">-</span>  <span class="attr">custom_text:</span></span><br><span class="line"><span class="string">+</span>  <span class="attr">custom_text:</span> <span class="string">|</span></span><br><span class="line"><span class="string">    &lt;p&gt;</span></span><br><span class="line"><span class="string">    &lt;a target=&quot;_blank&quot; href=&quot;https://hexo.io/&quot; rel=&quot;external nofollow noreferrer noopener&quot;&gt;&lt;img class=&quot;nolazyload&quot;</span></span><br><span class="line"><span class="string">            src=&quot;https://img.shields.io/badge/Frame-Hexo-blue?style=flat&amp;logo=hexo&quot; title=&quot;博客框架为Hexo&quot; alt=&quot;博客框架为Hexo&quot;&gt;&lt;/a&gt;&amp;nbsp;</span></span><br><span class="line"><span class="string">    &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/jerryc127/hexo-theme-butterfly&quot; rel=&quot;external nofollow noreferrer noopener&quot;&gt;&lt;img class=&quot;nolazyload&quot;</span></span><br><span class="line"><span class="string">            src=&quot;https://img.shields.io/badge/Theme-Butterfly-6513df?style=flat&amp;logo=bitdefender&quot;</span></span><br><span class="line"><span class="string">            title=&quot;主题采用butterfly&quot; alt=&quot;主题采用butterfly&quot;&gt;&lt;/a&gt;&amp;nbsp;</span></span><br><span class="line"><span class="string">    &lt;a target=&quot;_blank&quot; href=&quot;#&quot; rel=&quot;external nofollow noreferrer noopener&quot;&gt;&lt;img class=&quot;nolazyload&quot;</span></span><br><span class="line"><span class="string">            src=&quot;https://img.shields.io/badge/CDN-jsDelivr-orange?style=flat&amp;logo=jsDelivr&quot;</span></span><br><span class="line"><span class="string">            title=&quot;本站使用JsDelivr为静态资源提供CDN加速&quot; alt=&quot;本站使用JsDelivr为静态资源提供CDN加速&quot;&gt;&lt;/a&gt; &amp;nbsp;</span></span><br><span class="line"><span class="string">    &lt;a target=&quot;_blank&quot; href=&quot;https://vercel.com/&quot; rel=&quot;external nofollow noreferrer noopener&quot;&gt;&lt;img class=&quot;nolazyload&quot;</span></span><br><span class="line"><span class="string">            src=&quot;https://img.shields.io/badge/Hosted-Vervel-brightgreen?style=flat&amp;logo=Vercel&quot;</span></span><br><span class="line"><span class="string">            title=&quot;本站采用双线部署，默认线路托管于Vercel&quot; alt=&quot;线路托管于Vercel&quot;&gt;&lt;/a&gt;&amp;nbsp;</span></span><br><span class="line"><span class="string">    &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/&quot; rel=&quot;external nofollow noreferrer noopener&quot;&gt;&lt;img class=&quot;nolazyload&quot;</span></span><br><span class="line"><span class="string">            src=&quot;https://img.shields.io/badge/Source-Github-d021d6?style=flat&amp;logo=GitHub&quot;</span></span><br><span class="line"><span class="string">            title=&quot;本站项目由Gtihub托管&quot; alt=&quot;本站项目由Gtihub托管&quot;&gt;&lt;/a&gt;&amp;nbsp;</span></span><br><span class="line"><span class="string">    &lt;a target=&quot;_blank&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/4.0/&quot; rel=&quot;external nofollow noreferrer noopener&quot;&gt;&lt;img class=&quot;nolazyload&quot;</span></span><br><span class="line"><span class="string">            src=&quot;https://img.shields.io/badge/Copyright-BY--NC--SA%204.0-d42328?style=flat&amp;logo=Claris&quot;</span></span><br><span class="line"><span class="string">            title=&quot;本站采用知识共享署名-非商业性使用-相同方式共享4.0国际许可协议进行许可&quot; alt=&quot;知识共享署名&quot;&gt;&lt;/a&gt;</span></span><br><span class="line"><span class="string">    &lt;/p&gt;</span></span><br><span class="line"><span class="string"></span>  <span class="comment"># Copyright of theme and framework</span></span><br><span class="line">  <span class="attr">copyright:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure></li></ol><p>参考原文：<a href="https://fe32.top/articles/hexo1617/">Hexo + Butterfly 自定义页脚 | 唐志远</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;h2 id=&quot;系列文章&quot;&gt;&lt;a href=&quot;#系列文章&quot; class=&quot;headerlink&quot; title=&quot;系列文章&quot;&gt;&lt;/a&gt;系列文章&lt;/h2&gt;&lt;ol class=&quot;series-items&quot;&gt;&lt;li&gt;&lt;a href=&quot;/archives/2fff1258.html&quot; ti</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="Butterfly" scheme="https://blog.3ms.run/tags/Butterfly/"/>
    
    <category term="Butterfly魔改" scheme="https://blog.3ms.run/tags/Butterfly%E9%AD%94%E6%94%B9/"/>
    
  </entry>
  
  <entry>
    <title>绕过 CDN 获取真实 IP 的方法</title>
    <link href="https://blog.3ms.run/archives/89144030.html"/>
    <id>https://blog.3ms.run/archives/89144030.html</id>
    <published>2025-04-21T23:49:23.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>虽然 CDN（内容分发网络）极大提升了网站访问速度与安全性，但同时也给网络取证工作带来了新的挑战。由于 CDN 会将请求分发至各个节点，通常获取到的 IP 地址是 CDN 节点的虚拟地址，而非网站服务器的真实 IP。因此，在某些调查场景中，我们需要绕过 CDN，探寻目标网站的真实地址。</p></blockquote><h2 id="常见-CDN-服务商"><a href="#常见-CDN-服务商" class="headerlink" title="常见 CDN 服务商"></a>常见 CDN 服务商</h2><h3 id="国内-CDN-提供商"><a href="#国内-CDN-提供商" class="headerlink" title="国内 CDN 提供商"></a>国内 CDN 提供商</h3><p>阿里云 CDN，百度云加速，七牛云，又拍云，腾讯云 CDN，UCloud，360 网站卫士，网宿科技，ChinaCache（蓝汛），帝联科技，等</p><h3 id="国外-CDN-提供商"><a href="#国外-CDN-提供商" class="headerlink" title="国外 CDN 提供商"></a>国外 CDN 提供商</h3><p>Cloudflare，StackPathFastlyAkamai，Amazon CloudFront，Edgecast，CDNetworks，Google Cloud CDN，CacheFly，KeyCDN，UDomain，CDN77，等</p><h2 id="如何判断网站是否启用-CDN？"><a href="#如何判断网站是否启用-CDN？" class="headerlink" title="如何判断网站是否启用 CDN？"></a>如何判断网站是否启用 CDN？</h2><h3 id="方法一：多地-Ping-测试"><a href="#方法一：多地-Ping-测试" class="headerlink" title="方法一：多地 Ping 测试"></a>方法一：多地 Ping 测试</h3><p>使用多地 Ping 工具检测域名的解析 IP 地址是否唯一。如果不同地点的解析 IP 不一致，很可能是部署了 CDN。推荐工具：</p><ul><li><a href="http://ping.chinaz.com/">站长之家 Ping</a></li><li><a href="http://ping.aizhan.com/">爱站 Ping</a></li><li><a href="http://ce.cloud.360.cn/">360 网站测速</a></li></ul><hr><p><img src="https://img.muooy.com/img/1/2025/04/22/68066ebf3dbf8.webp" alt="绕过 CDN 获取真实 IP 的方法"></p><h3 id="方法二：使用-nslookup"><a href="#方法二：使用-nslookup" class="headerlink" title="方法二：使用 nslookup"></a>方法二：使用 <code>nslookup</code></h3><p>通过 <code>nslookup</code> 查看域名解析结果，若返回多个不同 IP，也可能为 CDN 所致。</p><p><img src="https://img.muooy.com/img/1/2025/04/22/68066f49e1375.webp" alt="绕过 CDN 获取真实 IP 的方法"></p><h2 id="绕过-CDN-查找真实-IP-的方法"><a href="#绕过-CDN-查找真实-IP-的方法" class="headerlink" title="绕过 CDN 查找真实 IP 的方法"></a>绕过 CDN 查找真实 IP 的方法</h2><h3 id="方法一：查询历史-DNS-记录"><a href="#方法一：查询历史-DNS-记录" class="headerlink" title="方法一：查询历史 DNS 记录"></a>方法一：查询历史 DNS 记录</h3><p>可以尝试查看域名历史解析记录，可能找到部署 CDN 前的真实 IP。推荐网站：</p><ul><li><a href="https://dnsdb.io/zh-cn/">dnsdb.io</a></li><li><a href="https://x.threatbook.cn/">微步在线</a></li><li><a href="http://toolbar.netcraft.com/site_report?url=">Netcraft</a></li><li><a href="http://viewdns.info/">ViewDNS</a></li><li><a href="https://tools.ipip.net/cdn.php">IPIP CDN 检测</a></li></ul><h3 id="方法二：子域名信息挖掘"><a href="#方法二：子域名信息挖掘" class="headerlink" title="方法二：子域名信息挖掘"></a>方法二：子域名信息挖掘</h3><p>部分二级域名未部署 CDN，因此可能泄露真实 IP。常用工具与平台：</p><ol><li><strong>微步在线</strong>：查询目标域名的子域名信息</li><li><strong>DNSDB</strong>：查询子域名及其 A 记录</li><li><strong>子域名挖掘工具</strong>（如 SubDomainsBrute、OneForAll、Sublist3r 等）</li></ol><p>此外，开发者在部署测试环境时，可能未清理调试信息（如 phpinfo 文件），通过 Google dork 如 <code>inurl:phpinfo.php</code> 可进一步挖掘。</p><p><img src="https://img.muooy.com/img/1/2025/04/22/68067045255ae.webp" alt="绕过 CDN 查找真实 IP 的方法"></p><h3 id="方法三：利用网络空间搜索引擎"><a href="#方法三：利用网络空间搜索引擎" class="headerlink" title="方法三：利用网络空间搜索引擎"></a>方法三：利用网络空间搜索引擎</h3><p>使用如 <strong>FOFA、Shodan、Censys</strong> 等搜索引擎，通过网站特征（title、body、icon hash 等）反查真实 IP：</p><ul><li>示例：<code>title=&quot;网站名称&quot;</code>、<code>body=&quot;特征代码&quot;</code></li></ul><p><img src="https://img.muooy.com/img/1/2025/04/22/680670882e87b.webp" alt="绕过 CDN 获取真实 IP 的方法"></p><h3 id="方法四：使用国外-DNS-或多地-Ping"><a href="#方法四：使用国外-DNS-或多地-Ping" class="headerlink" title="方法四：使用国外 DNS 或多地 Ping"></a>方法四：使用国外 DNS 或多地 Ping</h3><p>部分 CDN 仅在国内部署，使用国外的 DNS 或多地 Ping 工具可能解析出原始服务器 IP：</p><ul><li><a href="https://asm.ca.com/zh_cn/ping.php">ASM Ping 测试</a></li><li><a href="http://host-tracker.com/">Host-Tracker</a></li><li><a href="http://www.webpagetest.org/">WebPageTest</a></li><li><a href="https://dnscheck.pingdom.com/">Pingdom DNSCheck</a></li></ul><h3 id="方法五：分析网站发送的邮件头信息"><a href="#方法五：分析网站发送的邮件头信息" class="headerlink" title="方法五：分析网站发送的邮件头信息"></a>方法五：分析网站发送的邮件头信息</h3><p>如果目标网站支持注册、找回密码、邮件订阅等功能，可以尝试注册账号并查看邮件头部信息，邮件服务器地址往往是未经过 CDN 的真实 IP。</p><p><img src="https://img.muooy.com/img/1/2025/04/22/680670f05703d.webp" alt="绕过 CDN 获取真实 IP 的方法"></p><h3 id="方法六：利用-SSL-证书信息"><a href="#方法六：利用-SSL-证书信息" class="headerlink" title="方法六：利用 SSL 证书信息"></a>方法六：利用 SSL 证书信息</h3><p>证书日志中常记录有服务器的域名、IP 和相关子域信息。通过 SSL 证书平台可反查：</p><ul><li><a href="https://censys.io/ipv4?q=github.com">Censys 证书搜索</a></li></ul><p><img src="https://img.muooy.com/img/1/2025/04/22/68067146eaf8f.webp" alt="绕过 CDN 获取真实 IP 的方法"></p><h3 id="方法七：利用信息泄露或漏洞"><a href="#方法七：利用信息泄露或漏洞" class="headerlink" title="方法七：利用信息泄露或漏洞"></a>方法七：利用信息泄露或漏洞</h3><ul><li><strong>敏感文件暴露</strong>：如 phpinfo、git 配置等</li><li><strong>漏洞利用</strong>：如 SSRF、XSS、命令执行等</li><li><strong>社会工程学</strong>：获取 CDN 控制台权限，查看真实 IP</li></ul><h3 id="方法八：全网扫描比对"><a href="#方法八：全网扫描比对" class="headerlink" title="方法八：全网扫描比对"></a>方法八：全网扫描比对</h3><p>使用 Zmap 或 Masscan 扫描整个公网，并结合网站特征过滤结果：</p><ul><li><a href="https://github.com/zmap/zmap">Zmap GitHub</a></li><li><a href="https://github.com/robertdavidgraham/masscan">Masscan GitHub</a></li></ul><h3 id="方法九：F5-LTM-Cookie-解码"><a href="#方法九：F5-LTM-Cookie-解码" class="headerlink" title="方法九：F5 LTM Cookie 解码"></a>方法九：F5 LTM Cookie 解码</h3><p>F5 LTM 负载均衡设备会在 Cookie 中写入后端服务器地址，可通过 Cookie 值解码出真实 IP。例如：</p><figure class="highlight txt"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">Set-Cookie: BIGipServerpool_xxx=605532106.22012.0000</span><br></pre></td></tr></table></figure><ol><li>先把第一小节的十进制数，即 <code>605532106</code> 取出来</li><li>将其转为十六进制数 <code>2417afca</code></li><li>接着从后至前，取四个字节出来：<code>CA AF 17 24</code></li><li>最后依次转为十进制数 <code>202.175.23.36</code>，即是服务器的真实 ip 地址。</li></ol><h3 id="方法十：HTTP-请求头分析"><a href="#方法十：HTTP-请求头分析" class="headerlink" title="方法十：HTTP 请求头分析"></a>方法十：HTTP 请求头分析</h3><p>某些 HTTP 响应头（如 <code>Server</code>）可能暴露真实服务信息。通过搜索引擎如 Censys 查询特定标头也有机会发现原始 IP：</p><p>示例查询：</p><figure class="highlight pgsql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="number">80.</span>http.<span class="keyword">get</span>.headers.<span class="keyword">server</span>:cloudflare</span><br></pre></td></tr></table></figure><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>CDN 作为一种加速与防护机制，本质上是提升访问体验与网站安全。然而在某些调查与取证需求下，它也成为信息获取的一道“屏障”。通过上述方法，我们可以从多个维度尝试绕过 CDN，定位背后的真实服务器 IP。在执法或合规场景中，若确认使用了国内 CDN 服务，还可考虑通过法律途径申请调证以获取真实信息。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;虽然 CDN（内容分发网络）极大提升了网站访问速度与安全性，但同时也给网络取证工作带来了新的挑战。由于 CDN 会将请求分发至各个节点，通常获取到的 IP 地址是 CDN 节点的虚拟地址，而非网站服务器的真实 IP。因此，在某些调查场景中，我们需要</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.3ms.run/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="教程" scheme="https://blog.3ms.run/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="DNS查询" scheme="https://blog.3ms.run/tags/DNS%E6%9F%A5%E8%AF%A2/"/>
    
    <category term="IP溯源" scheme="https://blog.3ms.run/tags/IP%E6%BA%AF%E6%BA%90/"/>
    
    <category term="CDN绕过" scheme="https://blog.3ms.run/tags/CDN%E7%BB%95%E8%BF%87/"/>
    
    <category term="网络安全" scheme="https://blog.3ms.run/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    <category term="DNS分析" scheme="https://blog.3ms.run/tags/DNS%E5%88%86%E6%9E%90/"/>
    
  </entry>
  
  <entry>
    <title>玻璃与蜗牛</title>
    <link href="https://blog.3ms.run/archives/1d243e1c.html"/>
    <id>https://blog.3ms.run/archives/1d243e1c.html</id>
    <published>2025-04-17T22:23:10.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<p>储物柜最深处藏着的玻璃瓶又多了道裂痕，那是我收集的第七块窗户碎片。母亲搬走那夜砸碎的落地窗，此刻正以尖锐的形态蛰伏在书包夹层，每当有人扯我后领，玻璃与帆布摩擦的沙沙声便代替我发出警报。</p><h2 id="碎镜效应"><a href="#碎镜效应" class="headerlink" title="碎镜效应"></a>碎镜效应</h2><p>父母在教务处签完离婚协议那天，我的课桌里爬满了蜗牛。它们在离婚证书复印件上留下银色黏液，后排男生用圆珠笔戳爆蜗牛壳的脆响，与我胸腔的震颤形成奇妙共鸣。当班主任把湿淋淋的蜗牛尸体扫进簸箕时，粉笔灰正簌簌落在我未干的泪痕上。</p><p>我开始在手工课收集碎玻璃。美术刀划破包装纸的瞬间，总会想起母亲撕碎全家福的姿势。当霸凌者第三次把我锁进清洁工具间，月光正透过气窗铁栏，把玻璃瓶照成水晶宫灯的模样。那些嵌在掌纹里的细碎伤口，成为我最早学会破译的疼痛密码。</p><h2 id="静默螺旋"><a href="#静默螺旋" class="headerlink" title="静默螺旋"></a>静默螺旋</h2><p>初中部走廊的监控摄像头像巨型蜗牛探头。我学会在挨打时数对方球鞋的条纹数量，十六次呼吸后他们就会失去兴致。心理咨询室的沙盘里，我总用贝壳筑起环形堡垒，心理老师记录的”创伤后应激反应”在档案柜里与飞蛾标本叠在一起。</p><p>梅雨季的黄昏，我在生物教室喂养被解剖的青蛙。福尔马林雾气中，那个总撕我作业本的女生突然闯进来，她潮湿的刘海贴着额角，手里攥着被雨淋糊的离家信。我们沉默地并排坐着，看青蛙的神经在电流刺激下抽搐，玻璃柜里的标本瓶突然齐齐泛起涟漪。</p><h2 id="珍珠质层"><a href="#珍珠质层" class="headerlink" title="珍珠质层"></a>珍珠质层</h2><p>毕业体检X光片显示，我的第六根肋骨有贝壳状增生。校医说这是长期蜷缩睡觉的印记，我却看见十七岁的自己正用黏液把碎玻璃黏合成铠甲。当那个总踹我椅子的男生在篮球赛骨折时，我掌心的旧伤突然开始发烫——原来有些疼痛会在时差里形成闭环。</p><p>十年后重返母校，发现当年刻满求救信号的梧桐树被制成礼堂长椅。某个暴雨突降的午后，我撞见穿校服的女孩正往树瘤缝隙塞玻璃片，她的耳骨钉在阴天里闪着冷光。我们隔着二十年时光对望，直到她指间的血珠与我的旧疤痕在雨水中达成共振。</p><p>如今我的心理咨询室挂着蜗牛壳制成的风铃，每当夜风吹过，那些螺旋纹路里就会飘出细碎的星光。最后一个来访者留下半瓶彩色玻璃碎片，说这是在老校舍拆迁时捡到的月光。我摸着肋骨上的凸起突然明白：所有带着伤痕行走的人，都在用毕生时间把沙粒磨成珍珠的经纬。</p><div class="note warning flat"><p>「本文为虚构作品，如有雷同，纯属巧合」</p></div>]]></content>
    
    
    <summary type="html">储物柜最深处藏着的玻璃瓶又多了道裂痕，那是我收集的第七块窗户碎片。母亲搬走那夜砸碎的落地窗，此刻正以尖锐的形态蛰伏在书包夹层，每当有人扯我后领，玻璃与帆布摩擦的沙沙声便代替我发出警报。</summary>
    
    
    
    <category term="闲聊杂谈" scheme="https://blog.3ms.run/categories/%E9%97%B2%E8%81%8A%E6%9D%82%E8%B0%88/"/>
    
    
  </entry>
  
  <entry>
    <title>Hexo使用gulp压缩博客Html+CSS+JS静态资源</title>
    <link href="https://blog.3ms.run/archives/a2264388.html"/>
    <id>https://blog.3ms.run/archives/a2264388.html</id>
    <published>2025-04-14T18:13:06.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>Gulp作为前端工作流的自动化工具，能够高效处理各类静态资源压缩任务。通过其丰富的插件生态系统，开发者可以实现：</p><ul><li>CSS文件的极致压缩</li><li>JavaScript代码的智能优化</li><li>HTML文档的轻量化处理</li><li>字体文件的按需提取</li></ul><p><strong>注意</strong>：虽然Gulp支持图片压缩，但相比专业的图片优化工具如imagine、tinypng等，其压缩效果有限（通常仅能减少几十KB），因此本文不包含图片压缩相关内容。</p></blockquote><h2 id="环境准备：Gulp安装与配置"><a href="#环境准备：Gulp安装与配置" class="headerlink" title="环境准备：Gulp安装与配置"></a>环境准备：Gulp安装与配置</h2><h3 id="基础安装步骤"><a href="#基础安装步骤" class="headerlink" title="基础安装步骤"></a>基础安装步骤</h3><ol><li><p>全局安装Gulp命令行工具：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install --global gulp-cli <span class="comment">#全局安装gulp指令集</span></span><br></pre></td></tr></table></figure></li><li><p>项目本地安装Gulp：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp --save</span><br></pre></td></tr></table></figure></li><li><p>安装各个下属插件以实现对各类静态资源的压缩</p></li></ol><h2 id="各类资源压缩方案详解"><a href="#各类资源压缩方案详解" class="headerlink" title="各类资源压缩方案详解"></a>各类资源压缩方案详解</h2><h3 id="HTML压缩方案"><a href="#HTML压缩方案" class="headerlink" title="HTML压缩方案"></a>HTML压缩方案</h3><p><strong>推荐插件组合</strong>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp-htmlclean --save-dev</span><br><span class="line">npm install gulp-html-minifier-terser --save-dev</span><br><span class="line"><span class="comment"># 用gulp-html-minifier-terser可以压缩HTML中的ES6语法</span></span><br></pre></td></tr></table></figure><p><strong>优势</strong>：</p><ul><li>完整保留ES6语法</li><li>支持高级HTML优化选项</li><li>移除注释和空白字符</li></ul><h3 id="CSS压缩方案"><a href="#CSS压缩方案" class="headerlink" title="CSS压缩方案"></a>CSS压缩方案</h3><p><strong>安装插件</strong>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp-clean-css --save-dev</span><br></pre></td></tr></table></figure><p><strong>特性</strong>：</p><ul><li>自动兼容IE11等老旧浏览器</li><li>智能合并相同规则</li><li>移除无用CSS代码</li></ul><h3 id="JavaScript压缩方案（两种推荐）"><a href="#JavaScript压缩方案（两种推荐）" class="headerlink" title="JavaScript压缩方案（两种推荐）"></a>JavaScript压缩方案（两种推荐）</h3><h4 id="方案一：Babel转译方案（兼容旧浏览器）"><a href="#方案一：Babel转译方案（兼容旧浏览器）" class="headerlink" title="方案一：Babel转译方案（兼容旧浏览器）"></a>方案一：Babel转译方案（兼容旧浏览器）</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp-uglify --save-dev</span><br><span class="line">npm install gulp-babel @babel/core @babel/preset-env --save-dev</span><br></pre></td></tr></table></figure><p><strong>适用场景</strong>：</p><ul><li>需要支持IE等老旧浏览器</li><li>必须将ES6+代码转换为ES5</li></ul><p><strong>潜在问题</strong>：</p><ul><li>变量生命周期变化可能导致bug</li><li>需要手动排除某些文件</li></ul><h4 id="方案二：Terser方案（推荐）"><a href="#方案二：Terser方案（推荐）" class="headerlink" title="方案二：Terser方案（推荐）"></a>方案二：Terser方案（推荐）</h4><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp-terser --save-dev</span><br></pre></td></tr></table></figure><p><strong>优势</strong>：</p><ul><li>保留原始ES6+语法</li><li>无变量作用域问题</li><li>与JsDelivr CDN的.min.js机制一致</li></ul><h3 id="字体文件优化方案"><a href="#字体文件优化方案" class="headerlink" title="字体文件优化方案"></a>字体文件优化方案</h3><p><strong>安装插件</strong>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install gulp-fontmin --save-dev</span><br></pre></td></tr></table></figure><p><strong>注意事项</strong>：</p><ul><li>仅支持TTF格式字体</li><li>根据实际使用字符提取子集</li><li>可减少字体文件90%以上体积</li></ul><h2 id="完整Gulp任务配置"><a href="#完整Gulp任务配置" class="headerlink" title="完整Gulp任务配置"></a>完整Gulp任务配置</h2><p>为Gulp创建<code>gulpfile.js</code>任务脚本。在博客根目录<code>[Blogroot]</code>下新建<code>gulpfile.js</code>,打开<code>[Blogroot]\gulpfile.js</code>,输入以下内容：</p><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">方案一：babel压缩js</button><button type="button" class="tab">方案二：terser压缩js(推荐)</button></div><div class="tab-contents"><div class="tab-item-content active"><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//用到的各个插件</span></span><br><span class="line"><span class="keyword">var</span> gulp = <span class="built_in">require</span>(<span class="string">&#x27;gulp&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> cleanCSS = <span class="built_in">require</span>(<span class="string">&#x27;gulp-clean-css&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> htmlmin = <span class="built_in">require</span>(<span class="string">&#x27;gulp-html-minifier-terser&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> htmlclean = <span class="built_in">require</span>(<span class="string">&#x27;gulp-htmlclean&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> fontmin = <span class="built_in">require</span>(<span class="string">&#x27;gulp-fontmin&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> uglify = <span class="built_in">require</span>(<span class="string">&#x27;gulp-uglify&#x27;</span>)</span><br><span class="line"><span class="keyword">var</span> babel = <span class="built_in">require</span>(<span class="string">&#x27;gulp-babel&#x27;</span>)</span><br><span class="line"><span class="comment">//压缩js</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;compress&#x27;</span>, <span class="title function_">async</span>() =&gt;&#123;</span><br><span class="line">  gulp.<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.js&#x27;</span>, <span class="string">&#x27;!./public/**/*.min.js&#x27;</span>])</span><br><span class="line">    .<span class="title function_">pipe</span>(<span class="title function_">babel</span>(&#123;</span><br><span class="line">      <span class="attr">presets</span>: [<span class="string">&#x27;@babel/preset-env&#x27;</span>]</span><br><span class="line">    &#125;))</span><br><span class="line">    .<span class="title function_">pipe</span>(<span class="title function_">uglify</span>().<span class="title function_">on</span>(<span class="string">&#x27;error&#x27;</span>, <span class="keyword">function</span> (<span class="params">e</span>) &#123;</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">log</span>(e)</span><br><span class="line">    &#125;))</span><br><span class="line">    .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>))</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩css</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;minify-css&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.css&#x27;</span>])</span><br><span class="line">        .<span class="title function_">pipe</span>(<span class="title function_">cleanCSS</span>(&#123;</span><br><span class="line">            <span class="attr">compatibility</span>: <span class="string">&#x27;ie11&#x27;</span></span><br><span class="line">        &#125;))</span><br><span class="line">        .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>));</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩html</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;minify-html&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.<span class="title function_">src</span>(<span class="string">&#x27;./public/**/*.html&#x27;</span>)</span><br><span class="line">        .<span class="title function_">pipe</span>(<span class="title function_">htmlclean</span>())</span><br><span class="line">        .<span class="title function_">pipe</span>(<span class="title function_">htmlmin</span>(&#123;</span><br><span class="line">            <span class="attr">removeComments</span>: <span class="literal">true</span>, <span class="comment">//清除html注释</span></span><br><span class="line">            <span class="attr">collapseWhitespace</span>: <span class="literal">true</span>, <span class="comment">//压缩html</span></span><br><span class="line">            <span class="attr">collapseBooleanAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//省略布尔属性的值，例如：&lt;input checked=&quot;true&quot;/&gt; ==&gt; &lt;input /&gt;</span></span><br><span class="line">            <span class="attr">removeEmptyAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//删除所有空格作属性值，例如：&lt;input id=&quot;&quot; /&gt; ==&gt; &lt;input /&gt;</span></span><br><span class="line">            <span class="attr">removeScriptTypeAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//删除&lt;script&gt;的type=&quot;text/javascript&quot;</span></span><br><span class="line">            <span class="attr">removeStyleLinkTypeAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//删除&lt;style&gt;和&lt;link&gt;的 type=&quot;text/css&quot;</span></span><br><span class="line">            <span class="attr">minifyJS</span>: <span class="literal">true</span>, <span class="comment">//压缩页面 JS</span></span><br><span class="line">            <span class="attr">minifyCSS</span>: <span class="literal">true</span>, <span class="comment">//压缩页面 CSS</span></span><br><span class="line">            <span class="attr">minifyURLs</span>: <span class="literal">true</span>  <span class="comment">//压缩页面URL</span></span><br><span class="line">        &#125;))</span><br><span class="line">        .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>))</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩字体</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">minifyFont</span>(<span class="params">text, cb</span>) &#123;</span><br><span class="line">  gulp</span><br><span class="line">    .<span class="title function_">src</span>(<span class="string">&#x27;./public/fonts/*.ttf&#x27;</span>) <span class="comment">//原字体所在目录</span></span><br><span class="line">    .<span class="title function_">pipe</span>(<span class="title function_">fontmin</span>(&#123;</span><br><span class="line">      <span class="attr">text</span>: text</span><br><span class="line">    &#125;))</span><br><span class="line">    .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public/fontsdest/&#x27;</span>)) <span class="comment">//压缩后的输出目录</span></span><br><span class="line">    .<span class="title function_">on</span>(<span class="string">&#x27;end&#x27;</span>, cb);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;mini-font&#x27;</span>, <span class="function">(<span class="params">cb</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">var</span> buffers = [];</span><br><span class="line">  gulp</span><br><span class="line">    .<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.html&#x27;</span>]) <span class="comment">//HTML文件所在目录请根据自身情况修改</span></span><br><span class="line">    .<span class="title function_">on</span>(<span class="string">&#x27;data&#x27;</span>, <span class="keyword">function</span>(<span class="params">file</span>) &#123;</span><br><span class="line">      buffers.<span class="title function_">push</span>(file.<span class="property">contents</span>);</span><br><span class="line">    &#125;)</span><br><span class="line">    .<span class="title function_">on</span>(<span class="string">&#x27;end&#x27;</span>, <span class="keyword">function</span>(<span class="params"></span>) &#123;</span><br><span class="line">      <span class="keyword">var</span> text = <span class="title class_">Buffer</span>.<span class="title function_">concat</span>(buffers).<span class="title function_">toString</span>(<span class="string">&#x27;utf-8&#x27;</span>);</span><br><span class="line">      <span class="title function_">minifyFont</span>(text, cb);</span><br><span class="line">    &#125;);</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 运行gulp命令时依次执行以下任务</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;default&#x27;</span>, gulp.<span class="title function_">parallel</span>(</span><br><span class="line">  <span class="string">&#x27;compress&#x27;</span>, <span class="string">&#x27;minify-css&#x27;</span>, <span class="string">&#x27;minify-html&#x27;</span>,<span class="string">&#x27;mini-font&#x27;</span></span><br><span class="line">))</span><br></pre></td></tr></table></figure></div><div class="tab-item-content"><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//用到的各个插件</span></span><br><span class="line"><span class="keyword">var</span> gulp = <span class="built_in">require</span>(<span class="string">&#x27;gulp&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> cleanCSS = <span class="built_in">require</span>(<span class="string">&#x27;gulp-clean-css&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> htmlmin = <span class="built_in">require</span>(<span class="string">&#x27;gulp-html-minifier-terser&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> htmlclean = <span class="built_in">require</span>(<span class="string">&#x27;gulp-htmlclean&#x27;</span>);</span><br><span class="line"><span class="keyword">var</span> fontmin = <span class="built_in">require</span>(<span class="string">&#x27;gulp-fontmin&#x27;</span>);</span><br><span class="line"><span class="comment">// gulp-tester</span></span><br><span class="line"><span class="keyword">var</span> terser = <span class="built_in">require</span>(<span class="string">&#x27;gulp-terser&#x27;</span>);</span><br><span class="line"><span class="comment">// 压缩js</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;compress&#x27;</span>, <span class="title function_">async</span>() =&gt;&#123;</span><br><span class="line">  gulp.<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.js&#x27;</span>, <span class="string">&#x27;!./public/**/*.min.js&#x27;</span>])</span><br><span class="line">    .<span class="title function_">pipe</span>(<span class="title function_">terser</span>())</span><br><span class="line">    .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>))</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩css</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;minify-css&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.css&#x27;</span>])</span><br><span class="line">        .<span class="title function_">pipe</span>(<span class="title function_">cleanCSS</span>(&#123;</span><br><span class="line">            <span class="attr">compatibility</span>: <span class="string">&#x27;ie11&#x27;</span></span><br><span class="line">        &#125;))</span><br><span class="line">        .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>));</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩html</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;minify-html&#x27;</span>, <span class="function">() =&gt;</span> &#123;</span><br><span class="line">    <span class="keyword">return</span> gulp.<span class="title function_">src</span>(<span class="string">&#x27;./public/**/*.html&#x27;</span>)</span><br><span class="line">        .<span class="title function_">pipe</span>(<span class="title function_">htmlclean</span>())</span><br><span class="line">        .<span class="title function_">pipe</span>(<span class="title function_">htmlmin</span>(&#123;</span><br><span class="line">            <span class="attr">removeComments</span>: <span class="literal">true</span>, <span class="comment">//清除html注释</span></span><br><span class="line">            <span class="attr">collapseWhitespace</span>: <span class="literal">true</span>, <span class="comment">//压缩html</span></span><br><span class="line">            <span class="attr">collapseBooleanAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//省略布尔属性的值，例如：&lt;input checked=&quot;true&quot;/&gt; ==&gt; &lt;input /&gt;</span></span><br><span class="line">            <span class="attr">removeEmptyAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//删除所有空格作属性值，例如：&lt;input id=&quot;&quot; /&gt; ==&gt; &lt;input /&gt;</span></span><br><span class="line">            <span class="attr">removeScriptTypeAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//删除&lt;script&gt;的type=&quot;text/javascript&quot;</span></span><br><span class="line">            <span class="attr">removeStyleLinkTypeAttributes</span>: <span class="literal">true</span>,</span><br><span class="line">            <span class="comment">//删除&lt;style&gt;和&lt;link&gt;的 type=&quot;text/css&quot;</span></span><br><span class="line">            <span class="attr">minifyJS</span>: <span class="literal">true</span>, <span class="comment">//压缩页面 JS</span></span><br><span class="line">            <span class="attr">minifyCSS</span>: <span class="literal">true</span>, <span class="comment">//压缩页面 CSS</span></span><br><span class="line">            <span class="attr">minifyURLs</span>: <span class="literal">true</span>  <span class="comment">//压缩页面URL</span></span><br><span class="line">        &#125;))</span><br><span class="line">        .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public&#x27;</span>))</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">//压缩字体</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">minifyFont</span>(<span class="params">text, cb</span>) &#123;</span><br><span class="line">  gulp</span><br><span class="line">    .<span class="title function_">src</span>(<span class="string">&#x27;./public/fonts/*.ttf&#x27;</span>) <span class="comment">//原字体所在目录</span></span><br><span class="line">    .<span class="title function_">pipe</span>(<span class="title function_">fontmin</span>(&#123;</span><br><span class="line">      <span class="attr">text</span>: text</span><br><span class="line">    &#125;))</span><br><span class="line">    .<span class="title function_">pipe</span>(gulp.<span class="title function_">dest</span>(<span class="string">&#x27;./public/fontsdest/&#x27;</span>)) <span class="comment">//压缩后的输出目录</span></span><br><span class="line">    .<span class="title function_">on</span>(<span class="string">&#x27;end&#x27;</span>, cb);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;mini-font&#x27;</span>, <span class="function">(<span class="params">cb</span>) =&gt;</span> &#123;</span><br><span class="line">  <span class="keyword">var</span> buffers = [];</span><br><span class="line">  gulp</span><br><span class="line">    .<span class="title function_">src</span>([<span class="string">&#x27;./public/**/*.html&#x27;</span>]) <span class="comment">//HTML文件所在目录请根据自身情况修改</span></span><br><span class="line">    .<span class="title function_">on</span>(<span class="string">&#x27;data&#x27;</span>, <span class="keyword">function</span>(<span class="params">file</span>) &#123;</span><br><span class="line">      buffers.<span class="title function_">push</span>(file.<span class="property">contents</span>);</span><br><span class="line">    &#125;)</span><br><span class="line">    .<span class="title function_">on</span>(<span class="string">&#x27;end&#x27;</span>, <span class="keyword">function</span>(<span class="params"></span>) &#123;</span><br><span class="line">      <span class="keyword">var</span> text = <span class="title class_">Buffer</span>.<span class="title function_">concat</span>(buffers).<span class="title function_">toString</span>(<span class="string">&#x27;utf-8&#x27;</span>);</span><br><span class="line">      <span class="title function_">minifyFont</span>(text, cb);</span><br><span class="line">    &#125;);</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 运行gulp命令时依次执行以下任务</span></span><br><span class="line">gulp.<span class="title function_">task</span>(<span class="string">&#x27;default&#x27;</span>, gulp.<span class="title function_">parallel</span>(</span><br><span class="line">  <span class="string">&#x27;compress&#x27;</span>, <span class="string">&#x27;minify-css&#x27;</span>, <span class="string">&#x27;minify-html&#x27;</span>,<span class="string">&#x27;mini-font&#x27;</span></span><br><span class="line">))</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><p>在每次运行完<code>hexo generate</code>生成静态页面后，运行<code>gulp</code>对其进行压缩。指令流程如下：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo generate</span><br><span class="line">gulp</span><br><span class="line">hexo server 或 hexo deploy</span><br></pre></td></tr></table></figure><h2 id="常见问题解决方案"><a href="#常见问题解决方案" class="headerlink" title="常见问题解决方案"></a>常见问题解决方案</h2><h3 id="JavaScript压缩异常处理"><a href="#JavaScript压缩异常处理" class="headerlink" title="JavaScript压缩异常处理"></a>JavaScript压缩异常处理</h3><p>若某些JS文件压缩后出现变量未定义错误：</p><ol><li><p><strong>排除特定文件</strong>：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">gulp.<span class="title function_">src</span>([</span><br><span class="line">  <span class="string">&#x27;./public/**/*.js&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;!./public/**/*.min.js&#x27;</span>,</span><br><span class="line">  <span class="string">&#x27;!./public/js/example.js&#x27;</span> <span class="comment">// 排除问题文件</span></span><br><span class="line">])</span><br></pre></td></tr></table></figure></li><li><p><strong>推荐方案</strong>：优先使用Terser而非Babel方案</p></li></ol><h3 id="字体压缩注意事项"><a href="#字体压缩注意事项" class="headerlink" title="字体压缩注意事项"></a>字体压缩注意事项</h3><ul><li>压缩后的字体输出路径为<code>/fontsdest/</code></li><li>开发环境需先运行gulp才能看到字体效果</li><li>生产环境记得更新CSS中的字体引用路径</li></ul><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>通过合理配置Gulp工作流，您可以显著提升网站性能。建议：</p><ol><li>优先使用Terser处理JavaScript</li><li>开发阶段可以先跳过字体压缩</li><li>定期检查压缩后文件的兼容性</li></ol><p><strong>参考原文</strong>：</p><a class="tag-Link" target="_blank" href="https://akilar.top/posts/49b73b87/">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/akilar.top/posts/49b73b87/.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">使用gulp压缩博客静态资源</div>            <div class="tag-link-sitename">Akilarの糖果屋</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;Gulp作为前端工作流的自动化工具，能够高效处理各类静态资源压缩任务。通过其丰富的插件生态系统，开发者可以实现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CSS文件的极致压缩&lt;/li&gt;
&lt;li&gt;JavaScript代码的智能优化&lt;/li&gt;
&lt;li&gt;HTML文档的</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="Gulp优化" scheme="https://blog.3ms.run/tags/Gulp%E4%BC%98%E5%8C%96/"/>
    
    <category term="静态资源压缩" scheme="https://blog.3ms.run/tags/%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E5%8E%8B%E7%BC%A9/"/>
    
    <category term="前端性能优化" scheme="https://blog.3ms.run/tags/%E5%89%8D%E7%AB%AF%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/"/>
    
    <category term="Hexo博客优化" scheme="https://blog.3ms.run/tags/Hexo%E5%8D%9A%E5%AE%A2%E4%BC%98%E5%8C%96/"/>
    
    <category term="静态网站加速" scheme="https://blog.3ms.run/tags/%E9%9D%99%E6%80%81%E7%BD%91%E7%AB%99%E5%8A%A0%E9%80%9F/"/>
    
  </entry>
  
  <entry>
    <title>C#/.NET 线程异步</title>
    <link href="https://blog.3ms.run/archives/391f008e.html"/>
    <id>https://blog.3ms.run/archives/391f008e.html</id>
    <published>2025-04-03T16:07:26.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<h2 id="1、单线程"><a href="#1、单线程" class="headerlink" title="1、单线程"></a>1、单线程</h2><p><code>Thread.CurrentThread</code> 获取当前线程</p><p><code>Thread.CurrentThread.ManagedThreadId</code> 获取当前线程ID</p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">internal</span> <span class="keyword">class</span> <span class="title">Program2</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main2</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        &#123;<span class="comment">//同步单线程方法: 按顺序执行，每次调用完成后才能进入下一行，是同一个线程运行</span></span><br><span class="line">            Console.WriteLine();</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***********同步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            <span class="built_in">int</span> j = <span class="number">0</span>;</span><br><span class="line">            <span class="built_in">int</span> k = <span class="number">1</span>;</span><br><span class="line">            <span class="built_in">int</span> m = j + k;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="built_in">string</span> name = <span class="built_in">string</span>.Format(<span class="string">&quot;&#123;0&#125;_&#123;1&#125;&quot;</span>, <span class="string">&quot;同步方法&quot;</span>, i);</span><br><span class="line">                DosomethingLong(name);</span><br><span class="line">            &#125;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***********同步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">        &#125;</span><br><span class="line">       </span><br><span class="line">    &#125;</span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">DosomethingLong</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***************DosomethingLong start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">        <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">100000000</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            lResult += i;</span><br><span class="line">        &#125;</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***************DosomethingLong   end &#123;0&#125; 线程ID：&#123;1&#125; &#123;2&#125; 时间：&#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="2、多线程"><a href="#2、多线程" class="headerlink" title="2、多线程"></a>2、多线程</h2><blockquote><p>&#x2F;任何的异步多线程都离不开委托delegate<br>&#x2F;&#x2F;委托的异步调用异步<br>&#x2F;&#x2F;多线程: 发起调用，不等待结束就直接进入下一行（主线程）;<br> 动作会由一个新线程来执行（子线程 ） 并发了</p><p>1、同步单线程方法卡界面——主(UI)线程忙于计算,所以不能响应</p><p>​异步多线程方法不卡界面—-计算任务交给子线程，主(UI)线程已经闲置，可以响应别的操作</p><p>​cs:按钮后能不卡死–上传文件不卡死</p><p>​bs: 用户注册发邮件&#x2F;发短信&#x2F;写日志</p><p>2、 同步单线程方法慢—因为只有一个线程计</p><p>​算异步多线程方法快—因为多个线程并发计算</p><p>​多线程就是用资源换性能,但并不是线性增长</p><p>​线程并不是越多越好</p></blockquote><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> System;</span><br><span class="line"><span class="keyword">using</span> System.Collections.Generic;</span><br><span class="line"><span class="keyword">using</span> System.Linq;</span><br><span class="line"><span class="keyword">using</span> System.Text;</span><br><span class="line"><span class="keyword">using</span> System.Threading;</span><br><span class="line"><span class="keyword">using</span> System.Threading.Tasks;</span><br><span class="line"></span><br><span class="line"><span class="keyword">namespace</span> 多线程异步</span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">internal</span> <span class="keyword">class</span> <span class="title">Program</span></span><br><span class="line">    &#123;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="comment">//任何的异步多线程都离不开委托delegate</span></span><br><span class="line">                <span class="comment">//委托的异步调用异步</span></span><br><span class="line">                <span class="comment">//多线程: 发起调用，不等待结束就直接进入下一行（主线程）;</span></span><br><span class="line">                <span class="comment">//                  动作会由一个新线程来执行（新线程 ）;</span></span><br><span class="line">                Console.WriteLine();</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">                <span class="comment">//创建委托action</span></span><br><span class="line">                <span class="comment">//Action&lt;string&gt; action = DosomethingLong;</span></span><br><span class="line">                <span class="comment">// action.Invoke(&quot;异步方法1&quot;);</span></span><br><span class="line">                <span class="comment">//action.Invoke(&quot;异步方法2&quot;);</span></span><br><span class="line">                <span class="comment">// action.BeginInvoke(&quot;异步方法3&quot;, null, null);//异步调用</span></span><br><span class="line">                <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++) &#123;</span><br><span class="line">                    <span class="built_in">string</span> name = <span class="string">$&quot;异步方法_<span class="subst">&#123;i&#125;</span>&quot;</span>;</span><br><span class="line">                    action.BeginInvoke(name,<span class="literal">null</span>,<span class="literal">null</span>);</span><br><span class="line"></span><br><span class="line">                &#125;</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            &#125;</span><br><span class="line">            Console.ReadLine();</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">DosomethingLong</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************DosomethingLong start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">            <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">100000000</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                lResult += i;</span><br><span class="line">            &#125;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************DosomethingLong   end &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125; &#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="3、委托异步回调控制顺序"><a href="#3、委托异步回调控制顺序" class="headerlink" title="3、委托异步回调控制顺序"></a>3、委托异步回调控制顺序</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> System;</span><br><span class="line"><span class="keyword">using</span> System.Collections.Generic;</span><br><span class="line"><span class="keyword">using</span> System.Linq;</span><br><span class="line"><span class="keyword">using</span> System.Text;</span><br><span class="line"><span class="keyword">using</span> System.Threading;</span><br><span class="line"><span class="keyword">using</span> System.Threading.Tasks;</span><br><span class="line"></span><br><span class="line"><span class="keyword">namespace</span> 多线程异步</span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">internal</span> <span class="keyword">class</span> 委托异步回调控制顺序</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="comment">//任何的异步多线程都离不开委托delegate</span></span><br><span class="line">                <span class="comment">//委托的异步调用异步</span></span><br><span class="line">                <span class="comment">//多线程: 发起调用，不等待结束就直接进入下一行（主线程）;</span></span><br><span class="line">                <span class="comment">//                  动作会由一个新线程来执行（新线程 ）;</span></span><br><span class="line"></span><br><span class="line">                Console.WriteLine();</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">                Action&lt;<span class="built_in">string</span>&gt; action = UpdataDB;</span><br><span class="line">                </span><br><span class="line">                <span class="comment">//异步回调 （会在线程执行完毕后运行）</span></span><br><span class="line">                AsyncCallback callback = ar=&gt; &#123;</span><br><span class="line">                    Console.WriteLine(ar.AsyncState);<span class="comment">//此处的值为：sunday1，用户自定义设置的值</span></span><br><span class="line">                    Console.WriteLine(<span class="string">&quot;A操作完成了。。。线程ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">                &#125;;</span><br><span class="line">                <span class="comment">//传入的值  回调委托  自定义传入值（Object类型）</span></span><br><span class="line">                action.BeginInvoke(<span class="string">&quot;异步方法3&quot;</span>, callback, <span class="string">&quot;sunday1&quot;</span>);</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            &#125;</span><br><span class="line">            Console.ReadLine();</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">UpdataDB</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************UpdataDB start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">            <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">100000000</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                lResult += i;</span><br><span class="line">            &#125;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************UpdataDB   end &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125; &#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> System;</span><br><span class="line"><span class="keyword">using</span> System.Collections.Generic;</span><br><span class="line"><span class="keyword">using</span> System.Linq;</span><br><span class="line"><span class="keyword">using</span> System.Text;</span><br><span class="line"><span class="keyword">using</span> System.Threading;</span><br><span class="line"><span class="keyword">using</span> System.Threading.Tasks;</span><br><span class="line"></span><br><span class="line"><span class="keyword">namespace</span> 多线程异步</span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">internal</span> <span class="keyword">class</span> 文件上传进度条展示</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            &#123;</span><br><span class="line">                <span class="comment">//任何的异步多线程都离不开委托delegate</span></span><br><span class="line">                <span class="comment">//委托的异步调用异步</span></span><br><span class="line">                <span class="comment">//多线程: 发起调用，不等待结束就直接进入下一行（主线程）;</span></span><br><span class="line">                <span class="comment">//                  动作会由一个新线程来执行（新线程 ）;</span></span><br><span class="line"></span><br><span class="line">                Console.WriteLine();</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">                <span class="meta">#<span class="keyword">region</span> MyRegion</span></span><br><span class="line">                <span class="comment">/*Action&lt;string&gt; action = UpdataDB;</span></span><br><span class="line"><span class="comment">                AsyncCallback callback = ar =&gt; &#123;</span></span><br><span class="line"><span class="comment">                    Console.WriteLine(ar.AsyncState);</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">                    Console.WriteLine(&quot;A操作完成了。。。线程ID：&#123;0&#125;&quot;, Thread.CurrentThread.ManagedThreadId);</span></span><br><span class="line"><span class="comment">                &#125;;</span></span><br><span class="line"><span class="comment">                */</span><span class="comment">/*IAsyncResult asyncResult = action.BeginInvoke(&quot;文件上传&quot;, null, &quot;sunday1&quot;);</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">                int i = 0;</span></span><br><span class="line"><span class="comment">                while (!asyncResult.IsCompleted)</span></span><br><span class="line"><span class="comment">                &#123;</span></span><br><span class="line"><span class="comment">                    if (i &lt; 9)</span></span><br><span class="line"><span class="comment">                    &#123;</span></span><br><span class="line"><span class="comment">                        ShowConsleAnview($&quot;当前进度：&#123;++i * 10&#125;%&quot;);</span></span><br><span class="line"><span class="comment">                    &#125;</span></span><br><span class="line"><span class="comment">                    else</span></span><br><span class="line"><span class="comment">                    &#123;</span></span><br><span class="line"><span class="comment">                        Console.WriteLine(&quot;当前进度：99%&quot;);</span></span><br><span class="line"><span class="comment">                    &#125;</span></span><br><span class="line"><span class="comment">                    Thread.Sleep(10);</span></span><br><span class="line"><span class="comment">                &#125;*/</span><span class="comment">/*</span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment"></span></span><br><span class="line"><span class="comment">                var asyncResult = action.BeginInvoke(&quot;调用接口&quot;, null, null);</span></span><br><span class="line"><span class="comment">                asyncResult.AsyncWaitHandle.WaitOne();//阻塞当前线程，直到收到信号量</span></span><br><span class="line"><span class="comment">                asyncResult.AsyncWaitHandle.WaitOne(-1);//一直等等</span></span><br><span class="line"><span class="comment">                //asyncResult.AsyncWaitHandle.WaitOne(1000);//阻塞当前线程 最多等待1000ms</span></span><br><span class="line"><span class="comment">                Console.WriteLine(&quot;完成文件上传&quot;);*/</span></span><br><span class="line">                <span class="meta">#<span class="keyword">endregion</span></span></span><br><span class="line"></span><br><span class="line">                <span class="meta">#<span class="keyword">region</span> 调用接口需要返回值</span></span><br><span class="line">                Func&lt;<span class="built_in">int</span>&gt; func = RemoteService;</span><br><span class="line"></span><br><span class="line">                <span class="keyword">var</span> asyncResult = func.BeginInvoke(<span class="literal">null</span>, <span class="literal">null</span>);<span class="comment">//异步调用结果，描述异步操作的</span></span><br><span class="line">                <span class="built_in">int</span> result = func.EndInvoke(asyncResult);<span class="comment">//获取线程返回值</span></span><br><span class="line">                Console.WriteLine(result);</span><br><span class="line">                <span class="meta">#<span class="keyword">endregion</span></span></span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            &#125;</span><br><span class="line">            Console.ReadLine();</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">ShowConsleAnview</span>(<span class="params"><span class="built_in">string</span> text</span>)</span> &#123;</span><br><span class="line">            Console.WriteLine(text);</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">UpdataDB</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************UpdataDB start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">            <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">1000000000</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                lResult += i;</span><br><span class="line">            &#125;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************UpdataDB   end &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125; &#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="built_in">int</span> <span class="title">RemoteService</span>()</span> &#123;</span><br><span class="line">            <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">1000000000</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                lResult += i;</span><br><span class="line">            &#125;</span><br><span class="line">            <span class="keyword">return</span> ((<span class="built_in">int</span>)lResult);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="4、Thread操作线程各种APi"><a href="#4、Thread操作线程各种APi" class="headerlink" title="4、Thread操作线程各种APi"></a>4、Thread操作线程各种APi</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">       &#123;</span><br><span class="line">           &#123;</span><br><span class="line">               <span class="comment">//任何的异步多线程都离不开委托delegate</span></span><br><span class="line">               <span class="comment">//委托的异步调用异步</span></span><br><span class="line">               <span class="comment">//多线程: 发起调用，不等待结束就直接进入下一行（主线程）;</span></span><br><span class="line">               <span class="comment">//                  动作会由一个新线程来执行（新线程 ）;</span></span><br><span class="line"></span><br><span class="line">               Console.WriteLine();</span><br><span class="line">               Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">               ThreadStart threadStart = ()=&gt; &#123;</span><br><span class="line">                   Console.WriteLine(<span class="string">$&quot;Thread Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                   Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">                   Console.WriteLine(<span class="string">$&quot;Thread End <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">               &#125;;</span><br><span class="line">               Thread thread = <span class="keyword">new</span> Thread(threadStart);</span><br><span class="line">               <span class="comment">//thread.IsBackground = true;</span></span><br><span class="line">               thread.Start();</span><br><span class="line">               <span class="comment">//thread.Suspend();</span></span><br><span class="line">               <span class="comment">//thread.Resume();</span></span><br><span class="line">               thread.Join();</span><br><span class="line">               </span><br><span class="line">               <span class="comment">//thread.Abort();</span></span><br><span class="line">              </span><br><span class="line"></span><br><span class="line">               Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">           &#125;</span><br><span class="line">           Console.ReadKey();</span><br><span class="line">       &#125;</span><br></pre></td></tr></table></figure><h2 id="5、ThreadPool线程池的优势"><a href="#5、ThreadPool线程池的优势" class="headerlink" title="5、ThreadPool线程池的优势"></a>5、ThreadPool线程池的优势</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">       &#123;</span><br><span class="line">           Console.WriteLine();</span><br><span class="line">           Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">           <span class="comment">//.NetFramework 2.0(新的CLR) ThreadPool:池化资源管理设计思想，线程是一种资源，</span></span><br><span class="line">           <span class="comment">//之前每次要用线程，就去申请一个线程，使用完之后，释放掉;</span></span><br><span class="line">           <span class="comment">//池化就是做一个容器，容器提前申请5个线程，</span></span><br><span class="line">           <span class="comment">//程序需要使用线程，直接找容器获取，用完后再放回容器(控制状态)，避免频繁的申请和销毁</span></span><br><span class="line">           <span class="comment">//容器自己还会根据限制的数量去申请和释放</span></span><br><span class="line">           WaitCallback callback = (o) =&gt;</span><br><span class="line">           &#123;</span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is ThreadPool Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">               Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is ThreadPool End <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">           &#125;;</span><br><span class="line">           ThreadPool.QueueUserWorkItem(callback);</span><br><span class="line">           Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">           Console.ReadKey();</span><br><span class="line">       &#125;</span><br></pre></td></tr></table></figure><h2 id="6、多线程Parallel的特点和控制线程数"><a href="#6、多线程Parallel的特点和控制线程数" class="headerlink" title="6、多线程Parallel的特点和控制线程数"></a>6、多线程Parallel的特点和控制线程数</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">       &#123;</span><br><span class="line">           Console.WriteLine();</span><br><span class="line">           Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">           <span class="comment">//Parallel可以启动多线程，主线程也参与计算</span></span><br><span class="line">           </span><br><span class="line">           Parallel.Invoke(() =&gt;</span><br><span class="line">           &#123;</span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel Start1 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">               </span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel   End1 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">           &#125;, () =&gt;</span><br><span class="line">           &#123;</span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel Start2 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">               </span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel   End2 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">           &#125;, () =&gt;</span><br><span class="line">           &#123;</span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel Start3 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">               </span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel   End3 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">           &#125;, () =&gt;</span><br><span class="line">           &#123;</span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel Start4 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">               </span><br><span class="line">               Console.WriteLine(<span class="string">$&quot;Thread is Parallel   End4 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">           &#125;);</span><br><span class="line">           Parallel.For(<span class="number">1</span>, <span class="number">10</span>, o =&gt; &#123; Console.WriteLine(o); &#125;);</span><br><span class="line">           Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">           Console.ReadKey();</span><br><span class="line">       &#125;</span><br></pre></td></tr></table></figure><h2 id="7、Task线程"><a href="#7、Task线程" class="headerlink" title="7、Task线程"></a>7、Task线程</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        &#123;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">            Console.WriteLine();</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">            Action action = () =&gt;</span><br><span class="line">            &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;Thread is Task Start1 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                Thread.Sleep( <span class="number">1000</span> );</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;Thread is Task   End1 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#125;;</span><br><span class="line">            List&lt;Task&gt; taslList = <span class="keyword">new</span> List&lt;Task&gt;();</span><br><span class="line">            Task task = <span class="keyword">new</span> Task(action);</span><br><span class="line">            task.Start();<span class="comment">//运行线程</span></span><br><span class="line">            taslList.Add(task);</span><br><span class="line">            taslList.Add(Task.Run(() =&gt; &#123; DosomethingLong(<span class="string">&quot;阿莫&quot;</span>); &#125;));<span class="comment">//运行线程</span></span><br><span class="line">            taslList.Add(Task.Run(() =&gt; &#123; DosomethingLong(<span class="string">&quot;杨帆&quot;</span>); &#125;));</span><br><span class="line">            taslList.Add(Task.Run(() =&gt; &#123; DosomethingLong(<span class="string">&quot;一路&quot;</span>); &#125;));</span><br><span class="line">            </span><br><span class="line">            <span class="comment">//阻塞当前线程，直到任一任务结束----主线程被阻塞，所以卡界面</span></span><br><span class="line">            Task.WaitAny(taslList.ToArray());</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;项目里程碑达成，收取20 % 的费用&quot;</span>);</span><br><span class="line">            </span><br><span class="line"><span class="comment">//既需要多线程来提升性能，又需要在多线程全部完成后才能执行的操作</span></span><br><span class="line">            Task.WaitAll(taslList.ToArray());<span class="comment">//等待所有线程结束后才执行后面的操作</span></span><br><span class="line">            <span class="comment">//阻塞当前线程，直到全部任务结束-----主线程被阻塞，所以卡界面</span></span><br><span class="line"></span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">        &#125;</span><br><span class="line">        Console.ReadLine();</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">DosomethingLong</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***************DosomethingLong start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">        <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">100000000</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            lResult += i;</span><br><span class="line">        &#125;</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***************DosomethingLong   end &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125; &#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><p>不会卡界面</p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">//这样就不会卡界面了</span></span><br><span class="line">Task.Run(() =&gt;<span class="comment">//意味着方法体里面的东西，由一个新的线程去执行</span></span><br><span class="line">         &#123;<span class="comment">//不是推荐做法，1 尽量不要线程套线程 </span></span><br><span class="line"></span><br><span class="line">             <span class="comment">//阻塞当前线程，直到任一任务结束----主线程被阻塞，所以卡界面</span></span><br><span class="line">             Task.WaitAny(taslList.ToArray());</span><br><span class="line">             Console.WriteLine(<span class="string">&quot;项目里程碑达成，收取20 % 的费用&quot;</span>);</span><br><span class="line"></span><br><span class="line">             <span class="comment">//既需要多线程来提升性能，又需要在多线程全部完成后才能执行的操作</span></span><br><span class="line">             Task.WaitAll(taslList.ToArray());<span class="comment">//等待所有线程结束后才执行后面的操作</span></span><br><span class="line">             <span class="comment">//阻塞当前线程，直到全部任务结束-----主线程被阻塞，所以卡界面</span></span><br><span class="line">         &#125;);</span><br></pre></td></tr></table></figure><p><strong>TaskFactory</strong></p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        &#123;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">            Console.WriteLine();</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"></span><br><span class="line">            Action action = () =&gt;</span><br><span class="line">            &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;Thread is Task Start1 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                Thread.Sleep(<span class="number">1000</span>);</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;Thread is Task   End1 <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#125;;</span><br><span class="line">            List&lt;Task&gt; taslList = <span class="keyword">new</span> List&lt;Task&gt;();</span><br><span class="line">            Task task = <span class="keyword">new</span> Task(action);</span><br><span class="line">            task.Start();</span><br><span class="line">            taslList.Add(task);</span><br><span class="line">            taslList.Add(Task.Run(() =&gt; &#123; DosomethingLong(<span class="string">&quot;阿莫&quot;</span>); &#125;));</span><br><span class="line">            taslList.Add(Task.Run(() =&gt; &#123; DosomethingLong(<span class="string">&quot;杨帆&quot;</span>); &#125;));</span><br><span class="line">            taslList.Add(Task.Run(() =&gt; &#123; DosomethingLong(<span class="string">&quot;一路&quot;</span>); &#125;));</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">            TaskFactory taskFactory = <span class="keyword">new</span> TaskFactory();</span><br><span class="line">            taskFactory.ContinueWhenAny(taslList.ToArray(), t =&gt; &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;XX第一个完成，获取红包奖励：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            &#125;);</span><br><span class="line">            taslList.Add(taskFactory.ContinueWhenAll(taslList.ToArray(), tArry =&gt;</span><br><span class="line">            &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;来个庆功宴，部署联调测试：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            &#125;));</span><br><span class="line">            <span class="comment">//continue的后续线程，可能是新线程，可能是刚完成任务的线程，还可能是同一个线程</span></span><br><span class="line"></span><br><span class="line">            <span class="comment">//这样就不会卡界面了</span></span><br><span class="line">            <span class="comment">//Task.Run(() =&gt;//意味着方法体里面的东西，由一个新的线程去执行</span></span><br><span class="line">            <span class="comment">//&#123;//不是推荐做法，1 尽量不要线程套线程 </span></span><br><span class="line"></span><br><span class="line">            <span class="comment"><span class="doctag">///</span>阻塞当前线程，直到任一任务结束----主线程被阻塞，所以卡界面</span></span><br><span class="line">             Task.WaitAny(taslList.ToArray());</span><br><span class="line">             Console.WriteLine(<span class="string">&quot;项目里程碑达成，收取20 % 的费用&quot;</span>);</span><br><span class="line"></span><br><span class="line">             <span class="comment">//既需要多线程来提升性能，又需要在多线程全部完成后才能执行的操作</span></span><br><span class="line">             Task.WaitAll(taslList.ToArray());<span class="comment">//等待所有线程结束后才执行后面的操作</span></span><br><span class="line">             <span class="comment">//阻塞当前线程，直到全部任务结束-----主线程被阻塞，所以卡界面</span></span><br><span class="line">            <span class="comment">//&#125;);</span></span><br><span class="line"></span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">        &#125;</span><br><span class="line">        Console.ReadLine();</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">    <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">DosomethingLong</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***************DosomethingLong start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">        <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">100000000</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            lResult += i;</span><br><span class="line">        &#125;</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***************DosomethingLong   end &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125; &#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><h2 id="8、线程安全"><a href="#8、线程安全" class="headerlink" title="8、线程安全"></a>8、线程安全</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><span class="line"> <span class="keyword">internal</span> <span class="keyword">class</span> 多线程安全</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            &#123;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">                Console.WriteLine();</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line"><span class="comment">/*</span></span><br><span class="line"><span class="comment">                for (int i = 0; i &lt; 5; i++)</span></span><br><span class="line"><span class="comment">                &#123;</span></span><br><span class="line"><span class="comment">                    int k = i;</span></span><br><span class="line"><span class="comment">                    Task.Run(() =&gt;</span></span><br><span class="line"><span class="comment">                    &#123;</span></span><br><span class="line"><span class="comment">                        Console.WriteLine($&quot;this is &#123;i&#125; &#123;k&#125; Start...&#123;Thread.CurrentThread.ManagedThreadId&#125;&quot;);</span></span><br><span class="line"><span class="comment">                        Thread.Sleep(2000);</span></span><br><span class="line"><span class="comment">                        //Task.Delay(1000);</span></span><br><span class="line"><span class="comment">                        Console.WriteLine($&quot;this is &#123;i&#125; &#123;k&#125;   End...&#123;Thread.CurrentThread.ManagedThreadId&#125;&quot;);</span></span><br><span class="line"><span class="comment">                    &#125;);</span></span><br><span class="line"><span class="comment">                &#125;*/</span></span><br><span class="line">                List&lt;<span class="built_in">int</span>&gt; list = <span class="keyword">new</span> List&lt;<span class="built_in">int</span>&gt;();</span><br><span class="line">                <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>;i &lt; <span class="number">1000</span>;i++)</span><br><span class="line">                &#123;</span><br><span class="line">                    <span class="comment">//list.Add(i);</span></span><br><span class="line">                    Task.Run(() =&gt;<span class="comment">//多线程之后，结果就变成小于10000--就是有的数据丢失了</span></span><br><span class="line">                    &#123;</span><br><span class="line">                        list.Add(i);</span><br><span class="line">                    &#125;);</span><br><span class="line">                &#125;</span><br><span class="line">                <span class="comment">//多线程安全问题:一段代码，单线程执行和多线程执行结果不一致，就表明有线程安全问题</span></span><br><span class="line">                <span class="comment">//List是个数组结构，在内存上是连续摆放的，假如同一时刻，去增加一个数据，都是操作同一个内存 ?位置，2个cpu同时发了命令，内存先执行一个再执行一个，就出现覆盖 </span></span><br><span class="line">                Thread.Sleep(<span class="number">5000</span>);</span><br><span class="line">                Console.WriteLine(list.Count);</span><br><span class="line">                Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">            &#125;</span><br><span class="line">            Console.ReadLine();</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">DosomethingLong</span>(<span class="params"><span class="built_in">string</span> name</span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************DosomethingLong start &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>));</span><br><span class="line">            <span class="built_in">long</span> lResult = <span class="number">0</span>;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">100000000</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                lResult += i;</span><br><span class="line">            &#125;</span><br><span class="line">            Console.WriteLine(<span class="string">&quot;***************DosomethingLong   end &#123;0&#125; 线程ID：&#123;1&#125; 时间：&#123;2&#125; &#123;3&#125;****************&quot;</span>, name, Thread.CurrentThread.ManagedThreadId.ToString(<span class="string">&quot;00&quot;</span>), DateTime.Now.ToString(<span class="string">&quot;yyyy-MM-dd HH:mm:ss&quot;</span>), lResult);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><h2 id="9、Lock锁解决线程安全"><a href="#9、Lock锁解决线程安全" class="headerlink" title="9、Lock锁解决线程安全"></a>9、Lock锁解决线程安全</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="built_in">object</span> LOCK=<span class="keyword">new</span> <span class="built_in">object</span>();</span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">&#123;</span><br><span class="line">    &#123;</span><br><span class="line">        Console.WriteLine();</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***********异步方法 statr,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId); </span><br><span class="line">        List&lt;<span class="built_in">int</span>&gt; list = <span class="keyword">new</span> List&lt;<span class="built_in">int</span>&gt;();</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">1000</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            <span class="comment">//list.Add(i);</span></span><br><span class="line">            Task.Run(() =&gt;<span class="comment">//多线程之后，结果就变成小于10000--就是有的数据丢失了</span></span><br><span class="line">                     &#123;</span><br><span class="line">                         <span class="comment">//Monitor.Enter(LOCK);</span></span><br><span class="line">                         <span class="keyword">lock</span> (LOCK)</span><br><span class="line">                         &#123;</span><br><span class="line">                             list.Add (i);</span><br><span class="line">                         &#125;</span><br><span class="line">                         <span class="comment">//Monitor.Exit(LOCK);</span></span><br><span class="line">                     &#125;);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="comment">//加lock 就能解决线程安全问题---就是单线程化--Lock就是保证方法块儿任意时刻只有一个线程能进去,其他线程就排队</span></span><br><span class="line">        <span class="comment">//Lock原理---语法糖--等价于Monitor--锁定一个内存引用地址--所以不能是值类型--也不能是null</span></span><br><span class="line">        Thread.Sleep(<span class="number">1000</span>);</span><br><span class="line">        Console.WriteLine(list.Count);</span><br><span class="line">        Console.WriteLine(<span class="string">&quot;***********异步方法 end,线程 ID：&#123;0&#125;&quot;</span>, Thread.CurrentThread.ManagedThreadId);</span><br><span class="line">    &#125;</span><br><span class="line">    Console.ReadLine();</span><br><span class="line"></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="10、Lock锁变量执行顺序"><a href="#10、Lock锁变量执行顺序" class="headerlink" title="10、Lock锁变量执行顺序"></a>10、Lock锁变量执行顺序</h2><p>TestLOCk类</p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> System;</span><br><span class="line"><span class="keyword">using</span> System.Collections.Generic;</span><br><span class="line"><span class="keyword">using</span> System.Linq;</span><br><span class="line"><span class="keyword">using</span> System.Text;</span><br><span class="line"><span class="keyword">using</span> System.Threading.Tasks;</span><br><span class="line"></span><br><span class="line"><span class="keyword">namespace</span> 单线程_<span class="title">Task</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">class</span> <span class="title">TestLock</span></span><br><span class="line">    &#123;</span><br><span class="line">        <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="built_in">object</span> Test_Lock = <span class="keyword">new</span> <span class="built_in">object</span>();</span><br><span class="line">        <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="built_in">object</span> Test_LockTemp = <span class="keyword">new</span> <span class="built_in">object</span>();</span><br><span class="line"></span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Show</span>()</span></span><br><span class="line">        &#123;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                Task.Run(() =&gt; &#123;</span><br><span class="line">                    <span class="keyword">lock</span> (Test_Lock)</span><br><span class="line">                    &#123;</span><br><span class="line">                        Console.WriteLine(<span class="string">$&quot;this is TestLock <span class="subst">&#123;i&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                        Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">                        Console.WriteLine(<span class="string">$&quot;this is TestLock <span class="subst">&#123;i&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">public</span>  <span class="keyword">void</span> <span class="title">ShowTemp</span>(<span class="params"><span class="built_in">int</span> index</span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">            &#123;</span><br><span class="line">                Task.Run(() =&gt; &#123;</span><br><span class="line">                    <span class="keyword">lock</span> (Test_LockTemp)</span><br><span class="line">                    &#123;</span><br><span class="line">                        Console.WriteLine(<span class="string">$&quot;this is TestLockShowTemp <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                       <span class="comment">// Thread.Sleep(2000);</span></span><br><span class="line">                        Console.WriteLine(<span class="string">$&quot;this is TestLockShowTemp <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                    &#125;</span><br><span class="line">                &#125;);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">namespace</span> 单线程_<span class="title">Task</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">internal</span> <span class="keyword">class</span> <span class="title">Lock</span>锁变量执行顺序</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="built_in">object</span> LOCK = <span class="keyword">new</span> <span class="built_in">object</span>();</span><br><span class="line">        <span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">        &#123;</span><br><span class="line">            &#123;</span><br><span class="line">                TestLock testLock1=<span class="keyword">new</span> TestLock();</span><br><span class="line">                testLock1.ShowTemp(<span class="number">1</span>);</span><br><span class="line">                TestLock testLock2 = <span class="keyword">new</span> TestLock();</span><br><span class="line">                testLock2.ShowTemp(<span class="number">2</span>);</span><br><span class="line"></span><br><span class="line">              <span class="comment">/*  TestLock.Show();</span></span><br><span class="line"><span class="comment">                for (int i = 0; i &lt; 5; i++)</span></span><br><span class="line"><span class="comment">                &#123;</span></span><br><span class="line"><span class="comment">                    Task.Run(() =&gt; &#123;</span></span><br><span class="line"><span class="comment">                        lock (LOCK)</span></span><br><span class="line"><span class="comment">                        &#123;</span></span><br><span class="line"><span class="comment">                            Console.WriteLine($&quot;this is Main &#123;i&#125; Start...&#123;Thread.CurrentThread.ManagedThreadId&#125;&quot;);</span></span><br><span class="line"><span class="comment">                            Thread.Sleep(2000);</span></span><br><span class="line"><span class="comment">                            Console.WriteLine($&quot;this is Main &#123;i&#125;   End...&#123;Thread.CurrentThread.ManagedThreadId&#125;&quot;);</span></span><br><span class="line"><span class="comment">                        &#125;</span></span><br><span class="line"><span class="comment">                    &#125;);</span></span><br><span class="line"><span class="comment">                &#125;*/</span></span><br><span class="line">            &#125;</span><br><span class="line">            <span class="comment">//假如我是希望主程序和方法是并发的，如果共用一个锁变量，就会出现相互阻塞</span></span><br><span class="line">            <span class="comment">//锁不同的变量，才能并发的;</span></span><br><span class="line">            <span class="comment">//单次调用内部肯定是加锁顺序执行---两个之间，能并发吗 Y/N</span></span><br><span class="line">            <span class="comment">//Y---不同的实例里面 都是不同的字段所以要static</span></span><br><span class="line">            Console.ReadLine();</span><br><span class="line"></span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>以上可并发</p><p>以下不能并发</p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">private</span> <span class="keyword">readonly</span> <span class="built_in">string</span> Test_LockString = <span class="string">&quot;静待花开&quot;</span>;</span><br><span class="line"><span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">ShowString</span>(<span class="params"><span class="built_in">int</span> index</span>)</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">    &#123;</span><br><span class="line">        Task.Run(() =&gt; &#123;</span><br><span class="line">            <span class="keyword">lock</span> (Test_LockString)</span><br><span class="line">            &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;this is TestLockShowString <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                <span class="comment">// Thread.Sleep(2000);</span></span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;this is TestLockShowString <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;);</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="built_in">string</span> LockString = <span class="string">&quot;静待花开&quot;</span>;</span><br><span class="line"><span class="function"><span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Main</span>(<span class="params"><span class="built_in">string</span>[] <span class="keyword">args</span></span>)</span></span><br><span class="line">&#123;</span><br><span class="line">    &#123;</span><br><span class="line"></span><br><span class="line">        TestLock testLock1 = <span class="keyword">new</span> TestLock();</span><br><span class="line">        testLock1.ShowString(<span class="number">1</span>);</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            Task.Run(() =&gt; &#123;</span><br><span class="line">                <span class="keyword">lock</span> (LockString)</span><br><span class="line">                &#123;</span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is Main <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;<span class="number">2</span>&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                    <span class="comment">// Thread.Sleep(2000);</span></span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is Main <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;<span class="number">2</span>&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;);</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">        Console.ReadLine();</span><br><span class="line"></span><br><span class="line">    &#125;</span><br></pre></td></tr></table></figure><p>&#x2F;&#x2F;单次调用内部肯定是加锁顺序执行—两个之间，能并发吗 Y&#x2F;N</p><p>&#x2F;&#x2F;N不能并发，锁定的是引用—字符串是享元的，堆里面只有一个“静待花开，</p><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">public</span> <span class="keyword">class</span> <span class="title">TestLockGeneric</span>&lt;<span class="title">T</span>&gt;</span><br><span class="line">&#123;</span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">readonly</span> <span class="built_in">object</span> Test_Lock = <span class="keyword">new</span> <span class="built_in">object</span>();</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">static</span> <span class="keyword">void</span> <span class="title">Show</span>(<span class="params"><span class="built_in">int</span> index</span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            Task.Run(() =&gt; &#123;</span><br><span class="line">                <span class="keyword">lock</span> (Test_Lock)</span><br><span class="line">                &#123;</span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is TestLockGeneric-<span class="subst">&#123;index&#125;</span> <span class="subst">&#123;i&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                    Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is TestLockGeneric-<span class="subst">&#123;index&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">readonly</span> <span class="built_in">object</span> Test_LockTemp = <span class="keyword">new</span> <span class="built_in">object</span>();</span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">ShowTemp</span>(<span class="params"><span class="built_in">int</span> index</span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            Task.Run(() =&gt; &#123;</span><br><span class="line">                <span class="keyword">lock</span> (Test_LockTemp)</span><br><span class="line">                &#123;</span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is TestLockShowTemp <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                    <span class="comment">// Thread.Sleep(2000);</span></span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is TestLockShowTemp <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">private</span> <span class="keyword">readonly</span> <span class="built_in">string</span> Test_LockString = <span class="string">&quot;静待花开&quot;</span>;</span><br><span class="line">    <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">ShowString</span>(<span class="params"><span class="built_in">int</span> index</span>)</span></span><br><span class="line">    &#123;</span><br><span class="line">        <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">5</span>; i++)</span><br><span class="line">        &#123;</span><br><span class="line">            Task.Run(() =&gt; &#123;</span><br><span class="line">                <span class="keyword">lock</span> (Test_LockString)</span><br><span class="line">                &#123;</span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is TestLockShowString <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span> Start...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                    <span class="comment">// Thread.Sleep(2000);</span></span><br><span class="line">                    Console.WriteLine(<span class="string">$&quot;this is TestLockShowString <span class="subst">&#123;i&#125;</span>--<span class="subst">&#123;index&#125;</span>   End...<span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line">    TestLockGeneric&lt;<span class="built_in">int</span>&gt;.Show(<span class="number">1</span>);</span><br><span class="line">    TestLockGeneric&lt;<span class="built_in">int</span>&gt;.Show(<span class="number">2</span>);</span><br><span class="line">    TestLockGeneric&lt;TestLock&gt;.Show(<span class="number">3</span>);</span><br><span class="line">    <span class="comment">//单次调用内部肯定是加锁顺序执行--- 1和2直接能并发吗 1和3之间能并发吗YY NN YN NY</span></span><br><span class="line">    <span class="comment">//1和2不能并发   因为是相同的变量--泛型类，在类型参数相同时，是同一个类</span></span><br><span class="line">    <span class="comment">//1和3可以并发   因为是不同的变量--泛型类，在类型参数不同时，是不同的类</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="11、await-Asyn"><a href="#11、await-Asyn" class="headerlink" title="11、await Asyn"></a>11、await Asyn</h2><figure class="highlight c#"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">using</span> System;</span><br><span class="line"><span class="keyword">using</span> System.Collections.Generic;</span><br><span class="line"><span class="keyword">using</span> System.Linq;</span><br><span class="line"><span class="keyword">using</span> System.Text;</span><br><span class="line"><span class="keyword">using</span> System.Threading.Channels;</span><br><span class="line"><span class="keyword">using</span> System.Threading.Tasks;</span><br><span class="line"></span><br><span class="line"><span class="keyword">namespace</span> <span class="title">AwatAsync</span></span><br><span class="line">&#123;</span><br><span class="line">    <span class="comment"><span class="doctag">///</span> <span class="doctag">&lt;summary&gt;</span></span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span> await/async:是个新语法，出现C#5.0NetFramework在4.5及以上(CLR4.0)</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>             是一个语法糖，不是一个全新的异步多线程使用方式，</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>             (语法糖:就是编译器提供的新功能)</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>              本身并不会产生新的线程，但是依托于Task而存在，所以程序执行时 也是有多线程的</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>async可以随便添加，可以不用await</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>await只能出现在task,但是方法必须声明async 不能单独出现</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span></span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span> await/async之后，原本没有返回值的可以这回Task</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>                  原本返回 X类型的，可以返回Task<span class="doctag">&lt;X&gt;</span></span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span>有点反人类，不过暂时先记住</span></span><br><span class="line">    <span class="comment"><span class="doctag">///</span> <span class="doctag">&lt;/summary&gt;</span></span></span><br><span class="line">    <span class="keyword">public</span> <span class="keyword">class</span> <span class="title">AwaitAsynClassNew</span></span><br><span class="line"></span><br><span class="line">    &#123;</span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">Show</span>()</span></span><br><span class="line">        &#123;</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This Main Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#123;</span><br><span class="line">                Console.WriteLine(ReturnLongAwait().Result);</span><br><span class="line">            &#125;</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This Main End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="comment"><span class="doctag">///</span> <span class="doctag">&lt;summary&gt;</span></span></span><br><span class="line">        <span class="comment"><span class="doctag">///</span> 没有返回值--在方法里开启了一个Task线程</span></span><br><span class="line">        <span class="comment"><span class="doctag">///</span> <span class="doctag">&lt;/summary&gt;</span></span></span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">async</span> <span class="keyword">void</span> <span class="title">NoReturn</span>()</span></span><br><span class="line">        &#123;</span><br><span class="line">             Console.WriteLine(<span class="string">$&quot;This NoReturn Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">             Task task= Task.Run(() =&gt; &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This NoReturn Task Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This NoReturn Task End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#125;);</span><br><span class="line">            <span class="comment">//await task;</span></span><br><span class="line">            task.ContinueWith(t =&gt; &#123; Console.WriteLine(<span class="string">$&quot;End&quot;</span>); &#125;);</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This NoReturn End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">        &#125;</span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">async</span> Task <span class="title">ReturnTask</span>()</span></span><br><span class="line">        &#123;</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This ReturnTask Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            Task task = Task.Run(() =&gt; &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This ReturnTask Task Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This ReturnTask Task End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#125;);</span><br><span class="line">            <span class="keyword">await</span> task;</span><br><span class="line">            <span class="comment">//Task的子线程完成的  如果没有await 那么应该是调用线程执行</span></span><br><span class="line">            <span class="comment">//可以认为，加了await 就等同于将await后面的代码，包装成一个回调--其实回调的线程局部多种可能性</span></span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This ReturnTask End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line"></span><br><span class="line">            <span class="keyword">await</span> Task.Run(() =&gt; &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This ReturnTask2 Task Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                Thread.Sleep(<span class="number">2000</span>);</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This ReturnTask2 Task End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            &#125;);</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This ReturnTask End2   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            <span class="comment">//如果再来更多层的await，这个执行顺序，我们心里应该有谱了!</span></span><br><span class="line">            <span class="comment">//可以用同步编码的形式去写异步</span></span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="function"><span class="keyword">public</span>  <span class="built_in">long</span> <span class="title">ReturnLong</span>()</span></span><br><span class="line">        &#123;</span><br><span class="line">            <span class="built_in">long</span> result = <span class="number">0</span>;</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This NoReturnLong Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">             Task.Run(() =&gt; &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This NoReturnLong Task Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line"></span><br><span class="line">                <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">10000000</span>; i++)</span><br><span class="line">                &#123;</span><br><span class="line">                    result += i;</span><br><span class="line">                &#125;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This NoReturnLong Task End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                <span class="keyword">return</span> result;</span><br><span class="line">            &#125;);</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This NoReturnLong End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            <span class="keyword">return</span> result;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">        <span class="function"><span class="keyword">public</span> <span class="keyword">async</span> Task&lt;<span class="built_in">long</span>&gt; <span class="title">ReturnLongAwait</span>()</span></span><br><span class="line">        &#123;</span><br><span class="line">            <span class="built_in">long</span> result = <span class="number">0</span>;</span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This NoReturnLongAwait Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            <span class="keyword">await</span> Task.Run(() =&gt; &#123;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This NoReturnLongAwait Task Start <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                </span><br><span class="line">                <span class="keyword">for</span> (<span class="built_in">int</span> i = <span class="number">0</span>; i &lt; <span class="number">10000000</span>; i++)</span><br><span class="line">                &#123;</span><br><span class="line">                    result += i;</span><br><span class="line">                &#125;</span><br><span class="line">                Console.WriteLine(<span class="string">$&quot;This NoReturnLongAwait Task End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">                <span class="keyword">return</span> result;</span><br><span class="line">            &#125;);</span><br><span class="line">            </span><br><span class="line">            Console.WriteLine(<span class="string">$&quot;This NoReturnLongAwait End   <span class="subst">&#123;Thread.CurrentThread.ManagedThreadId&#125;</span>&quot;</span>);</span><br><span class="line">            <span class="keyword">return</span> result;</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">深入解析C#异步编程(async/await)和.NET多线程开发的核心技术，涵盖Task并行库(TPL)、线程池优化、异步I/O操作等高级主题。学习如何避免死锁、管理线程安全、优化并发性能，并应用于Web API、桌面程序和高性能服务开发。包含最新.NET 8的并发特性与最佳实践，帮助开发者构建响应迅速、高吞吐量的现代化应用程序。</summary>
    
    
    
    <category term="编程技术" scheme="https://blog.3ms.run/categories/%E7%BC%96%E7%A8%8B%E6%8A%80%E6%9C%AF/"/>
    
    
    <category term="学习笔记" scheme="https://blog.3ms.run/tags/%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/"/>
    
    <category term="C#" scheme="https://blog.3ms.run/tags/C/"/>
    
    <category term="C#异步编程" scheme="https://blog.3ms.run/tags/C-%E5%BC%82%E6%AD%A5%E7%BC%96%E7%A8%8B/"/>
    
    <category term=".NET多线程开发" scheme="https://blog.3ms.run/tags/NET%E5%A4%9A%E7%BA%BF%E7%A8%8B%E5%BC%80%E5%8F%91/"/>
    
  </entry>
  
  <entry>
    <title>《铅笔盒里的刺猬》</title>
    <link href="https://blog.3ms.run/archives/b118e53.html"/>
    <id>https://blog.3ms.run/archives/b118e53.html</id>
    <published>2025-03-30T17:28:09.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.27/img/cover/33.jpg"></p><p>课桌第三道刻痕加深时，我正用美工刀削尖第六支铅笔。木屑雪花般落在泛黄试卷上，盖住了那个用红笔画的猪头。后桌男生踹椅子的力度精准如钟摆，每半小时一次，震得铁质笔盒发出癌症病人般的咳嗽。</p><h2 id="第一章：锋利的棱角"><a href="#第一章：锋利的棱角" class="headerlink" title="第一章：锋利的棱角"></a>第一章：锋利的棱角</h2><p>那时候我的校服口袋总藏着图钉。当隔壁组胖子第五次”不小心”撞翻我的午饭，我默数着他回到座位的步数，在第三步时弹出那枚银色小刺。他抱着脚踝嚎叫的模样，像极了老家过年待宰的公猪。班主任的指甲陷进我胳膊：”以暴制暴只会招来更多暴力”，可她没看见我锁骨处的淤青正在校服领口下溃烂。</p><p>办公室罚站的下午，阳光把奖状墙晒出胶水味。我盯着”文明班级”铜牌上的倒影，里面扭曲着一张张嬉笑的脸。直到班主任把戒尺拍出裂痕，才惊觉自己把橡皮擦抠成了月球表面。</p><h2 id="第二章：沉默的茧房"><a href="#第二章：沉默的茧房" class="headerlink" title="第二章：沉默的茧房"></a>第二章：沉默的茧房</h2><p>​梅雨季的清晨，我在操场角落埋掉了所有图钉。青苔顺着指缝爬上手腕时，后颈突然传来冰凉的触感——有人把吃剩的雪糕筒扣在我衣领里。这次我没回头，只是更用力地把生锈铁铲插进泥土，仿佛能挖通通往地心的隧道。</p><p>走廊公告栏每月更新”心理互助之星”照片，我的背影总在取景框边缘模糊成灰调。心理咨询室飘出的薰衣草香里，我数着墙纸上的鸢尾花图案，直到老师叹气的声音与空调杂音融为一体。窗台上的多肉植物正在雨季疯长，而我缩在藤椅里，把自己折叠成一张被揉皱的请假条。</p><h2 id="第三章：锈蚀的春天"><a href="#第三章：锈蚀的春天" class="headerlink" title="第三章：锈蚀的春天"></a>第三章：锈蚀的春天</h2><p>​转机出现在某个停电的晚自习。当那个总撕我作业本的女生摸黑经过时，我伸出左脚。她栽进卫生角的瞬间，拖把桶发出教堂钟声般的轰鸣。月光突然穿透云层，我看见三十年后的自己正站在时光尽头摇头。</p><p>​第二天清晨，我在她抽屉塞了创可贴。她撕开包装时的表情，像在拆解一颗定时炸弹。午后的生物课上，显微镜下的草履虫突然幻化成缩小版的我们，在玻璃片上徒劳地相互冲撞。</p><p>毕业典礼那天，我在储物柜发现匿名纸条：”你眼里有把生锈的锁”。礼堂放飞的气球中，有个写着歪扭的”对不起”。我握紧口袋里那把陈年图钉，金属锈味混着掌心的汗，竟酿出了奇异的酒香。</p><p>​如今路过中学校园，总会在围墙外停留片刻。爬山虎掩映的旧课桌上，不知是否还留着那些深浅不一的刻痕。偶尔在深夜整理旧物，当年埋图钉处挖出的鹅卵石正在月光下闪烁——原来最坚硬的棱角，早已在时光里包浆成温润的琥珀。</p>]]></content>
    
    
    <summary type="html">课桌第三道刻痕加深时，我正用美工刀削尖第六支铅笔。木屑雪花般落在泛黄试卷上，盖住了那个用红笔画的猪头。后桌男生踹椅子的力度精准如钟摆，每半小时一次，震得铁质笔盒发出癌症病人般的咳嗽。</summary>
    
    
    
    <category term="闲聊杂谈" scheme="https://blog.3ms.run/categories/%E9%97%B2%E8%81%8A%E6%9D%82%E8%B0%88/"/>
    
    
    <category term="随笔" scheme="https://blog.3ms.run/tags/%E9%9A%8F%E7%AC%94/"/>
    
  </entry>
  
  <entry>
    <title>Butterfly主题博客魔改美化教程总览（一）</title>
    <link href="https://blog.3ms.run/archives/2fff1258.html"/>
    <id>https://blog.3ms.run/archives/2fff1258.html</id>
    <published>2025-03-22T21:51:54.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>本帖教程基于<strong>Hexo博客</strong>程序的 <strong>Butterfly主题</strong>编写 ，其中魔改&#x2F;美化内容大部分收集至各位大神的博客以及网络。</p><p>由于每位用户的根目录名称各不相同，本文中博客的根目录将统一使用<code>[BlogRoot]</code>这一标识符表示。</p><p>其中配置文件<code>_config.yml</code>，其路径为【BlogRoot&#x2F;_config.yml】。</p><p>主题的配置文件<code>_config.butterfly.yml</code>进行相应修改，该文件位于【BlogRoot&#x2F;_config.butterfly.yml】路径下。</p></blockquote><div class="note warning flat"><p>本文包含有关修改源代码的内容，将会使用<code>diff</code>代码块来标记变更。在复制这些代码段时，请记得移除前面的加号（+）和减号（-）符号，其中（+）号代码添加的代码，（-）代表这整行代码需要删除。</p></div><h2 id="自定义CSS-JS方法"><a href="#自定义CSS-JS方法" class="headerlink" title="自定义CSS&#x2F;JS方法"></a>自定义CSS&#x2F;JS方法</h2><p>CSS：在<code>[BlogRoot]/source/css/</code>目录下新建：daliyuer.css，名称可自定义。</p><p>JS：在<code>[BlogRoot]/source/js/</code>目录下新建：daliyuer.js，名称可自定义。</p><p>如没有 <strong>css</strong>跟 <strong>js</strong> 目录需自建。</p><details class="toggle" ><summary class="toggle-button" style="">点击查看教程</summary><div class="toggle-content"><p>编辑主题配置文件<code>_config.butterfly.yml</code>在<code>inject-&gt;head</code> or <code>inject-&gt;bottom</code>添加如下两行。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">inject:</span></span><br><span class="line">  <span class="attr">head:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&lt;link</span> <span class="string">rel=&quot;stylesheet&quot;</span> <span class="string">href=&quot;/css/daliyuer.css&quot;&gt;</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">bottom:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&lt;script</span> <span class="string">type=&quot;text/javascript&quot;</span> <span class="string">src=&quot;/js/daliyuer.js&quot;&gt;&lt;/script&gt;</span></span><br></pre></td></tr></table></figure></div></details><h2 id="文章页调整"><a href="#文章页调整" class="headerlink" title="文章页调整"></a>文章页调整</h2><h3 id="文章顶部添加波浪效果"><a href="#文章顶部添加波浪效果" class="headerlink" title="文章顶部添加波浪效果"></a>文章顶部添加波浪效果</h3><p>教程地址：</p><a href="https://blog.3ms.run/archives/f9a47848.html" target="_blank" title="给Butterfly主题文章顶部添加波浪效果" referrerPolicy="no-referrer" class="yqlink_card"><div class="yqlink_icon"><img src="https://blog.3ms.run/img/avatar-icon.jpg" class="no-lightbox"></div><div class="yqlink_content"><div class="yqlink_title">给Butterfly主题文章顶部添加波浪效果</div><div class="yqlink_desc">ZeroLatency</div></div></a><h3 id="文章版权样式微调"><a href="#文章版权样式微调" class="headerlink" title="文章版权样式微调"></a>文章版权样式微调</h3><p>在自建的CSS文件内 [blogRoot]&#x2F;source&#x2F;css&#x2F;daliyuer.css 里新增如下内容</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 版权样式调整 */</span></span><br><span class="line"><span class="selector-id">#post</span> <span class="selector-class">.post-copyright</span> &#123;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">var</span>(--daliyuer-card-bg);</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">1rem</span> <span class="number">1.3rem</span>;</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border);</span><br><span class="line">    <span class="attribute">border-width</span>: <span class="number">1px</span>;</span><br><span class="line">    <span class="attribute">transition</span>: <span class="number">0.3s</span>;</span><br><span class="line">    <span class="attribute">position</span>: relative;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">1.5rem</span> <span class="number">0px</span> <span class="number">0.5rem</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">8px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#post</span> <span class="selector-class">.post-copyright</span><span class="selector-pseudo">:before</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">22px</span>;</span><br><span class="line">    <span class="attribute">top</span>: -<span class="number">77px</span>;</span><br><span class="line">    <span class="attribute">content</span>: <span class="string">&quot;\e039&quot;</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">180px</span>;</span><br><span class="line">    <span class="attribute">font-family</span>: <span class="string">&quot;iconfont&quot;</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--icat-fontcolor);</span><br><span class="line">    <span class="attribute">opacity</span>: <span class="number">0.1</span>;</span><br><span class="line">    <span class="attribute">filter</span>: <span class="built_in">blur</span>(<span class="number">7px</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 版权样式调整end */</span></span><br></pre></td></tr></table></figure><p>全局Css变量：</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-pseudo">:root</span> &#123;</span><br><span class="line">       <span class="attr">--daliyuer-card-bg</span>: <span class="number">#fff</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&#x27;dark&#x27;</span>]</span> &#123;</span><br><span class="line">       <span class="attr">--daliyuer-card-bg</span>: <span class="number">#1b1c20</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="Twikoo评论表情包放大效果"><a href="#Twikoo评论表情包放大效果" class="headerlink" title="Twikoo评论表情包放大效果"></a>Twikoo评论表情包放大效果</h3><p><strong>效果图：</strong></p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.25/image/2025/an1/20250325133103.png"></p><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查看教程</summary><div class="toggle-content"><ol><li><p>粘贴以下js内容到自定义js文件内即可</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 表情包放大 end */</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 如果当前页有评论就执行函数</span></span><br><span class="line"><span class="keyword">if</span> (<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;post-comment&#x27;</span>)) <span class="title function_">owoBig</span>();</span><br><span class="line"><span class="comment">// 表情放大</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">owoBig</span>(<span class="params"></span>) &#123;</span><br><span class="line">    <span class="keyword">let</span> flag = <span class="number">1</span>, <span class="comment">// 设置节流阀</span></span><br><span class="line">        owo_time = <span class="string">&#x27;&#x27;</span>, <span class="comment">// 设置计时器</span></span><br><span class="line">        m = <span class="number">3</span>; <span class="comment">// 设置放大倍数</span></span><br><span class="line">    <span class="comment">// 创建盒子</span></span><br><span class="line">    <span class="keyword">let</span> div = <span class="variable language_">document</span>.<span class="title function_">createElement</span>(<span class="string">&#x27;div&#x27;</span>),</span><br><span class="line">        body = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">&#x27;body&#x27;</span>);</span><br><span class="line">    <span class="comment">// 设置ID</span></span><br><span class="line">    div.<span class="property">id</span> = <span class="string">&#x27;owo-big&#x27;</span>;</span><br><span class="line">    <span class="comment">// 插入盒子</span></span><br><span class="line">    body.<span class="title function_">appendChild</span>(div)</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 构造observer</span></span><br><span class="line">    <span class="keyword">let</span> observer = <span class="keyword">new</span> <span class="title class_">MutationObserver</span>(<span class="function"><span class="params">mutations</span> =&gt;</span> &#123;</span><br><span class="line"></span><br><span class="line">        <span class="keyword">for</span> (<span class="keyword">let</span> i = <span class="number">0</span>; i &lt; mutations.<span class="property">length</span>; i++) &#123;</span><br><span class="line">            <span class="keyword">let</span> dom = mutations[i].<span class="property">addedNodes</span>,</span><br><span class="line">                owo_body = <span class="string">&#x27;&#x27;</span>;</span><br><span class="line">            <span class="keyword">if</span> (dom.<span class="property">length</span> == <span class="number">2</span> &amp;&amp; dom[<span class="number">1</span>].<span class="property">className</span> == <span class="string">&#x27;OwO-body&#x27;</span>) owo_body = dom[<span class="number">1</span>];</span><br><span class="line">            <span class="comment">// 如果需要在评论内容中启用此功能请解除下面的注释</span></span><br><span class="line">            <span class="comment">// else if (dom.length == 1 &amp;&amp; dom[0].className == &#x27;tk-comment&#x27;) owo_body = dom[0];</span></span><br><span class="line">            <span class="keyword">else</span> <span class="keyword">continue</span>;</span><br><span class="line"></span><br><span class="line">            <span class="comment">// 禁用右键（手机端长按会出现右键菜单，为了体验给禁用掉）</span></span><br><span class="line">            <span class="keyword">if</span> (<span class="variable language_">document</span>.<span class="property">body</span>.<span class="property">clientWidth</span> &lt;= <span class="number">768</span>) owo_body.<span class="title function_">addEventListener</span>(<span class="string">&#x27;contextmenu&#x27;</span>, <span class="function"><span class="params">e</span> =&gt;</span> e.<span class="title function_">preventDefault</span>());</span><br><span class="line">            <span class="comment">// 鼠标移入</span></span><br><span class="line">            owo_body.<span class="property">onmouseover</span> = <span class="function">(<span class="params">e</span>) =&gt;</span> &#123;</span><br><span class="line">                <span class="comment">// 检查父元素的 className 是否包含 &#x27;OwO-packages&#x27;</span></span><br><span class="line">                <span class="keyword">if</span> (e.<span class="property">target</span>.<span class="property">parentElement</span>.<span class="property">parentElement</span>.<span class="property">parentElement</span> &amp;&amp; e.<span class="property">target</span>.<span class="property">parentElement</span>.<span class="property">parentElement</span>.<span class="property">parentElement</span>.<span class="property">className</span>.<span class="title function_">includes</span>(<span class="string">&#x27;OwO-packages&#x27;</span>)) <span class="keyword">return</span>;</span><br><span class="line">                <span class="keyword">if</span> (flag &amp;&amp; e.<span class="property">target</span>.<span class="property">tagName</span> == <span class="string">&#x27;IMG&#x27;</span>) &#123;</span><br><span class="line">                    flag = <span class="number">0</span>;</span><br><span class="line">                    <span class="comment">// 移入300毫秒后显示盒子</span></span><br><span class="line">                    owo_time = <span class="built_in">setTimeout</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">                        <span class="keyword">let</span> height = e.<span class="property">target</span>.<span class="property">clientHeight</span> * m, <span class="comment">// 盒子高 2023-02-16更新</span></span><br><span class="line">                            width = e.<span class="property">target</span>.<span class="property">clientWidth</span> * m, <span class="comment">// 盒子宽 2023-02-16更新</span></span><br><span class="line">                            left = (e.<span class="property">x</span> - e.<span class="property">offsetX</span>) - (width - e.<span class="property">target</span>.<span class="property">clientWidth</span>) / <span class="number">2</span>, <span class="comment">// 盒子与屏幕左边距离 2023-02-16更新</span></span><br><span class="line">                            top = e.<span class="property">y</span> - e.<span class="property">offsetY</span>; <span class="comment">// 盒子与屏幕顶部距离</span></span><br><span class="line"></span><br><span class="line">                        <span class="keyword">if</span> ((left + width) &gt; body.<span class="property">clientWidth</span>) left -= ((left + width) - body.<span class="property">clientWidth</span> + <span class="number">10</span>); <span class="comment">// 右边缘检测，防止超出屏幕</span></span><br><span class="line">                        <span class="keyword">if</span> (left &lt; <span class="number">0</span>) left = <span class="number">10</span>; <span class="comment">// 左边缘检测，防止超出屏幕</span></span><br><span class="line">                        <span class="comment">// 设置盒子样式</span></span><br><span class="line">                        div.<span class="property">style</span>.<span class="property">cssText</span> = <span class="string">`display:flex; height:<span class="subst">$&#123;height&#125;</span>px; width:<span class="subst">$&#123;width&#125;</span>px; left:<span class="subst">$&#123;left&#125;</span>px; top:<span class="subst">$&#123;top&#125;</span>px;`</span>;</span><br><span class="line">                        <span class="comment">// 在盒子中插入图片</span></span><br><span class="line">                        div.<span class="property">innerHTML</span> = <span class="string">`&lt;img src=&quot;<span class="subst">$&#123;e.target.src&#125;</span>&quot;&gt;`</span></span><br><span class="line">                    &#125;, <span class="number">300</span>);</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;;</span><br><span class="line">            <span class="comment">// 鼠标移出隐藏盒子</span></span><br><span class="line">            owo_body.<span class="property">onmouseout</span> = <span class="function">() =&gt;</span> &#123; div.<span class="property">style</span>.<span class="property">display</span> = <span class="string">&#x27;none&#x27;</span>, flag = <span class="number">1</span>, <span class="built_in">clearTimeout</span>(owo_time); &#125;</span><br><span class="line">        &#125;</span><br><span class="line"></span><br><span class="line">    &#125;)</span><br><span class="line">    observer.<span class="title function_">observe</span>(<span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;post-comment&#x27;</span>), &#123; <span class="attr">subtree</span>: <span class="literal">true</span>, <span class="attr">childList</span>: <span class="literal">true</span> &#125;) <span class="comment">// 监听的 元素 和 配置项</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 表情包放大 end */</span></span><br></pre></td></tr></table></figure></li><li><p>在将以下CSS内容粘贴到自定义CSS中即可</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-id">#owo-big</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: fixed;</span><br><span class="line">    <span class="attribute">align-items</span>: center;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="built_in">rgb</span>(<span class="number">255</span>, <span class="number">255</span>, <span class="number">255</span>);</span><br><span class="line">    <span class="attribute">border</span>: <span class="number">1px</span> <span class="number">#aaa</span> solid;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">10px</span>;</span><br><span class="line">    <span class="attribute">z-index</span>: <span class="number">9999</span>;</span><br><span class="line">    <span class="attribute">display</span>: none;</span><br><span class="line">    <span class="attribute">transform</span>: <span class="built_in">translate</span>(<span class="number">0</span>, -<span class="number">105%</span>);</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    <span class="attribute">animation</span>: owoIn <span class="number">0.3s</span> <span class="built_in">cubic-bezier</span>(<span class="number">0.42</span>, <span class="number">0</span>, <span class="number">0.3</span>, <span class="number">1.11</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-attr">[data-theme=dark]</span> <span class="selector-id">#owo-big</span> &#123;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="number">#4a4a4a</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#owo-big</span> <span class="selector-tag">img</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 动画效果代码由 Heo：https://blog.zhheo.com/ 提供 */</span></span><br><span class="line"><span class="keyword">@keyframes</span> owoIn &#123;</span><br><span class="line">    <span class="number">0%</span> &#123;</span><br><span class="line">        <span class="attribute">transform</span>: <span class="built_in">translate</span>(<span class="number">0</span>, -<span class="number">95%</span>);</span><br><span class="line">        <span class="attribute">opacity</span>: <span class="number">0</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="number">100%</span> &#123;</span><br><span class="line">        <span class="attribute">transform</span>: <span class="built_in">translate</span>(<span class="number">0</span>, -<span class="number">105%</span>);</span><br><span class="line">        <span class="attribute">opacity</span>: <span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></li></ol><p>参考文章：</p><a class="tag-Link" target="_blank" href="https://blog.leonus.cn/2022/owo-big.html">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.leonus.cn/2022/owo-big.html.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">评论表情包放大功能，超实用</div>            <div class="tag-link-sitename">Leonus</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a>   </div></details><h3 id="本站同款Twikoo自定义表情包（持续更新）"><a href="#本站同款Twikoo自定义表情包（持续更新）" class="headerlink" title="本站同款Twikoo自定义表情包（持续更新）"></a>本站同款Twikoo自定义表情包（持续更新）</h3><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.25/image/2025/an1/20250325134646.png"></p><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查看详细教程</summary><div class="toggle-content"><ol><li>输入暗号进入评论<code>管理界面</code>-&gt;<code>配置管理</code>-&gt;<code>插件</code>-&gt;<code>EMOTION_CDN</code>将<code>EMOTION_CDN</code>内的内容替换成：<code>https://cdn.cbd.int/daliyuer-static@latest/bq/twikoo.json</code> <img src="https://jsd.gog.email/npm/daliyuer-static@1.0.25/image/2025/an1/20250325135418.png"></li><li>如果你想自定义自己的表情包可参考：<a class="tag-Link" target="_blank" href="https://github.com/noionion/Twikoo-Magic"> <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div> <div class="tag-link-bottom">     <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/github.com/noionion/Twikoo-Magic.png);"><i class="iconfont icon-link"></i></div>     <div class="tag-link-right">         <div class="tag-link-title">Twikoo自定义表情列表 |HexoPlusPlus自定义表情列表（其实基于OwO的项目都可以用的啦</div>         <div class="tag-link-sitename">GitHub</div>     </div>     <i class="fa-solid fa-angle-right"></i> </div> </a><a class="tag-Link" target="_blank" href="https://emotion.xiaokang.me"> <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div> <div class="tag-link-bottom">     <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/emotion.xiaokang.me.png);"><i class="iconfont icon-link"></i></div>     <div class="tag-link-right">         <div class="tag-link-title">表情速查</div>         <div class="tag-link-sitename">Twikoo</div>     </div>     <i class="fa-solid fa-angle-right"></i> </div> </a></li></ol></div></details><h3 id="Twikoo评论区美化"><a href="#Twikoo评论区美化" class="headerlink" title="Twikoo评论区美化"></a>Twikoo评论区美化</h3><p>自定义css中添加以下内容即可：</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br><span class="line">105</span><br><span class="line">106</span><br><span class="line">107</span><br><span class="line">108</span><br><span class="line">109</span><br><span class="line">110</span><br><span class="line">111</span><br><span class="line">112</span><br><span class="line">113</span><br><span class="line">114</span><br><span class="line">115</span><br><span class="line">116</span><br><span class="line">117</span><br><span class="line">118</span><br><span class="line">119</span><br><span class="line">120</span><br><span class="line">121</span><br><span class="line">122</span><br><span class="line">123</span><br><span class="line">124</span><br><span class="line">125</span><br><span class="line">126</span><br><span class="line">127</span><br><span class="line">128</span><br><span class="line">129</span><br><span class="line">130</span><br><span class="line">131</span><br><span class="line">132</span><br><span class="line">133</span><br><span class="line">134</span><br><span class="line">135</span><br><span class="line">136</span><br><span class="line">137</span><br><span class="line">138</span><br><span class="line">139</span><br><span class="line">140</span><br><span class="line">141</span><br><span class="line">142</span><br><span class="line">143</span><br><span class="line">144</span><br><span class="line">145</span><br><span class="line">146</span><br><span class="line">147</span><br><span class="line">148</span><br><span class="line">149</span><br><span class="line">150</span><br><span class="line">151</span><br><span class="line">152</span><br><span class="line">153</span><br><span class="line">154</span><br><span class="line">155</span><br><span class="line">156</span><br><span class="line">157</span><br><span class="line">158</span><br><span class="line">159</span><br><span class="line">160</span><br><span class="line">161</span><br><span class="line">162</span><br><span class="line">163</span><br><span class="line">164</span><br><span class="line">165</span><br><span class="line">166</span><br><span class="line">167</span><br><span class="line">168</span><br><span class="line">169</span><br><span class="line">170</span><br><span class="line">171</span><br><span class="line">172</span><br><span class="line">173</span><br><span class="line">174</span><br><span class="line">175</span><br><span class="line">176</span><br><span class="line">177</span><br><span class="line">178</span><br><span class="line">179</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* Twikoo 评论美化 */</span></span><br><span class="line"><span class="selector-id">#post-comment</span> <span class="selector-class">.comment-privacy</span> <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#409eff</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#post-comment</span> <span class="selector-class">.comment-headline</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">align-items</span>: center;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#post-comment</span> <span class="selector-class">.comment-headline</span>&gt;<span class="selector-tag">i</span> &#123;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">6px</span>;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">1em</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">blockquote</span>&gt; <span class="selector-pseudo">:last-child</span> &#123;</span><br><span class="line">    <span class="attribute">margin</span>: auto <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.el-input--small</span> <span class="selector-class">.el-input__inner</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">40px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.el-input-group__prepend</span> &#123;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">8px</span> <span class="number">0</span> <span class="number">0</span> <span class="number">8px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.el-input__inner</span> &#123;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">0</span> <span class="number">8px</span> <span class="number">8px</span> <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.el-textarea__inner</span> &#123;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">8px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.el-textarea</span>&gt;<span class="selector-tag">textarea</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">120px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.el-button--small</span> &#123;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">4px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 评论编辑块调整 */</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* .tk-submit-action-icon.__markdown &#123;</span></span><br><span class="line"><span class="comment">    display: none;</span></span><br><span class="line"><span class="comment">&#125; */</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* markdown编辑快隐藏 */</span></span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-avatar</span> &#123;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">4px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-comment</span> <span class="selector-class">.tk-submit</span> <span class="selector-class">.tk-avatar</span>,</span><br><span class="line"><span class="selector-class">.tk-replies</span> <span class="selector-class">.tk-avatar</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">2.5rem</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">2.5rem</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-comment</span> <span class="selector-class">.tk-submit</span> <span class="selector-class">.tk-avatar</span> <span class="selector-class">.tk-avatar-img</span>,</span><br><span class="line"><span class="selector-class">.tk-replies</span> <span class="selector-class">.tk-avatar</span> <span class="selector-class">.tk-avatar-img</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">2.5rem</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-ruser</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#409eff</span>;</span><br><span class="line">    <span class="attribute">opacity</span>: .<span class="number">8</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">@media</span> screen <span class="keyword">and</span> (<span class="attribute">max-width</span>: <span class="number">768px</span>) &#123;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.tk-comment</span> <span class="selector-class">.tk-submit</span> <span class="selector-class">.tk-avatar</span>,</span><br><span class="line">    <span class="selector-class">.tk-replies</span> <span class="selector-class">.tk-avatar</span> &#123;</span><br><span class="line">        <span class="attribute">height</span>: <span class="number">2rem</span> <span class="meta">!important</span>;</span><br><span class="line">        <span class="attribute">width</span>: <span class="number">2rem</span> <span class="meta">!important</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="selector-class">.tk-comment</span> <span class="selector-class">.tk-submit</span> <span class="selector-class">.tk-avatar</span> <span class="selector-class">.tk-avatar-img</span>,</span><br><span class="line">    <span class="selector-class">.tk-replies</span> <span class="selector-class">.tk-avatar</span> <span class="selector-class">.tk-avatar-img</span> &#123;</span><br><span class="line">        <span class="attribute">height</span>: <span class="number">2rem</span> <span class="meta">!important</span>;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-nick</span>,</span><br><span class="line"><span class="selector-class">.tk-meta</span> <span class="selector-tag">a</span> <span class="selector-tag">strong</span> &#123;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">18px</span>;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#409eff</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-tag-green</span> &#123;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border) <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">4px</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">margin-left</span>: <span class="number">0.2rem</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-time</span> &#123;</span><br><span class="line">    <span class="attribute">margin-left</span>: <span class="number">0.4rem</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-extras</span> &#123;</span><br><span class="line">    <span class="attribute">padding-bottom</span>: <span class="number">15px</span>;</span><br><span class="line">    <span class="attribute">border-bottom</span>: <span class="number">1px</span> dashed <span class="built_in">var</span>(--hr-border);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-extra</span> &#123;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border-always);</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">4px</span> <span class="number">6px</span> <span class="number">4px</span> <span class="number">6px</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">8px</span>;</span><br><span class="line">    <span class="attribute">margin-right</span>: <span class="number">4px</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-expand</span> &#123;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">8px</span>;</span><br><span class="line">    <span class="attribute">background-color</span>: <span class="built_in">var</span>(--daliyuer-background);</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--daliyuer-fontcolor);</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">8px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-footer</span> &#123;</span><br><span class="line">    <span class="attribute">padding-bottom</span>: <span class="number">1em</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-footer</span> <span class="selector-tag">a</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#999999</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-footer</span> <span class="selector-tag">a</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#409eff</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-admin-comment-item</span> &#123;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">1em</span>;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">var</span>(--global-bg);</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">12px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border-always);</span><br><span class="line">    <span class="attribute">margin-bottom</span>: <span class="number">12px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-admin-comment-meta</span>,</span><br><span class="line"><span class="selector-class">.tk-content</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--daliyuer-fontcolor);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-admin-actions</span> &#123;</span><br><span class="line">    <span class="attribute">margin-bottom</span>: <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">border-bottom</span>: <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 评论管理 */</span></span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-panel</span> &#123;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border-always);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-admin-config-groups</span> &#123;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">0.5em</span>;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">var</span>(--global-bg);</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">12px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border-always);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-admin-config-groups</span> <span class="selector-class">.tk-admin-config-group-title</span> &#123;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">var</span>(--daliyuer-background) <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">6px</span>;</span><br><span class="line">    <span class="attribute">border</span>: <span class="built_in">var</span>(--style-border-always);</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--daliyuer-fontcolor);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.tk-admin-config-item</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="built_in">var</span>(--daliyuer-fontcolor);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="comment">/* 配置管理 */</span></span><br><span class="line"></span><br><span class="line"><span class="comment">/* 评论区样式 */</span></span><br><span class="line"><span class="comment">/* Twikoo 评论美化 end*/</span></span><br></pre></td></tr></table></figure><p>全局css变量：</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-pseudo">:root</span> &#123;</span><br><span class="line">    <span class="attr">--daliyuer-background</span>: <span class="number">#fff</span>;</span><br><span class="line">    <span class="attr">--daliyuer-fontcolor</span>: <span class="number">#363636</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&#x27;dark&#x27;</span>]</span> &#123;</span><br><span class="line">    <span class="attr">--daliyuer-fontcolor</span>: <span class="number">#F7F7FA</span>;</span><br><span class="line">    <span class="attr">--daliyuer-background</span>: <span class="number">#18171d</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="给外链添加一个跳转页面（插件版）"><a href="#给外链添加一个跳转页面（插件版）" class="headerlink" title="给外链添加一个跳转页面（插件版）"></a>给外链添加一个跳转页面（插件版）</h2><p>效果图：</p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.26/image/2025/an1/20250327174512.png"></p><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查看详细教程</summary><div class="toggle-content"><ol><li><p>安装以下两个插件：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">npm install cheerio --save</span><br><span class="line">npm install hexo-safego --save</span><br></pre></td></tr></table></figure></li><li><p>在hexo根目录的_config.yml文件中添加如下配置：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># hexo-safego安全跳转插件</span></span><br><span class="line"><span class="comment"># see https://blog.liushen.fun/posts/1dfd1f41/</span></span><br><span class="line"><span class="attr">hexo_safego:</span></span><br><span class="line">  <span class="comment"># 基本功能设置</span></span><br><span class="line">  <span class="attr">general:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">true</span>                <span class="comment"># 启用插件</span></span><br><span class="line">    <span class="attr">enable_base64_encode:</span> <span class="literal">true</span>  <span class="comment"># 使用 Base64 编码</span></span><br><span class="line">    <span class="attr">enable_target_blank:</span> <span class="literal">true</span>   <span class="comment"># 打开新窗口</span></span><br><span class="line">  <span class="comment"># 安全设置</span></span><br><span class="line">  <span class="attr">security:</span></span><br><span class="line">    <span class="attr">url_param_name:</span> <span class="string">&#x27;u&#x27;</span>         <span class="comment"># URL 参数名</span></span><br><span class="line">    <span class="attr">html_file_name:</span> <span class="string">&#x27;go.html&#x27;</span>   <span class="comment"># 重定向页面的文件名</span></span><br><span class="line">    <span class="attr">ignore_attrs:</span>               <span class="comment"># 忽略处理的 HTML 属性</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&#x27;data-fancybox&#x27;</span></span><br><span class="line">  <span class="comment"># 容器与页面设置</span></span><br><span class="line">  <span class="attr">scope:</span></span><br><span class="line">    <span class="attr">apply_containers:</span>           <span class="comment"># 应用的容器选择器</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&#x27;#article-container&#x27;</span></span><br><span class="line">    <span class="attr">apply_pages:</span>                <span class="comment"># 应用的页面路径</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;/archives/&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;/about/&quot;</span></span><br><span class="line">    <span class="attr">exclude_pages:</span>              <span class="comment"># 排除的页面路径</span></span><br><span class="line">  <span class="comment"># 域名白名单</span></span><br><span class="line">  <span class="attr">whitelist:</span></span><br><span class="line">    <span class="attr">domain_whitelist:</span>           <span class="comment"># 允许的白名单域名</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;3ms.run&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;blog.3ms.run&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;www.muooy.com&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;muooy.com&quot;</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">&quot;github.com&quot;</span></span><br><span class="line">  <span class="comment"># 页面外观设置</span></span><br><span class="line">  <span class="attr">appearance:</span></span><br><span class="line">    <span class="attr">avatar:</span> <span class="string">/img/avatar-icon.jpg</span>    <span class="comment"># 头像路径</span></span><br><span class="line">    <span class="attr">title:</span> <span class="string">&quot;ZeroLatency&quot;</span>            <span class="comment"># 页面标题</span></span><br><span class="line">    <span class="attr">subtitle:</span> <span class="string">&quot;安全中心&quot;</span>         <span class="comment"># 页面副标题</span></span><br><span class="line">    <span class="attr">darkmode:</span> <span class="literal">false</span>             <span class="comment"># 是否启用深色模式</span></span><br><span class="line">    <span class="attr">countdowntime:</span> <span class="number">3</span>           <span class="comment"># 倒计时秒数</span></span><br><span class="line">  <span class="comment"># 调试设置</span></span><br><span class="line">  <span class="attr">debug:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">false</span>               <span class="comment"># 启用调试模式</span></span><br></pre></td></tr></table></figure><p>以上的配置内容请自行修改</p><p>参考原文：</p><a class="tag-Link" target="_blank" href="https://blog.liushen.fun/posts/1dfd1f41/"> <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div> <div class="tag-link-bottom">     <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.liushen.fun/posts/1dfd1f41/.png);"><i class="iconfont icon-link"></i></div>     <div class="tag-link-right">         <div class="tag-link-title">安全跳转页面·插件版</div>         <div class="tag-link-sitename">LiuShen</div>     </div>     <i class="fa-solid fa-angle-right"></i> </div> </a></li></ol></div></details><h2 id="打赏卡片标签外挂"><a href="#打赏卡片标签外挂" class="headerlink" title="打赏卡片标签外挂"></a>打赏卡片标签外挂</h2><style>.reward_box {    display: flex;    flex-wrap: wrap;    gap: 8px;}.reward_card {    margin: 0;    width: calc(100% / 2 - 6px);    box-shadow: 0 2px 10px -4px #2c2d300c;}@media screen and (max-width: 1080px) {    .reward_box {        gap: 9px;    }    .reward_card {        width: calc(100% / 3  - 6px);    }}@media screen and (max-width: 850px) {    .reward_box {        gap: 8px;    }    .reward_card {        width: calc(100% / 2  - 3px);    }}@media screen and (max-width: 568px) {    .reward_card {        width: 100%;    }}</style><p>效果：</p><div class="reward_box"><a href="https://blog.3ms.run/"  class="reward_card">      <div class="isFriends">友链</div>      <img class="no-lightbox" src="https://q1.qlogo.cn/g?b=qq&nk=507234813&s=5">      <div class="reward_info">        <p class="reward_name">ZeroLatency</p>        <div class="reward_bottom">          <span class="reward_money"><svg t="1672813064588" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1062" width="200" height="200"><path d="M511.09761 957.257c-80.159 0-153.737-25.019-201.11-62.386-24.057 6.702-54.831 17.489-74.252 30.864-16.617 11.439-14.546 23.106-11.55 27.816 13.15 20.689 225.583 13.211 286.912 6.767v-3.061z" fill="#FAAD08" p-id="1063"></path><path d="M496.65061 957.257c80.157 0 153.737-25.019 201.11-62.386 24.057 6.702 54.83 17.489 74.253 30.864 16.616 11.439 14.543 23.106 11.55 27.816-13.15 20.689-225.584 13.211-286.914 6.767v-3.061z" fill="#FAAD08" p-id="1064"></path><path d="M497.12861 474.524c131.934-0.876 237.669-25.783 273.497-35.34 8.541-2.28 13.11-6.364 13.11-6.364 0.03-1.172 0.542-20.952 0.542-31.155C784.27761 229.833 701.12561 57.173 496.64061 57.162 292.15661 57.173 209.00061 229.832 209.00061 401.665c0 10.203 0.516 29.983 0.547 31.155 0 0 3.717 3.821 10.529 5.67 33.078 8.98 140.803 35.139 276.08 36.034h0.972z" fill="#000000" p-id="1065"></path><path d="M860.28261 619.782c-8.12-26.086-19.204-56.506-30.427-85.72 0 0-6.456-0.795-9.718 0.148-100.71 29.205-222.773 47.818-315.792 46.695h-0.962C410.88561 582.017 289.65061 563.617 189.27961 534.698 185.44461 533.595 177.87261 534.063 177.87261 534.063 166.64961 563.276 155.56661 593.696 147.44761 619.782 108.72961 744.168 121.27261 795.644 130.82461 796.798c20.496 2.474 79.78-93.637 79.78-93.637 0 97.66 88.324 247.617 290.576 248.996a718.01 718.01 0 0 1 5.367 0C708.80161 950.778 797.12261 800.822 797.12261 703.162c0 0 59.284 96.111 79.783 93.637 9.55-1.154 22.093-52.63-16.623-177.017" fill="#000000" p-id="1066"></path><path d="M434.38261 316.917c-27.9 1.24-51.745-30.106-53.24-69.956-1.518-39.877 19.858-73.207 47.764-74.454 27.875-1.224 51.703 30.109 53.218 69.974 1.527 39.877-19.853 73.2-47.742 74.436m206.67-69.956c-1.494 39.85-25.34 71.194-53.24 69.956-27.888-1.238-49.269-34.559-47.742-74.435 1.513-39.868 25.341-71.201 53.216-69.974 27.909 1.247 49.285 34.576 47.767 74.453" fill="#FFFFFF" p-id="1067"></path><path d="M683.94261 368.627c-7.323-17.609-81.062-37.227-172.353-37.227h-0.98c-91.29 0-165.031 19.618-172.352 37.227a6.244 6.244 0 0 0-0.535 2.505c0 1.269 0.393 2.414 1.006 3.386 6.168 9.765 88.054 58.018 171.882 58.018h0.98c83.827 0 165.71-48.25 171.881-58.016a6.352 6.352 0 0 0 1.002-3.395c0-0.897-0.2-1.736-0.531-2.498" fill="#FAAD08" p-id="1068"></path><path d="M467.63161 256.377c1.26 15.886-7.377 30-19.266 31.542-11.907 1.544-22.569-10.083-23.836-25.978-1.243-15.895 7.381-30.008 19.25-31.538 11.927-1.549 22.607 10.088 23.852 25.974m73.097 7.935c2.533-4.118 19.827-25.77 55.62-17.886 9.401 2.07 13.75 5.116 14.668 6.316 1.355 1.77 1.726 4.29 0.352 7.684-2.722 6.725-8.338 6.542-11.454 5.226-2.01-0.85-26.94-15.889-49.905 6.553-1.579 1.545-4.405 2.074-7.085 0.242-2.678-1.834-3.786-5.553-2.196-8.135" fill="#000000" p-id="1069"></path><path d="M504.33261 584.495h-0.967c-63.568 0.752-140.646-7.504-215.286-21.92-6.391 36.262-10.25 81.838-6.936 136.196 8.37 137.384 91.62 223.736 220.118 224.996H506.48461c128.498-1.26 211.748-87.612 220.12-224.996 3.314-54.362-0.547-99.938-6.94-136.203-74.654 14.423-151.745 22.684-215.332 21.927" fill="#FFFFFF" p-id="1070"></path><path d="M323.27461 577.016v137.468s64.957 12.705 130.031 3.91V591.59c-41.225-2.262-85.688-7.304-130.031-14.574" fill="#EB1C26" p-id="1071"></path><path d="M788.09761 432.536s-121.98 40.387-283.743 41.539h-0.962c-161.497-1.147-283.328-41.401-283.744-41.539l-40.854 106.952c102.186 32.31 228.837 53.135 324.598 51.926l0.96-0.002c95.768 1.216 222.4-19.61 324.6-51.924l-40.855-106.952z" fill="#EB1C26" p-id="1072"></path></svg>66.66<span style="font-size:13px">￥</span></span>          <span class="reward_time">2025-01-01</span>        </div>      </div>    </a><div  class="reward_card">            <svg t="1672803307818" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13647" width="200" height="200"><path d="M512 0C229.236338 0 0 229.236338 0 512s229.236338 512 512 512 512-229.224912 512-512S794.775088 0 512 0z m-6.443844 190.801776c94.681097 0 171.710173 75.886551 171.710173 169.185192s-77.029076 169.208042-171.710173 169.208042-171.698748-75.909401-171.698749-169.185191S410.886484 190.801776 505.556156 190.801776zM793.141276 771.638944c0 61.536429-100.473702 61.536429-216.817084 61.536429H447.664383c-121.107714 0-216.794234 0-216.794234-61.536429v-12.670609c0-117.680137 97.240354-213.48091 216.794234-213.480909h128.659809c119.553879 0 216.817084 95.777922 216.817084 213.480909z" fill="#e5e5e5" p-id="13648"></path><path d="M576.324192 545.487426H447.664383c-119.553879 0-216.794234 95.755071-216.794234 213.480909v12.670609c0 61.536429 95.68652 61.536429 216.794234 61.536429h128.659809c116.343383 0 216.817084 0 216.817084-61.536429v-12.670609c0-117.702988-97.263205-213.48091-216.817084-213.480909zM505.556156 529.19501c94.681097 0 171.710173-75.875126 171.710173-169.185191S600.237253 190.801776 505.556156 190.801776s-171.698748 75.932252-171.698749 169.208043 77.029076 169.185192 171.698749 169.185191z" fill="#ffffff" p-id="13649"></path></svg>      <div class="reward_info">        <p class="reward_name">匿名</p>        <div class="reward_bottom">          <span class="reward_money"><svg t="1672812669835" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2998" width="200" height="200"><path d="M512 512m-448 0a448 448 0 1 0 896 0 448 448 0 1 0-896 0Z" fill="#FFBD27" p-id="2999"></path><path d="M413.776 279.52l32.256 41.92h112.864l32.256-41.92 3.232-6.448v-3.232c0-6.448-3.232-9.664-9.68-12.896 0 0-45.152-9.664-83.84-9.664-38.72 0-83.856 9.664-83.856 9.664-16.128 6.448-3.232 22.576-3.232 22.576z m154.8 70.96H452.48C362.176 382.72 288 482.704 288 576.24c0 116.08 64.496 170.912 222.528 170.912 158.032 0 222.528-54.832 222.528-170.928 0-93.52-74.176-193.504-164.48-225.76z m22.576 238.64c6.448 0 12.896 6.448 12.896 12.912 0 6.448-6.448 12.896-12.896 12.896h-64.496v45.152c0 6.448-6.448 12.896-12.896 12.896-6.464 0-12.912-6.448-12.912-12.896v-41.92h-64.496c-6.448 0-12.896-6.464-12.896-12.912s6.448-12.896 12.896-12.896h64.496v-35.472h-64.496c-6.448 0-12.896-6.448-12.896-12.912 0-6.448 6.448-12.896 12.896-12.896h67.728v-3.216s-3.232 0-3.232-3.232l-51.6-61.28c-6.448-3.216-6.448-12.896 0-19.344s16.128-3.232 19.36 3.232l45.152 51.6 45.136-51.6c6.464-6.464 12.912-6.464 19.36-3.232 6.448 6.448 6.448 12.896 3.216 19.36l-51.6 61.28c0 3.2-3.216 3.2-6.448 3.2h67.728c6.448 0 12.896 6.464 12.896 12.912s-6.448 12.896-12.896 12.896h-64.496v35.472h64.496z" fill="#FFFFFF" p-id="3000"></path></svg>0.00<span style="font-size:13px">￥</span></span>          <span class="reward_time"></span>        </div>      </div>    </div><div  class="reward_card">            <img class="no-lightbox" src="/img/avatar-icon.jpg">      <div class="reward_info">        <p class="reward_name">ZeroLatency</p>        <div class="reward_bottom">          <span class="reward_money"><svg t="1672813125726" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1210" width="200" height="200"><path d="M683.058 364.695c11 0 22 1.016 32.943 1.976C686.564 230.064 538.896 128 370.681 128c-188.104 0.66-342.237 127.793-342.237 289.226 0 93.068 51.379 169.827 136.725 229.256L130.72 748.43l119.796-59.368c42.918 8.395 77.37 16.79 119.742 16.79 11 0 21.46-0.48 31.914-1.442a259.168 259.168 0 0 1-10.455-71.358c0.485-148.002 128.744-268.297 291.403-268.297l-0.06-0.06z m-184.113-91.992c25.99 0 42.913 16.79 42.913 42.575 0 25.188-16.923 42.579-42.913 42.579-25.45 0-51.38-16.85-51.38-42.58 0-25.784 25.93-42.574 51.38-42.574z m-239.544 85.154c-25.384 0-51.374-16.85-51.374-42.58 0-25.784 25.99-42.574 51.374-42.574 25.45 0 42.918 16.79 42.918 42.575 0 25.188-16.924 42.579-42.918 42.579z m736.155 271.655c0-135.647-136.725-246.527-290.983-246.527-162.655 0-290.918 110.88-290.918 246.527 0 136.128 128.263 246.587 290.918 246.587 33.972 0 68.423-8.395 102.818-16.85l93.809 50.973-25.93-84.677c68.907-51.93 120.286-119.815 120.286-196.033z m-385.275-42.58c-16.923 0-34.452-16.79-34.452-34.179 0-16.79 17.529-34.18 34.452-34.18 25.99 0 42.918 16.85 42.918 34.18 0 17.39-16.928 34.18-42.918 34.18z m188.165 0c-16.984 0-33.972-16.79-33.972-34.179 0-16.79 16.927-34.18 33.972-34.18 25.93 0 42.913 16.85 42.913 34.18 0 17.39-16.983 34.18-42.913 34.18z" fill="#09BB07" p-id="1211"></path></svg>88.88<span style="font-size:13px">￥</span></span>          <span class="reward_time">2025-01-01</span>        </div>      </div>    </div></div><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.26/image/2025/an1/leonus_2023-01-04_16-46-00.webp"></p><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查看详细教程</summary><div class="toggle-content"><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- 参数如下： --&gt;</span><br><span class="line">&#123;% reward 名字,金额,时间，渠道,头像,链接,是否友链好友 %&#125;</span><br><span class="line">&lt;!-- 示例如下： --&gt;</span><br><span class="line">&#123;% reward ZeroLatency,66.66,2023-01-01,qq,990320751,https://blog.3ms.run,1 %&#125;</span><br><span class="line">&lt;!-- 你也可以什么都不填，将会全部使用默认值，如下： --&gt;</span><br><span class="line">&#123;% reward %&#125;</span><br><span class="line">&lt;!-- 你也可以省略部分内容，如下： --&gt;</span><br><span class="line">&#123;% reward ZeroLatency,88.88,2023-01-01,zfb %&#125;</span><br><span class="line">&lt;!-- 位置在后面的参数不填的话可以直接省略，但是如果中间的不想填必须留空，如下： --&gt;</span><br><span class="line">&lt;!-- 昵称和时间不填，以及渠道后面的全部省略 --&gt;</span><br><span class="line">&#123;% reward ,66.66,,qq %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>描述</th><th>默认值</th></tr></thead><tbody><tr><td>名字</td><td>这还需要描述？</td><td>匿名</td></tr><tr><td>金额</td><td>这也不需要描述吧</td><td>0.00</td></tr><tr><td>时间</td><td>直接填就行，不填则不显示</td><td>无</td></tr><tr><td>渠道</td><td>打赏渠道。可填：<code>qq</code>、<code>wx</code>、<code>zfb</code>，其他渠道留空即可</td><td><svg t="1672812669835" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2998" width="200" height="200"><path d="M512 512m-448 0a448 448 0 1 0 896 0 448 448 0 1 0-896 0Z" fill="#FFBD27" p-id="2999"></path><path d="M413.776 279.52l32.256 41.92h112.864l32.256-41.92 3.232-6.448v-3.232c0-6.448-3.232-9.664-9.68-12.896 0 0-45.152-9.664-83.84-9.664-38.72 0-83.856 9.664-83.856 9.664-16.128 6.448-3.232 22.576-3.232 22.576z m154.8 70.96H452.48C362.176 382.72 288 482.704 288 576.24c0 116.08 64.496 170.912 222.528 170.912 158.032 0 222.528-54.832 222.528-170.928 0-93.52-74.176-193.504-164.48-225.76z m22.576 238.64c6.448 0 12.896 6.448 12.896 12.912 0 6.448-6.448 12.896-12.896 12.896h-64.496v45.152c0 6.448-6.448 12.896-12.896 12.896-6.464 0-12.912-6.448-12.912-12.896v-41.92h-64.496c-6.448 0-12.896-6.464-12.896-12.912s6.448-12.896 12.896-12.896h64.496v-35.472h-64.496c-6.448 0-12.896-6.448-12.896-12.912 0-6.448 6.448-12.896 12.896-12.896h67.728v-3.216s-3.232 0-3.232-3.232l-51.6-61.28c-6.448-3.216-6.448-12.896 0-19.344s16.128-3.232 19.36 3.232l45.152 51.6 45.136-51.6c6.464-6.464 12.912-6.464 19.36-3.232 6.448 6.448 6.448 12.896 3.216 19.36l-51.6 61.28c0 3.2-3.216 3.2-6.448 3.2h67.728c6.448 0 12.896 6.464 12.896 12.912s-6.448 12.896-12.896 12.896h-64.496v35.472h64.496z" fill="#FFFFFF" p-id="3000"></path></svg></td></tr><tr><td>头像</td><td>图片链接，<code>可以直接填QQ号获取QQ头像</code></td><td><svg t="1672803307818" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13647" width="200" height="200"><path d="M512 0C229.236338 0 0 229.236338 0 512s229.236338 512 512 512 512-229.224912 512-512S794.775088 0 512 0z m-6.443844 190.801776c94.681097 0 171.710173 75.886551 171.710173 169.185192s-77.029076 169.208042-171.710173 169.208042-171.698748-75.909401-171.698749-169.185191S410.886484 190.801776 505.556156 190.801776zM793.141276 771.638944c0 61.536429-100.473702 61.536429-216.817084 61.536429H447.664383c-121.107714 0-216.794234 0-216.794234-61.536429v-12.670609c0-117.680137 97.240354-213.48091 216.794234-213.480909h128.659809c119.553879 0 216.817084 95.777922 216.817084 213.480909z" fill="#e5e5e5" p-id="13648"></path><path d="M576.324192 545.487426H447.664383c-119.553879 0-216.794234 95.755071-216.794234 213.480909v12.670609c0 61.536429 95.68652 61.536429 216.794234 61.536429h128.659809c116.343383 0 216.817084 0 216.817084-61.536429v-12.670609c0-117.702988-97.263205-213.48091-216.817084-213.480909zM505.556156 529.19501c94.681097 0 171.710173-75.875126 171.710173-169.185191S600.237253 190.801776 505.556156 190.801776s-171.698748 75.932252-171.698749 169.208043 77.029076 169.185192 171.698749 169.185191z" fill="#ffffff" p-id="13649"></path></svg></td></tr><tr><td>链接</td><td>打赏者的网站链接，设置之后卡片会变成a标签，可点击</td><td>无</td></tr><tr><td>是否友链</td><td><code>1</code>表示是，<code>0</code>或者不填表示不是</td><td>无</td></tr></tbody></table><p><strong>教程开始</strong>：</p><ol><li><p>在 <code>[BlogRoot]\themes\butterfly\scripts\tag</code> 文件夹下面新建 <code>reward.js</code> 并粘贴如下代码：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * reward</span></span><br><span class="line"><span class="comment"> * &#123;% reward name,money,time,channel,avatar,url,friend %&#125;</span></span><br><span class="line"><span class="comment"> * &#123;% reward 名字,金额,时间,渠道,头像,链接,是否友链好友 %&#125;</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">&#x27;use strict&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">reward</span>(<span class="params">args</span>) &#123;</span><br><span class="line">    args = args.<span class="title function_">join</span>(<span class="string">&#x27; &#x27;</span>).<span class="title function_">split</span>(<span class="string">&#x27;,&#x27;</span>)</span><br><span class="line"></span><br><span class="line">    <span class="comment">// 获取参数</span></span><br><span class="line">    <span class="keyword">let</span> name = (args[<span class="number">0</span>] || <span class="string">&#x27;匿名&#x27;</span>).<span class="title function_">trim</span>(),</span><br><span class="line">        money = <span class="title class_">Number</span>(args[<span class="number">1</span>] ? args[<span class="number">1</span>] : <span class="number">0</span>).<span class="title function_">toFixed</span>(<span class="number">2</span>),</span><br><span class="line">        time = (args[<span class="number">2</span>] || <span class="string">&#x27;&#x27;</span>).<span class="title function_">trim</span>(),</span><br><span class="line">        channel = args[<span class="number">3</span>],</span><br><span class="line">        avatar = args[<span class="number">4</span>] ? <span class="string">`&lt;img class=&quot;no-lightbox&quot; src=&quot;<span class="subst">$&#123;<span class="built_in">isNaN</span>(args[<span class="number">4</span>]) ? args[<span class="number">4</span>].trim() : <span class="string">`https://q1.qlogo.cn/g?b=qq&amp;nk=<span class="subst">$&#123;args[<span class="number">4</span>]&#125;</span>&amp;s=5`</span>&#125;</span>&quot;&gt;`</span> : <span class="string">&#x27;&lt;svg t=&quot;1672803307818&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;13647&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;path d=&quot;M512 0C229.236338 0 0 229.236338 0 512s229.236338 512 512 512 512-229.224912 512-512S794.775088 0 512 0z m-6.443844 190.801776c94.681097 0 171.710173 75.886551 171.710173 169.185192s-77.029076 169.208042-171.710173 169.208042-171.698748-75.909401-171.698749-169.185191S410.886484 190.801776 505.556156 190.801776zM793.141276 771.638944c0 61.536429-100.473702 61.536429-216.817084 61.536429H447.664383c-121.107714 0-216.794234 0-216.794234-61.536429v-12.670609c0-117.680137 97.240354-213.48091 216.794234-213.480909h128.659809c119.553879 0 216.817084 95.777922 216.817084 213.480909z&quot; fill=&quot;#e5e5e5&quot; p-id=&quot;13648&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M576.324192 545.487426H447.664383c-119.553879 0-216.794234 95.755071-216.794234 213.480909v12.670609c0 61.536429 95.68652 61.536429 216.794234 61.536429h128.659809c116.343383 0 216.817084 0 216.817084-61.536429v-12.670609c0-117.702988-97.263205-213.48091-216.817084-213.480909zM505.556156 529.19501c94.681097 0 171.710173-75.875126 171.710173-169.185191S600.237253 190.801776 505.556156 190.801776s-171.698748 75.932252-171.698749 169.208043 77.029076 169.185192 171.698749 169.185191z&quot; fill=&quot;#ffffff&quot; p-id=&quot;13649&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&#x27;</span>,</span><br><span class="line">        url = args[<span class="number">5</span>],</span><br><span class="line">        friend = <span class="title class_">Number</span>(args[<span class="number">6</span>]);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (channel == <span class="string">&#x27;wx&#x27;</span>) channel = <span class="string">&#x27;&lt;svg t=&quot;1672813125726&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;1210&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;path d=&quot;M683.058 364.695c11 0 22 1.016 32.943 1.976C686.564 230.064 538.896 128 370.681 128c-188.104 0.66-342.237 127.793-342.237 289.226 0 93.068 51.379 169.827 136.725 229.256L130.72 748.43l119.796-59.368c42.918 8.395 77.37 16.79 119.742 16.79 11 0 21.46-0.48 31.914-1.442a259.168 259.168 0 0 1-10.455-71.358c0.485-148.002 128.744-268.297 291.403-268.297l-0.06-0.06z m-184.113-91.992c25.99 0 42.913 16.79 42.913 42.575 0 25.188-16.923 42.579-42.913 42.579-25.45 0-51.38-16.85-51.38-42.58 0-25.784 25.93-42.574 51.38-42.574z m-239.544 85.154c-25.384 0-51.374-16.85-51.374-42.58 0-25.784 25.99-42.574 51.374-42.574 25.45 0 42.918 16.79 42.918 42.575 0 25.188-16.924 42.579-42.918 42.579z m736.155 271.655c0-135.647-136.725-246.527-290.983-246.527-162.655 0-290.918 110.88-290.918 246.527 0 136.128 128.263 246.587 290.918 246.587 33.972 0 68.423-8.395 102.818-16.85l93.809 50.973-25.93-84.677c68.907-51.93 120.286-119.815 120.286-196.033z m-385.275-42.58c-16.923 0-34.452-16.79-34.452-34.179 0-16.79 17.529-34.18 34.452-34.18 25.99 0 42.918 16.85 42.918 34.18 0 17.39-16.928 34.18-42.918 34.18z m188.165 0c-16.984 0-33.972-16.79-33.972-34.179 0-16.79 16.927-34.18 33.972-34.18 25.93 0 42.913 16.85 42.913 34.18 0 17.39-16.983 34.18-42.913 34.18z&quot; fill=&quot;#09BB07&quot; p-id=&quot;1211&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&#x27;</span></span><br><span class="line">     <span class="keyword">else</span> <span class="keyword">if</span> (channel == <span class="string">&#x27;zfb&#x27;</span>) channel = <span class="string">&#x27;&lt;svg t=&quot;1672813142459&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;1349&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;path d=&quot;M902.095 652.871l-250.96-84.392s19.287-28.87 39.874-85.472c20.59-56.606 23.539-87.689 23.539-87.689l-162.454-1.339v-55.487l196.739-1.387v-39.227H552.055v-89.29h-96.358v89.294H272.133v39.227l183.564-1.304v59.513h-147.24v31.079h303.064s-3.337 25.223-14.955 56.606c-11.615 31.38-23.58 58.862-23.58 58.862s-142.3-49.804-217.285-49.804c-74.985 0-166.182 30.123-175.024 117.55-8.8 87.383 42.481 134.716 114.728 152.139 72.256 17.513 138.962-0.173 197.04-28.607 58.087-28.391 115.081-92.933 115.081-92.933l292.486 142.041c-11.932 69.3-72.067 119.914-142.387 119.844H266.37c-79.714 0.078-144.392-64.483-144.466-144.194V266.374c-0.074-79.72 64.493-144.399 144.205-144.47h491.519c79.714-0.073 144.396 64.49 144.466 144.203v386.764z m-365.76-48.895s-91.302 115.262-198.879 115.262c-107.623 0-130.218-54.767-130.218-94.155 0-39.34 22.373-82.144 113.943-88.333 91.519-6.18 215.2 67.226 215.2 67.226h-0.047z&quot; fill=&quot;#02A9F1&quot; p-id=&quot;1350&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&#x27;</span></span><br><span class="line">     <span class="keyword">else</span> <span class="keyword">if</span> (channel == <span class="string">&#x27;qq&#x27;</span>) channel=<span class="string">&#x27;&lt;svg t=&quot;1672813064588&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;1062&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;path d=&quot;M511.09761 957.257c-80.159 0-153.737-25.019-201.11-62.386-24.057 6.702-54.831 17.489-74.252 30.864-16.617 11.439-14.546 23.106-11.55 27.816 13.15 20.689 225.583 13.211 286.912 6.767v-3.061z&quot; fill=&quot;#FAAD08&quot; p-id=&quot;1063&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M496.65061 957.257c80.157 0 153.737-25.019 201.11-62.386 24.057 6.702 54.83 17.489 74.253 30.864 16.616 11.439 14.543 23.106 11.55 27.816-13.15 20.689-225.584 13.211-286.914 6.767v-3.061z&quot; fill=&quot;#FAAD08&quot; p-id=&quot;1064&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M497.12861 474.524c131.934-0.876 237.669-25.783 273.497-35.34 8.541-2.28 13.11-6.364 13.11-6.364 0.03-1.172 0.542-20.952 0.542-31.155C784.27761 229.833 701.12561 57.173 496.64061 57.162 292.15661 57.173 209.00061 229.832 209.00061 401.665c0 10.203 0.516 29.983 0.547 31.155 0 0 3.717 3.821 10.529 5.67 33.078 8.98 140.803 35.139 276.08 36.034h0.972z&quot; fill=&quot;#000000&quot; p-id=&quot;1065&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M860.28261 619.782c-8.12-26.086-19.204-56.506-30.427-85.72 0 0-6.456-0.795-9.718 0.148-100.71 29.205-222.773 47.818-315.792 46.695h-0.962C410.88561 582.017 289.65061 563.617 189.27961 534.698 185.44461 533.595 177.87261 534.063 177.87261 534.063 166.64961 563.276 155.56661 593.696 147.44761 619.782 108.72961 744.168 121.27261 795.644 130.82461 796.798c20.496 2.474 79.78-93.637 79.78-93.637 0 97.66 88.324 247.617 290.576 248.996a718.01 718.01 0 0 1 5.367 0C708.80161 950.778 797.12261 800.822 797.12261 703.162c0 0 59.284 96.111 79.783 93.637 9.55-1.154 22.093-52.63-16.623-177.017&quot; fill=&quot;#000000&quot; p-id=&quot;1066&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M434.38261 316.917c-27.9 1.24-51.745-30.106-53.24-69.956-1.518-39.877 19.858-73.207 47.764-74.454 27.875-1.224 51.703 30.109 53.218 69.974 1.527 39.877-19.853 73.2-47.742 74.436m206.67-69.956c-1.494 39.85-25.34 71.194-53.24 69.956-27.888-1.238-49.269-34.559-47.742-74.435 1.513-39.868 25.341-71.201 53.216-69.974 27.909 1.247 49.285 34.576 47.767 74.453&quot; fill=&quot;#FFFFFF&quot; p-id=&quot;1067&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M683.94261 368.627c-7.323-17.609-81.062-37.227-172.353-37.227h-0.98c-91.29 0-165.031 19.618-172.352 37.227a6.244 6.244 0 0 0-0.535 2.505c0 1.269 0.393 2.414 1.006 3.386 6.168 9.765 88.054 58.018 171.882 58.018h0.98c83.827 0 165.71-48.25 171.881-58.016a6.352 6.352 0 0 0 1.002-3.395c0-0.897-0.2-1.736-0.531-2.498&quot; fill=&quot;#FAAD08&quot; p-id=&quot;1068&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M467.63161 256.377c1.26 15.886-7.377 30-19.266 31.542-11.907 1.544-22.569-10.083-23.836-25.978-1.243-15.895 7.381-30.008 19.25-31.538 11.927-1.549 22.607 10.088 23.852 25.974m73.097 7.935c2.533-4.118 19.827-25.77 55.62-17.886 9.401 2.07 13.75 5.116 14.668 6.316 1.355 1.77 1.726 4.29 0.352 7.684-2.722 6.725-8.338 6.542-11.454 5.226-2.01-0.85-26.94-15.889-49.905 6.553-1.579 1.545-4.405 2.074-7.085 0.242-2.678-1.834-3.786-5.553-2.196-8.135&quot; fill=&quot;#000000&quot; p-id=&quot;1069&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M504.33261 584.495h-0.967c-63.568 0.752-140.646-7.504-215.286-21.92-6.391 36.262-10.25 81.838-6.936 136.196 8.37 137.384 91.62 223.736 220.118 224.996H506.48461c128.498-1.26 211.748-87.612 220.12-224.996 3.314-54.362-0.547-99.938-6.94-136.203-74.654 14.423-151.745 22.684-215.332 21.927&quot; fill=&quot;#FFFFFF&quot; p-id=&quot;1070&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M323.27461 577.016v137.468s64.957 12.705 130.031 3.91V591.59c-41.225-2.262-85.688-7.304-130.031-14.574&quot; fill=&quot;#EB1C26&quot; p-id=&quot;1071&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M788.09761 432.536s-121.98 40.387-283.743 41.539h-0.962c-161.497-1.147-283.328-41.401-283.744-41.539l-40.854 106.952c102.186 32.31 228.837 53.135 324.598 51.926l0.96-0.002c95.768 1.216 222.4-19.61 324.6-51.924l-40.855-106.952z&quot; fill=&quot;#EB1C26&quot; p-id=&quot;1072&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&#x27;</span></span><br><span class="line">     <span class="keyword">else</span> channel=<span class="string">&#x27;&lt;svg t=&quot;1672812669835&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;2998&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;path d=&quot;M512 512m-448 0a448 448 0 1 0 896 0 448 448 0 1 0-896 0Z&quot; fill=&quot;#FFBD27&quot; p-id=&quot;2999&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M413.776 279.52l32.256 41.92h112.864l32.256-41.92 3.232-6.448v-3.232c0-6.448-3.232-9.664-9.68-12.896 0 0-45.152-9.664-83.84-9.664-38.72 0-83.856 9.664-83.856 9.664-16.128 6.448-3.232 22.576-3.232 22.576z m154.8 70.96H452.48C362.176 382.72 288 482.704 288 576.24c0 116.08 64.496 170.912 222.528 170.912 158.032 0 222.528-54.832 222.528-170.928 0-93.52-74.176-193.504-164.48-225.76z m22.576 238.64c6.448 0 12.896 6.448 12.896 12.912 0 6.448-6.448 12.896-12.896 12.896h-64.496v45.152c0 6.448-6.448 12.896-12.896 12.896-6.464 0-12.912-6.448-12.912-12.896v-41.92h-64.496c-6.448 0-12.896-6.464-12.896-12.912s6.448-12.896 12.896-12.896h64.496v-35.472h-64.496c-6.448 0-12.896-6.448-12.896-12.912 0-6.448 6.448-12.896 12.896-12.896h67.728v-3.216s-3.232 0-3.232-3.232l-51.6-61.28c-6.448-3.216-6.448-12.896 0-19.344s16.128-3.232 19.36 3.232l45.152 51.6 45.136-51.6c6.464-6.464 12.912-6.464 19.36-3.232 6.448 6.448 6.448 12.896 3.216 19.36l-51.6 61.28c0 3.2-3.216 3.2-6.448 3.2h67.728c6.448 0 12.896 6.464 12.896 12.912s-6.448 12.896-12.896 12.896h-64.496v35.472h64.496z&quot; fill=&quot;#FFFFFF&quot; p-id=&quot;3000&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&#x27;</span></span><br><span class="line">    </span><br><span class="line">    <span class="keyword">return</span> <span class="string">`&lt;<span class="subst">$&#123;url?<span class="string">`a href=&quot;<span class="subst">$&#123;url&#125;</span>&quot;`</span>:<span class="string">&#x27;div&#x27;</span>&#125;</span>  class=&quot;reward_card&quot;&gt;</span></span><br><span class="line"><span class="string">      <span class="subst">$&#123;friend?<span class="string">&#x27;&lt;div class=&quot;isFriends&quot;&gt;友链&lt;/div&gt;&#x27;</span>:<span class="string">&#x27;&#x27;</span>&#125;</span></span></span><br><span class="line"><span class="string">      <span class="subst">$&#123;avatar&#125;</span></span></span><br><span class="line"><span class="string">      &lt;div class=&quot;reward_info&quot;&gt;</span></span><br><span class="line"><span class="string">        &lt;p class=&quot;reward_name&quot;&gt;<span class="subst">$&#123;name&#125;</span>&lt;/p&gt;</span></span><br><span class="line"><span class="string">        &lt;div class=&quot;reward_bottom&quot;&gt;</span></span><br><span class="line"><span class="string">          &lt;span class=&quot;reward_money&quot;&gt;<span class="subst">$&#123;channel&#125;</span><span class="subst">$&#123;money&#125;</span>&lt;span style=&quot;font-size:13px&quot;&gt;￥&lt;/span&gt;&lt;/span&gt;</span></span><br><span class="line"><span class="string">          &lt;span class=&quot;reward_time&quot;&gt;<span class="subst">$&#123;time&#125;</span>&lt;/span&gt;</span></span><br><span class="line"><span class="string">        &lt;/div&gt;</span></span><br><span class="line"><span class="string">      &lt;/div&gt;</span></span><br><span class="line"><span class="string">    &lt;/<span class="subst">$&#123;url?<span class="string">&#x27;a&#x27;</span>:<span class="string">&#x27;div&#x27;</span>&#125;</span>&gt;`</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">tag</span>.<span class="title function_">register</span>(<span class="string">&#x27;reward&#x27;</span>, reward, &#123; <span class="attr">ends</span>: <span class="literal">false</span> &#125;)</span><br></pre></td></tr></table></figure></li><li><p>在 <code>[BlogRoot]\themes\butterfly\source\css\_tags</code> 文件夹下面新建 <code>reward.styl</code> 并粘贴如下代码：</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.reward_card</span></span><br><span class="line">  <span class="attribute">width</span>: <span class="number">280px</span></span><br><span class="line">  position relative</span><br><span class="line">  display: flex</span><br><span class="line">  text-decoration: none <span class="meta">!important</span></span><br><span class="line">  color: <span class="built_in">var</span>(--font-color) <span class="meta">!important</span></span><br><span class="line">  background: <span class="built_in">var</span>(--card-bg)</span><br><span class="line">  align-items: center</span><br><span class="line">  border: <span class="number">1px</span> solid <span class="number">#e0e3ed</span></span><br><span class="line">  border-radius: <span class="number">12px</span></span><br><span class="line">  padding: <span class="number">1rem</span></span><br><span class="line">  overflow hidden</span><br><span class="line">  margin: .<span class="number">5rem</span></span><br><span class="line">  transition: .<span class="number">3s</span></span><br><span class="line">  &amp;:hover</span><br><span class="line">    background: <span class="number">#4976f5</span></span><br><span class="line">    scale: <span class="number">1.02</span></span><br><span class="line">    color: white <span class="meta">!important</span></span><br><span class="line">    .isFriends</span><br><span class="line">      transform: <span class="built_in">translate</span>(<span class="number">100%</span>)</span><br><span class="line">  .reward_info</span><br><span class="line">    display: flex</span><br><span class="line">    margin-left: <span class="number">10px</span></span><br><span class="line">    flex-direction: column</span><br><span class="line">    flex: <span class="number">1</span></span><br><span class="line">    line-height: <span class="number">1.5</span></span><br><span class="line">    font-size: <span class="number">1.2rem</span></span><br><span class="line">    p</span><br><span class="line">      margin: <span class="number">0</span> <span class="meta">!important</span></span><br><span class="line">    .reward_name</span><br><span class="line">      font-weight: bold</span><br><span class="line">      font-size: <span class="number">21px</span></span><br><span class="line">    .reward_bottom</span><br><span class="line">      display: flex</span><br><span class="line">      align-items: baseline</span><br><span class="line">      justify-content: space-between</span><br><span class="line">      .reward_money</span><br><span class="line">        svg</span><br><span class="line">          margin-right: <span class="number">3px</span></span><br><span class="line">      span.reward_time</span><br><span class="line">        font-size: <span class="number">12px</span></span><br><span class="line">        opacity: .<span class="number">8</span></span><br><span class="line"></span><br><span class="line">  &amp;&gt;img,&amp;&gt;svg</span><br><span class="line">    width: <span class="number">65px</span> <span class="meta">!important</span></span><br><span class="line">    height: <span class="number">65px</span> <span class="meta">!important</span></span><br><span class="line">    object-fit: cover</span><br><span class="line">    border-radius: <span class="number">50%</span> <span class="meta">!important</span></span><br><span class="line">    margin: <span class="number">0</span> <span class="meta">!important</span></span><br><span class="line">  .isFriends</span><br><span class="line">    position: absolute</span><br><span class="line">    transition: .<span class="number">3s</span></span><br><span class="line">    right: <span class="number">0</span></span><br><span class="line">    top: <span class="number">0</span></span><br><span class="line">    background: <span class="number">#4976f5</span></span><br><span class="line">    color: white</span><br><span class="line">    padding: <span class="number">0</span> <span class="number">10px</span></span><br><span class="line">    border-radius: <span class="number">0</span> <span class="number">0</span> <span class="number">0</span> <span class="number">10px</span></span><br></pre></td></tr></table></figure></li></ol><div class="note primary flat"><p>如果你没有使用过阿里图标，没有添加过对应的css，图标会变得非常大。只需要在自定义css文件添加下面代码：</p></div><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 阿里图标 */</span></span><br><span class="line"><span class="selector-tag">svg</span><span class="selector-class">.icon</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">1em</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">1em</span>;</span><br><span class="line">    <span class="attribute">vertical-align</span>: -<span class="number">0.15em</span>;</span><br><span class="line">    <span class="attribute">fill</span>: currentColor;</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    <span class="attribute">font-size</span>: <span class="number">20px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p><strong>如何实现下图一样的效果</strong></p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.26/image/2025/an1/leonus_2023-01-04_16-46-00.webp"></p><p>只需要在页面的markdown内加入如下内容即可：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: 测试页</span><br><span class="line">date: 2025-01-01 16:10:18</span><br><span class="line">type:</span><br><span class="line">aside: false</span><br><span class="line">aplayer: </span><br><span class="line">comments:</span><br><span class="line">description:</span><br><span class="line"><span class="section">highlight<span class="emphasis">_shrink:</span></span></span><br><span class="line"><span class="emphasis"><span class="section">---</span></span></span><br><span class="line"><span class="emphasis"><span class="section">&lt;!-- 复制下面内容，上面是页面配置信息，防止有人看不懂在什么页面内插入 --&gt;</span></span></span><br><span class="line"><span class="emphasis"><span class="section"></span></span></span><br><span class="line"><span class="emphasis"><span class="section"><span class="language-xml"><span class="tag">&lt;<span class="name">style</span>&gt;</span></span></span></span></span><br><span class="line"><span class="emphasis"><span class="section">.reward_</span>box &#123;</span></span><br><span class="line"><span class="section">    display: flex;</span></span><br><span class="line"><span class="section">    flex-wrap: wrap;</span></span><br><span class="line"><span class="section">    gap: 8px;</span></span><br><span class="line"><span class="section">&#125;</span></span><br><span class="line"><span class="section">.reward<span class="emphasis">_card &#123;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    margin: 0;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    width: calc(100% / 4 - 6px);</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    box-shadow: 0 2px 10px -4px #2c2d300c;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">&#125;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">@media screen and (max-width: 1080px) &#123;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    .reward_</span>box &#123;</span></span><br><span class="line"><span class="section">        gap: 9px;</span></span><br><span class="line"><span class="section">    &#125;</span></span><br><span class="line"><span class="section">    .reward<span class="emphasis">_card &#123;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">        width: calc(100% / 3  - 6px);</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    &#125;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">&#125;</span></span></span><br><span class="line"><span class="emphasis"><span class="section"></span></span></span><br><span class="line"><span class="emphasis"><span class="section">@media screen and (max-width: 850px) &#123;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    .reward_</span>box &#123;</span></span><br><span class="line"><span class="section">        gap: 8px;</span></span><br><span class="line"><span class="section">    &#125;</span></span><br><span class="line"><span class="section">    .reward<span class="emphasis">_card &#123;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">        width: calc(100% / 2  - 4px);</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    &#125;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">&#125;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">@media screen and (max-width: 568px) &#123;</span></span></span><br><span class="line"><span class="emphasis"><span class="section">    .reward_</span>card &#123;</span></span><br><span class="line"><span class="section">        width: 100%;</span></span><br><span class="line"><span class="section">    &#125;</span></span><br><span class="line"><span class="section">&#125;</span></span><br><span class="line"><span class="section"><span class="language-xml"><span class="tag">&lt;/<span class="name">style</span>&gt;</span></span></span></span><br><span class="line"><span class="section"></span></span><br><span class="line"><span class="section"></span></span><br><span class="line"><span class="section"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;reward_box&quot;</span>&gt;</span></span></span></span><br><span class="line"><span class="section"></span></span><br><span class="line"><span class="section">&#123;% reward %&#125;</span></span><br><span class="line"><span class="section">&#123;% reward ,666.66 %&#125;</span></span><br><span class="line"><span class="section">&#123;% reward Leonus,888.88,zfb %&#125;</span></span><br><span class="line"><span class="section">&#123;% reward Leonus,188.88,wx,https://q1.qlogo.cn/g?b=qq&amp;nk=990320751&amp;s=5 %&#125;</span></span><br><span class="line"><span class="section">&#123;% reward Leonus,88.88,wx,990320751 %&#125;</span></span><br><span class="line"><span class="section">&#123;% reward Leonus,66.66,qq,990320751,https://blog.leonus.cn/,1 %&#125;</span></span><br><span class="line"><span class="section"></span></span><br><span class="line"><span class="section"><span class="language-xml"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span></span><br></pre></td></tr></table></figure><p><strong>原文地址：</strong></p><a class="tag-Link" target="_blank" href="https://blog.leonus.cn/2023/reward-card.html">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.leonus.cn/2023/reward-card.html.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">打赏卡片标签外挂</div>            <div class="tag-link-sitename">Leonus</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a></div></details><h2 id="语雀同款链接卡片外挂"><a href="#语雀同款链接卡片外挂" class="headerlink" title="语雀同款链接卡片外挂"></a>语雀同款链接卡片外挂</h2><p><strong>效果如下</strong>：</p><a href="https://blog.3ms.run" target="_blank" title="Daliyuer" referrerPolicy="no-referrer" class="yqlink_card"><div class="yqlink_icon"><svg t="1670307855063" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19066" width="200" height="200"><path d="M504.064 516.608m-384.256 0a384.256 384.256 0 1 0 768.512 0 384.256 384.256 0 1 0-768.512 0Z" fill="#009CF5" p-id="19068"></path><path d="M746.112 270.464L472.448 485.12l63.104 63.104L750.08 274.56c2.304-2.688-1.28-6.144-3.968-4.096z" fill="#FF4C3A" p-id="19069"></path><path d="M262.016 762.752l273.664-214.528-63.104-63.104-214.656 273.536c-2.176 2.688 1.28 6.144 4.096 4.096z" fill="#FFFFFF" p-id="19070"></path><path d="M505.216 155.136c-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.56 5.888 5.888 5.888s5.888-2.56 5.888-5.888v-53.504c-0.128-3.2-2.688-5.888-5.888-5.888zM442.368 160.512c-3.2 0.512-5.376 3.584-4.736 6.784l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736zM396.288 234.368c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552l-18.304-50.304c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552l18.304 50.304zM348.928 257.408c1.664 2.816 5.248 3.712 7.936 2.176s3.712-5.248 2.176-7.936l-26.752-46.336c-1.664-2.816-5.248-3.712-7.936-2.176-2.816 1.664-3.712 5.248-2.176 7.936l26.752 46.336zM306.304 288.256c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.432 2.048-2.816 5.76-0.768 8.192l34.432 40.96zM269.696 326.144c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-2.048 2.432-1.792 6.144 0.768 8.192l40.96 34.432zM193.792 342.912l46.336 26.752c2.816 1.664 6.4 0.64 7.936-2.176 1.664-2.816 0.64-6.4-2.176-8.064L199.552 332.8c-2.816-1.664-6.4-0.64-7.936 2.176-1.664 2.688-0.64 6.272 2.176 7.936zM168.32 399.488l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM207.872 457.344l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784zM201.984 509.568H148.48c-3.2 0-5.888 2.56-5.888 5.888 0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888zM205.44 562.176l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.376 6.784 4.736l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784s-3.584-5.248-6.784-4.736zM217.856 613.376l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 3.072 4.48 4.608 7.552 3.456l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456zM238.976 661.504l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.816 5.248 3.712 8.064 2.176l46.336-26.752c2.816-1.664 3.712-5.248 2.176-8.064-1.664-2.816-5.248-3.712-8.064-2.176zM268.16 705.408l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.432 5.76 2.816 8.192 0.768l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-1.92-2.56-5.632-2.816-8.192-0.768zM304.512 743.424l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.304-1.92-6.016-1.664-8.192 0.768zM347.008 774.656l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.664 6.4 0.64 8.064-2.176l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.536-6.4-0.64-8.064 2.176zM394.24 798.08l-18.304 50.304c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.152 6.4-0.512 7.552-3.456l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.528 0.384-7.552 3.456zM440.192 872.32c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.64 3.2 1.536 6.272 4.736 6.784zM502.912 878.08c3.2 0 5.888-2.56 5.888-5.888v-53.504c0-3.2-2.56-5.888-5.888-5.888-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.688 5.888 5.888 5.888zM549.632 815.232l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736-3.2 0.512-5.248 3.584-4.736 6.784zM600.832 802.816l18.304 50.304c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552L611.84 798.72c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552zM649.088 781.696l26.752 46.336c1.664 2.816 5.248 3.712 8.064 2.176 2.816-1.664 3.712-5.248 2.176-8.064l-26.88-46.336c-1.664-2.816-5.248-3.712-8.064-2.176-2.816 1.664-3.712 5.248-2.048 8.064zM692.864 752.384l34.432 40.96c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.56 2.048-2.816 5.76-0.768 8.192zM730.88 716.032l40.96 34.432c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-1.92 2.432-1.664 6.144 0.768 8.192zM762.112 673.664l46.336 26.752c2.816 1.664 6.4 0.64 8.064-2.176 1.664-2.816 0.64-6.4-2.176-7.936L768 663.552c-2.816-1.664-6.4-0.64-8.064 2.176-1.536 2.688-0.64 6.272 2.176 7.936zM785.536 626.432l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM800.256 575.872l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784zM800.256 517.76c0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888h-53.504c-3.328 0-5.888 2.56-5.888 5.888zM802.688 471.04l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784-0.512-3.2-3.584-5.376-6.784-4.736l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.248 6.784 4.736zM790.272 419.84l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 2.944 4.48 4.608 7.552 3.456zM769.152 371.584l46.336-26.752c2.816-1.664 3.712-5.248 2.176-7.936-1.664-2.816-5.248-3.712-8.064-2.176l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.688 5.248 3.712 8.064 2.048zM739.84 327.808l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-2.048-2.432-5.76-2.816-8.192-0.768l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.56 5.76 2.816 8.192 0.768zM703.488 289.664l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.432-2.048-6.144-1.792-8.192 0.768l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768zM661.12 258.56l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.664-6.4-0.64-8.064 2.176l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.536 6.4 0.64 8.064-2.176zM613.888 235.136l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.4 0.512-7.552 3.456L602.88 231.168c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.024 6.4-0.512 7.552-3.584zM556.544 225.152c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.512 3.2 1.536 6.144 4.736 6.784zM273.536 290.432c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96l21.12 21.12zM237.824 333.824c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536s-1.28 6.912 1.536 8.832l24.448 17.152zM183.04 370.176l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 7.04 3.072 8.448zM194.688 423.68l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.152 6.912 4.48 7.808l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808zM183.168 478.72l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.456 2.304 6.656 5.76 6.912l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.384-3.456-2.176-6.528-5.76-6.912zM181.504 535.04l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.456 6.144 6.912 5.76l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.328-6.016-6.912-5.76zM191.36 590.72l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.352 5.376 7.808 4.48l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.328-4.352-5.376-7.808-4.48zM207.232 644.224l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.2 5.248 4.608 8.448 3.072l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.408-3.2-5.248-4.48-8.448-3.072zM233.984 693.888l-24.448 17.152c-2.944 2.048-3.584 6.016-1.536 8.832 2.048 2.944 6.016 3.584 8.832 1.536l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536zM310.912 775.552L293.76 800c-2.048 2.944-1.28 6.912 1.536 8.832 2.944 2.048 6.912 1.28 8.832-1.536l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.816-2.048-6.912-1.408-8.832 1.536zM349.184 840.704c3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.536-3.2 0.128-7.04-3.072-8.448-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.408 3.2-0.128 6.912 3.072 8.448zM407.808 862.72c3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c0.896-3.456-1.152-6.912-4.48-7.808-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.328 1.152 6.912 4.48 7.808zM469.376 874.112c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.584 2.304 6.656 5.76 6.912zM522.496 839.168l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.456-6.144-6.912-5.76-3.456 0.256-6.016 3.328-5.76 6.912zM578.176 830.976l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928c-0.896-3.456-4.352-5.376-7.808-4.48-3.328 0.896-5.376 4.48-4.48 7.808zM631.68 813.312l12.672 27.136c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.248 3.072-8.448l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.48 5.248-3.072 8.448zM681.344 786.688l17.152 24.448c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 1.92-3.584 5.888-1.536 8.832zM725.504 751.744l21.12 21.12c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96zM763.008 709.76l24.448 17.152c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536-2.048 2.816-1.408 6.784 1.536 8.832zM792.576 661.888l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 6.912 3.072 8.448zM813.44 609.536l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.024 6.912 4.48 7.808zM824.832 554.368l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.256-3.456-2.304-6.656-5.76-6.912l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.584 2.304 6.656 5.76 6.912zM826.624 498.176l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.456-6.144-6.912-5.76l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.328 6.016 6.912 5.76zM818.432 442.368l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.456-4.352-5.376-7.808-4.48l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.48 5.376 7.808 4.48zM800.768 388.992l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.536-3.2-5.248-4.608-8.448-3.072l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.072 5.248 4.48 8.448 3.072zM774.144 339.328l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536L766.848 328.96c-2.944 2.048-3.584 6.016-1.536 8.832 1.92 2.816 5.888 3.584 8.832 1.536zM697.216 257.664l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.944-2.048-6.912-1.28-8.832 1.536l-17.152 24.448c-2.048 2.944-1.28 6.912 1.536 8.832 2.816 2.048 6.784 1.408 8.832-1.536zM658.944 192.512c-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.536 3.2-0.128 7.04 3.072 8.448 3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.408-3.2 0-7.04-3.072-8.448zM600.192 170.496c-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.456 1.152 6.912 4.48 7.808 3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c1.024-3.328-1.024-6.912-4.48-7.808zM534.912 201.6c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.456 2.304 6.528 5.76 6.912zM476.032 158.464c-3.456 0.256-6.144 3.456-5.76 6.912l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.328-6.016-6.912-5.76zM422.144 173.312c-0.896-3.456-4.352-5.376-7.808-4.48-3.456 0.896-5.376 4.352-4.48 7.808l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928zM376.448 219.776l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.608 5.248-3.072 8.448L364.8 225.28c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.376 3.2-8.576zM316.416 253.824c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 2.048-3.584 6.016-1.536 8.832l17.152 24.448z" fill="#FFFFFF" p-id="19071"></path></svg></div><div class="yqlink_content"><div class="yqlink_title">Daliyuer</div><div class="yqlink_desc">进一寸有进一寸的欢喜。</div></div></a><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查完整的教程</summary><div class="toggle-content"><ol><li><p>在 <code>[BlogRoot]\themes\butterfly\scripts\tag</code> 文件夹下面新建 <code>yqlink.js</code> 并粘贴如下代码：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/**</span></span><br><span class="line"><span class="comment"> * yqlink</span></span><br><span class="line"><span class="comment"> * &#123;% yqlink url,title,favicon,desc %&#125;</span></span><br><span class="line"><span class="comment"> * &#123;% yqlink 链接,标题,图标,介绍 %&#125;</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line"><span class="meta"></span></span><br><span class="line"><span class="meta">&#x27;use strict&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">let</span> defaultIcon = <span class="string">&#x27;&lt;svg t=&quot;1670307855063&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;19066&quot; width=&quot;200&quot; height=&quot;200&quot;&gt;&lt;path d=&quot;M504.064 516.608m-384.256 0a384.256 384.256 0 1 0 768.512 0 384.256 384.256 0 1 0-768.512 0Z&quot; fill=&quot;#009CF5&quot; p-id=&quot;19068&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M746.112 270.464L472.448 485.12l63.104 63.104L750.08 274.56c2.304-2.688-1.28-6.144-3.968-4.096z&quot; fill=&quot;#FF4C3A&quot; p-id=&quot;19069&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M262.016 762.752l273.664-214.528-63.104-63.104-214.656 273.536c-2.176 2.688 1.28 6.144 4.096 4.096z&quot; fill=&quot;#FFFFFF&quot; p-id=&quot;19070&quot;&gt;&lt;/path&gt;&lt;path d=&quot;M505.216 155.136c-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.56 5.888 5.888 5.888s5.888-2.56 5.888-5.888v-53.504c-0.128-3.2-2.688-5.888-5.888-5.888zM442.368 160.512c-3.2 0.512-5.376 3.584-4.736 6.784l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736zM396.288 234.368c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552l-18.304-50.304c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552l18.304 50.304zM348.928 257.408c1.664 2.816 5.248 3.712 7.936 2.176s3.712-5.248 2.176-7.936l-26.752-46.336c-1.664-2.816-5.248-3.712-7.936-2.176-2.816 1.664-3.712 5.248-2.176 7.936l26.752 46.336zM306.304 288.256c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.432 2.048-2.816 5.76-0.768 8.192l34.432 40.96zM269.696 326.144c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-2.048 2.432-1.792 6.144 0.768 8.192l40.96 34.432zM193.792 342.912l46.336 26.752c2.816 1.664 6.4 0.64 7.936-2.176 1.664-2.816 0.64-6.4-2.176-8.064L199.552 332.8c-2.816-1.664-6.4-0.64-7.936 2.176-1.664 2.688-0.64 6.272 2.176 7.936zM168.32 399.488l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM207.872 457.344l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784zM201.984 509.568H148.48c-3.2 0-5.888 2.56-5.888 5.888 0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888zM205.44 562.176l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.376 6.784 4.736l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784s-3.584-5.248-6.784-4.736zM217.856 613.376l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 3.072 4.48 4.608 7.552 3.456l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456zM238.976 661.504l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.816 5.248 3.712 8.064 2.176l46.336-26.752c2.816-1.664 3.712-5.248 2.176-8.064-1.664-2.816-5.248-3.712-8.064-2.176zM268.16 705.408l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.432 5.76 2.816 8.192 0.768l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-1.92-2.56-5.632-2.816-8.192-0.768zM304.512 743.424l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.304-1.92-6.016-1.664-8.192 0.768zM347.008 774.656l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.664 6.4 0.64 8.064-2.176l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.536-6.4-0.64-8.064 2.176zM394.24 798.08l-18.304 50.304c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.152 6.4-0.512 7.552-3.456l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.528 0.384-7.552 3.456zM440.192 872.32c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.64 3.2 1.536 6.272 4.736 6.784zM502.912 878.08c3.2 0 5.888-2.56 5.888-5.888v-53.504c0-3.2-2.56-5.888-5.888-5.888-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.688 5.888 5.888 5.888zM549.632 815.232l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736-3.2 0.512-5.248 3.584-4.736 6.784zM600.832 802.816l18.304 50.304c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552L611.84 798.72c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552zM649.088 781.696l26.752 46.336c1.664 2.816 5.248 3.712 8.064 2.176 2.816-1.664 3.712-5.248 2.176-8.064l-26.88-46.336c-1.664-2.816-5.248-3.712-8.064-2.176-2.816 1.664-3.712 5.248-2.048 8.064zM692.864 752.384l34.432 40.96c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.56 2.048-2.816 5.76-0.768 8.192zM730.88 716.032l40.96 34.432c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-1.92 2.432-1.664 6.144 0.768 8.192zM762.112 673.664l46.336 26.752c2.816 1.664 6.4 0.64 8.064-2.176 1.664-2.816 0.64-6.4-2.176-7.936L768 663.552c-2.816-1.664-6.4-0.64-8.064 2.176-1.536 2.688-0.64 6.272 2.176 7.936zM785.536 626.432l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM800.256 575.872l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784zM800.256 517.76c0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888h-53.504c-3.328 0-5.888 2.56-5.888 5.888zM802.688 471.04l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784-0.512-3.2-3.584-5.376-6.784-4.736l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.248 6.784 4.736zM790.272 419.84l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 2.944 4.48 4.608 7.552 3.456zM769.152 371.584l46.336-26.752c2.816-1.664 3.712-5.248 2.176-7.936-1.664-2.816-5.248-3.712-8.064-2.176l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.688 5.248 3.712 8.064 2.048zM739.84 327.808l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-2.048-2.432-5.76-2.816-8.192-0.768l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.56 5.76 2.816 8.192 0.768zM703.488 289.664l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.432-2.048-6.144-1.792-8.192 0.768l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768zM661.12 258.56l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.664-6.4-0.64-8.064 2.176l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.536 6.4 0.64 8.064-2.176zM613.888 235.136l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.4 0.512-7.552 3.456L602.88 231.168c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.024 6.4-0.512 7.552-3.584zM556.544 225.152c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.512 3.2 1.536 6.144 4.736 6.784zM273.536 290.432c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96l21.12 21.12zM237.824 333.824c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536s-1.28 6.912 1.536 8.832l24.448 17.152zM183.04 370.176l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 7.04 3.072 8.448zM194.688 423.68l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.152 6.912 4.48 7.808l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808zM183.168 478.72l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.456 2.304 6.656 5.76 6.912l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.384-3.456-2.176-6.528-5.76-6.912zM181.504 535.04l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.456 6.144 6.912 5.76l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.328-6.016-6.912-5.76zM191.36 590.72l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.352 5.376 7.808 4.48l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.328-4.352-5.376-7.808-4.48zM207.232 644.224l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.2 5.248 4.608 8.448 3.072l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.408-3.2-5.248-4.48-8.448-3.072zM233.984 693.888l-24.448 17.152c-2.944 2.048-3.584 6.016-1.536 8.832 2.048 2.944 6.016 3.584 8.832 1.536l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536zM310.912 775.552L293.76 800c-2.048 2.944-1.28 6.912 1.536 8.832 2.944 2.048 6.912 1.28 8.832-1.536l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.816-2.048-6.912-1.408-8.832 1.536zM349.184 840.704c3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.536-3.2 0.128-7.04-3.072-8.448-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.408 3.2-0.128 6.912 3.072 8.448zM407.808 862.72c3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c0.896-3.456-1.152-6.912-4.48-7.808-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.328 1.152 6.912 4.48 7.808zM469.376 874.112c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.584 2.304 6.656 5.76 6.912zM522.496 839.168l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.456-6.144-6.912-5.76-3.456 0.256-6.016 3.328-5.76 6.912zM578.176 830.976l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928c-0.896-3.456-4.352-5.376-7.808-4.48-3.328 0.896-5.376 4.48-4.48 7.808zM631.68 813.312l12.672 27.136c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.248 3.072-8.448l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.48 5.248-3.072 8.448zM681.344 786.688l17.152 24.448c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 1.92-3.584 5.888-1.536 8.832zM725.504 751.744l21.12 21.12c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96zM763.008 709.76l24.448 17.152c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536-2.048 2.816-1.408 6.784 1.536 8.832zM792.576 661.888l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 6.912 3.072 8.448zM813.44 609.536l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.024 6.912 4.48 7.808zM824.832 554.368l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.256-3.456-2.304-6.656-5.76-6.912l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.584 2.304 6.656 5.76 6.912zM826.624 498.176l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.456-6.144-6.912-5.76l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.328 6.016 6.912 5.76zM818.432 442.368l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.456-4.352-5.376-7.808-4.48l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.48 5.376 7.808 4.48zM800.768 388.992l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.536-3.2-5.248-4.608-8.448-3.072l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.072 5.248 4.48 8.448 3.072zM774.144 339.328l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536L766.848 328.96c-2.944 2.048-3.584 6.016-1.536 8.832 1.92 2.816 5.888 3.584 8.832 1.536zM697.216 257.664l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.944-2.048-6.912-1.28-8.832 1.536l-17.152 24.448c-2.048 2.944-1.28 6.912 1.536 8.832 2.816 2.048 6.784 1.408 8.832-1.536zM658.944 192.512c-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.536 3.2-0.128 7.04 3.072 8.448 3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.408-3.2 0-7.04-3.072-8.448zM600.192 170.496c-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.456 1.152 6.912 4.48 7.808 3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c1.024-3.328-1.024-6.912-4.48-7.808zM534.912 201.6c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.456 2.304 6.528 5.76 6.912zM476.032 158.464c-3.456 0.256-6.144 3.456-5.76 6.912l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.328-6.016-6.912-5.76zM422.144 173.312c-0.896-3.456-4.352-5.376-7.808-4.48-3.456 0.896-5.376 4.352-4.48 7.808l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928zM376.448 219.776l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.608 5.248-3.072 8.448L364.8 225.28c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.376 3.2-8.576zM316.416 253.824c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 2.048-3.584 6.016-1.536 8.832l17.152 24.448z&quot; fill=&quot;#FFFFFF&quot; p-id=&quot;19071&quot;&gt;&lt;/path&gt;&lt;/svg&gt;&#x27;</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">yqlink</span>(<span class="params">args</span>) &#123;</span><br><span class="line">    args = args.<span class="title function_">join</span>(<span class="string">&#x27; &#x27;</span>).<span class="title function_">split</span>(<span class="string">&#x27;,&#x27;</span>);</span><br><span class="line">    <span class="comment">// 获取参数</span></span><br><span class="line">    <span class="keyword">let</span> url = (args[<span class="number">0</span>] || <span class="string">&#x27;&#x27;</span>).<span class="title function_">trim</span>(),</span><br><span class="line">        title = (args[<span class="number">1</span>] || <span class="string">&#x27;点击直达链接&#x27;</span>).<span class="title function_">trim</span>(),</span><br><span class="line">        favicon = (args[<span class="number">2</span>] ? <span class="string">`&lt;img src=&quot;<span class="subst">$&#123;args[<span class="number">2</span>]&#125;</span>&quot; class=&quot;no-lightbox&quot;&gt;`</span> : defaultIcon).<span class="title function_">trim</span>(),</span><br><span class="line">        desc = (args[<span class="number">3</span>] || <span class="string">&#x27;&#x27;</span>).<span class="title function_">trim</span>()</span><br><span class="line"></span><br><span class="line">    <span class="keyword">return</span> <span class="string">`&lt;a href=&quot;<span class="subst">$&#123;url&#125;</span>&quot; <span class="subst">$&#123;url.includes(<span class="string">&#x27;http&#x27;</span>) ? <span class="string">&#x27;target=&quot;_blank&quot;&#x27;</span> : <span class="string">&#x27;&#x27;</span>&#125;</span> title=&quot;<span class="subst">$&#123;title&#125;</span>&quot; referrerPolicy=&quot;no-referrer&quot; class=&quot;yqlink_card&quot;&gt;&lt;div class=&quot;yqlink_icon&quot;&gt;<span class="subst">$&#123;favicon&#125;</span>&lt;/div&gt;&lt;div class=&quot;yqlink_content&quot;&gt;&lt;div class=&quot;yqlink_title&quot;&gt;<span class="subst">$&#123;title&#125;</span>&lt;/div&gt;<span class="subst">$&#123;desc ? <span class="string">`&lt;div class=&quot;yqlink_desc&quot;&gt;<span class="subst">$&#123;desc&#125;</span>&lt;/div&gt;`</span> : <span class="string">&#x27;&#x27;</span>&#125;</span>&lt;/div&gt;&lt;/a&gt;`</span></span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">tag</span>.<span class="title function_">register</span>(<span class="string">&#x27;yqlink&#x27;</span>, yqlink, &#123; <span class="attr">ends</span>: <span class="literal">false</span> &#125;)</span><br></pre></td></tr></table></figure></li><li><p>在 <code>[BlogRoot]\themes\butterfly\source\css\_tags</code> 文件夹下面新建 <code>yqlink.styl</code> 并粘贴如下代码：</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.link_card</span></span><br><span class="line">  <span class="attribute">display</span>: flex</span><br><span class="line">  margin: <span class="number">10px</span> <span class="number">0</span></span><br><span class="line">  color: <span class="built_in">var</span>(--font-color) <span class="meta">!important</span></span><br><span class="line">  text-decoration: none <span class="meta">!important</span></span><br><span class="line">  background: <span class="built_in">var</span>(--reward-pop)</span><br><span class="line">  border-radius: <span class="number">10px</span></span><br><span class="line">  padding: <span class="number">12px</span></span><br><span class="line">  &amp;:hover</span><br><span class="line">    background: <span class="number">#4976f5</span></span><br><span class="line">    color: white <span class="meta">!important</span></span><br><span class="line">  .link_icon,.link_content</span><br><span class="line">    height: <span class="number">4rem</span></span><br><span class="line">  .link_icon</span><br><span class="line">    img,svg</span><br><span class="line">      height: <span class="number">4rem</span></span><br><span class="line">      width: <span class="number">4rem</span></span><br><span class="line">  .link_content</span><br><span class="line">    margin-left: <span class="number">1rem</span></span><br><span class="line">    width: <span class="built_in">calc</span>(<span class="number">100%</span> - <span class="number">6rem</span>)</span><br><span class="line">    overflow: hidden</span><br><span class="line">    line-height: <span class="number">1.5</span></span><br><span class="line">    display: flex</span><br><span class="line">    flex-direction: column</span><br><span class="line">    justify-content: center</span><br><span class="line">    .link_title</span><br><span class="line">      font-weight: bold</span><br><span class="line">      font-size: <span class="number">1.2rem</span></span><br><span class="line">    .link_title,.link_desc</span><br><span class="line">      word-break: break-all</span><br><span class="line">      overflow:hidden</span><br><span class="line">      text-overflow: ellipsis</span><br><span class="line">    &amp;:<span class="built_in">not</span>(:<span class="built_in">has</span>(.link_desc)) .link_title</span><br><span class="line">      display:-webkit-box</span><br><span class="line">      -webkit-box-orient:vertical</span><br><span class="line">      -webkit-line-clamp:<span class="number">2</span></span><br><span class="line">    .link_desc</span><br><span class="line">      opacity: .<span class="number">6</span></span><br><span class="line">    .link_desc,&amp;:<span class="built_in">has</span>(.link_desc) .link_title</span><br><span class="line">      white-space: nowrap</span><br></pre></td></tr></table></figure></li><li><p><strong>使用方法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- 使用html是为了高亮代码，不必在意 --&gt;</span><br><span class="line">&lt;!-- 参数如下： --&gt;</span><br><span class="line">&#123;% yqlink 链接,标题,图标,介绍 %&#125;</span><br><span class="line">&lt;!-- 示例如下： --&gt;</span><br><span class="line">&#123;% yqlink https://blog.3ms.run,ZeroLatency,https://blog.3ms.run/favicon.ico,进一寸有进一寸的欢喜。 %&#125;</span><br><span class="line">&lt;!-- 你也可以什么都不填，将会全部使用默认值，如下： --&gt;</span><br><span class="line">&#123;% yqlink %&#125;</span><br><span class="line">&lt;!-- 你也可以省略部分内容，如下： --&gt;</span><br><span class="line">&#123;% yqlink https://blog.3ms.run %&#125;</span><br><span class="line">&lt;!-- 位置在后面的参数不填的话可以直接省略，但是如果中间的不想填必须留空，如下： --&gt;</span><br><span class="line">&#123;% yqlink https://blog.3ms.run,,,进一寸有进一寸的欢喜。 %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>描述</th><th>默认值</th></tr></thead><tbody><tr><td>链接</td><td>如果连接中包含http则新标签打开，否则本标签页打开</td><td>无</td></tr><tr><td>标题</td><td>网站的标题</td><td>点击直达链接</td></tr><tr><td>图标</td><td>网站favicon<code>链接</code></td><td><svg width="40px" height="40px" t="1670307855063" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19066"><path d="M504.064 516.608m-384.256 0a384.256 384.256 0 1 0 768.512 0 384.256 384.256 0 1 0-768.512 0Z" fill="#009CF5" p-id="19068"></path><path d="M746.112 270.464L472.448 485.12l63.104 63.104L750.08 274.56c2.304-2.688-1.28-6.144-3.968-4.096z" fill="#FF4C3A" p-id="19069"></path><path d="M262.016 762.752l273.664-214.528-63.104-63.104-214.656 273.536c-2.176 2.688 1.28 6.144 4.096 4.096z" fill="#FFFFFF" p-id="19070"></path><path d="M505.216 155.136c-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.56 5.888 5.888 5.888s5.888-2.56 5.888-5.888v-53.504c-0.128-3.2-2.688-5.888-5.888-5.888zM442.368 160.512c-3.2 0.512-5.376 3.584-4.736 6.784l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736zM396.288 234.368c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552l-18.304-50.304c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552l18.304 50.304zM348.928 257.408c1.664 2.816 5.248 3.712 7.936 2.176s3.712-5.248 2.176-7.936l-26.752-46.336c-1.664-2.816-5.248-3.712-7.936-2.176-2.816 1.664-3.712 5.248-2.176 7.936l26.752 46.336zM306.304 288.256c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.432 2.048-2.816 5.76-0.768 8.192l34.432 40.96zM269.696 326.144c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-2.048 2.432-1.792 6.144 0.768 8.192l40.96 34.432zM193.792 342.912l46.336 26.752c2.816 1.664 6.4 0.64 7.936-2.176 1.664-2.816 0.64-6.4-2.176-8.064L199.552 332.8c-2.816-1.664-6.4-0.64-7.936 2.176-1.664 2.688-0.64 6.272 2.176 7.936zM168.32 399.488l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM207.872 457.344l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784zM201.984 509.568H148.48c-3.2 0-5.888 2.56-5.888 5.888 0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888zM205.44 562.176l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.376 6.784 4.736l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784s-3.584-5.248-6.784-4.736zM217.856 613.376l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 3.072 4.48 4.608 7.552 3.456l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456zM238.976 661.504l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.816 5.248 3.712 8.064 2.176l46.336-26.752c2.816-1.664 3.712-5.248 2.176-8.064-1.664-2.816-5.248-3.712-8.064-2.176zM268.16 705.408l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.432 5.76 2.816 8.192 0.768l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-1.92-2.56-5.632-2.816-8.192-0.768zM304.512 743.424l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.304-1.92-6.016-1.664-8.192 0.768zM347.008 774.656l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.664 6.4 0.64 8.064-2.176l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.536-6.4-0.64-8.064 2.176zM394.24 798.08l-18.304 50.304c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.152 6.4-0.512 7.552-3.456l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.528 0.384-7.552 3.456zM440.192 872.32c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.64 3.2 1.536 6.272 4.736 6.784zM502.912 878.08c3.2 0 5.888-2.56 5.888-5.888v-53.504c0-3.2-2.56-5.888-5.888-5.888-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.688 5.888 5.888 5.888zM549.632 815.232l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736-3.2 0.512-5.248 3.584-4.736 6.784zM600.832 802.816l18.304 50.304c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552L611.84 798.72c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552zM649.088 781.696l26.752 46.336c1.664 2.816 5.248 3.712 8.064 2.176 2.816-1.664 3.712-5.248 2.176-8.064l-26.88-46.336c-1.664-2.816-5.248-3.712-8.064-2.176-2.816 1.664-3.712 5.248-2.048 8.064zM692.864 752.384l34.432 40.96c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.56 2.048-2.816 5.76-0.768 8.192zM730.88 716.032l40.96 34.432c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-1.92 2.432-1.664 6.144 0.768 8.192zM762.112 673.664l46.336 26.752c2.816 1.664 6.4 0.64 8.064-2.176 1.664-2.816 0.64-6.4-2.176-7.936L768 663.552c-2.816-1.664-6.4-0.64-8.064 2.176-1.536 2.688-0.64 6.272 2.176 7.936zM785.536 626.432l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM800.256 575.872l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784zM800.256 517.76c0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888h-53.504c-3.328 0-5.888 2.56-5.888 5.888zM802.688 471.04l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784-0.512-3.2-3.584-5.376-6.784-4.736l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.248 6.784 4.736zM790.272 419.84l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 2.944 4.48 4.608 7.552 3.456zM769.152 371.584l46.336-26.752c2.816-1.664 3.712-5.248 2.176-7.936-1.664-2.816-5.248-3.712-8.064-2.176l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.688 5.248 3.712 8.064 2.048zM739.84 327.808l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-2.048-2.432-5.76-2.816-8.192-0.768l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.56 5.76 2.816 8.192 0.768zM703.488 289.664l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.432-2.048-6.144-1.792-8.192 0.768l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768zM661.12 258.56l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.664-6.4-0.64-8.064 2.176l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.536 6.4 0.64 8.064-2.176zM613.888 235.136l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.4 0.512-7.552 3.456L602.88 231.168c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.024 6.4-0.512 7.552-3.584zM556.544 225.152c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.512 3.2 1.536 6.144 4.736 6.784zM273.536 290.432c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96l21.12 21.12zM237.824 333.824c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536s-1.28 6.912 1.536 8.832l24.448 17.152zM183.04 370.176l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 7.04 3.072 8.448zM194.688 423.68l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.152 6.912 4.48 7.808l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808zM183.168 478.72l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.456 2.304 6.656 5.76 6.912l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.384-3.456-2.176-6.528-5.76-6.912zM181.504 535.04l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.456 6.144 6.912 5.76l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.328-6.016-6.912-5.76zM191.36 590.72l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.352 5.376 7.808 4.48l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.328-4.352-5.376-7.808-4.48zM207.232 644.224l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.2 5.248 4.608 8.448 3.072l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.408-3.2-5.248-4.48-8.448-3.072zM233.984 693.888l-24.448 17.152c-2.944 2.048-3.584 6.016-1.536 8.832 2.048 2.944 6.016 3.584 8.832 1.536l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536zM310.912 775.552L293.76 800c-2.048 2.944-1.28 6.912 1.536 8.832 2.944 2.048 6.912 1.28 8.832-1.536l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.816-2.048-6.912-1.408-8.832 1.536zM349.184 840.704c3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.536-3.2 0.128-7.04-3.072-8.448-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.408 3.2-0.128 6.912 3.072 8.448zM407.808 862.72c3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c0.896-3.456-1.152-6.912-4.48-7.808-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.328 1.152 6.912 4.48 7.808zM469.376 874.112c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.584 2.304 6.656 5.76 6.912zM522.496 839.168l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.456-6.144-6.912-5.76-3.456 0.256-6.016 3.328-5.76 6.912zM578.176 830.976l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928c-0.896-3.456-4.352-5.376-7.808-4.48-3.328 0.896-5.376 4.48-4.48 7.808zM631.68 813.312l12.672 27.136c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.248 3.072-8.448l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.48 5.248-3.072 8.448zM681.344 786.688l17.152 24.448c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 1.92-3.584 5.888-1.536 8.832zM725.504 751.744l21.12 21.12c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96zM763.008 709.76l24.448 17.152c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536-2.048 2.816-1.408 6.784 1.536 8.832zM792.576 661.888l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 6.912 3.072 8.448zM813.44 609.536l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.024 6.912 4.48 7.808zM824.832 554.368l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.256-3.456-2.304-6.656-5.76-6.912l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.584 2.304 6.656 5.76 6.912zM826.624 498.176l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.456-6.144-6.912-5.76l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.328 6.016 6.912 5.76zM818.432 442.368l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.456-4.352-5.376-7.808-4.48l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.48 5.376 7.808 4.48zM800.768 388.992l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.536-3.2-5.248-4.608-8.448-3.072l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.072 5.248 4.48 8.448 3.072zM774.144 339.328l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536L766.848 328.96c-2.944 2.048-3.584 6.016-1.536 8.832 1.92 2.816 5.888 3.584 8.832 1.536zM697.216 257.664l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.944-2.048-6.912-1.28-8.832 1.536l-17.152 24.448c-2.048 2.944-1.28 6.912 1.536 8.832 2.816 2.048 6.784 1.408 8.832-1.536zM658.944 192.512c-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.536 3.2-0.128 7.04 3.072 8.448 3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.408-3.2 0-7.04-3.072-8.448zM600.192 170.496c-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.456 1.152 6.912 4.48 7.808 3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c1.024-3.328-1.024-6.912-4.48-7.808zM534.912 201.6c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.456 2.304 6.528 5.76 6.912zM476.032 158.464c-3.456 0.256-6.144 3.456-5.76 6.912l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.328-6.016-6.912-5.76zM422.144 173.312c-0.896-3.456-4.352-5.376-7.808-4.48-3.456 0.896-5.376 4.352-4.48 7.808l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928zM376.448 219.776l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.608 5.248-3.072 8.448L364.8 225.28c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.376 3.2-8.576zM316.416 253.824c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 2.048-3.584 6.016-1.536 8.832l17.152 24.448z" fill="#FFFFFF" p-id="19071"></path></svg></td></tr><tr><td>介绍</td><td>网站的description</td><td>无</td></tr></tbody></table></li></ol><p><strong>原文地址：</strong></p><a class="tag-Link" target="_blank" href="https://blog.leonus.cn/2022/link-card.html">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.leonus.cn/2022/link-card.html.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">语雀同款链接卡片—butterfly主题标签外挂</div>            <div class="tag-link-sitename">Leonus</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a> </div></details><h2 id="给留言板添加一个弹幕"><a href="#给留言板添加一个弹幕" class="headerlink" title="给留言板添加一个弹幕"></a>给留言板添加一个弹幕</h2><p>适用twikoo，其他评论请自行移植。</p><p><strong>效果</strong>：</p><a href="https://blog.3ms.run/comments" target="_blank" title="留言板 | ZeroLatency" referrerPolicy="no-referrer" class="yqlink_card"><div class="yqlink_icon"><img src="/img/avatar-icon.jpg" class="no-lightbox"></div><div class="yqlink_content"><div class="yqlink_title">留言板 | ZeroLatency</div><div class="yqlink_desc">进一寸有进一寸的欢喜。</div></div></a><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查完整的教程</summary><div class="toggle-content"><p>下载js文件：<a href="https://blog.leonus.cn/js/easy-Danmaku.js">easy-Danmaku</a></p><p>把上面js文件下载到本地。放到博客的<code>[blogRoot]/source/js</code>文件夹下面，没有的话创建一个或者自己决定放在哪个文件夹里。<br>然后在<code>butterfly</code>配置文件内的<code>inject</code>下的<code>bottom</code>里引入该文件，如：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">bottom:</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&lt;script</span> <span class="string">src=&quot;/js/easy-Danmaku.js&quot;&gt;&lt;/script&gt;</span></span><br><span class="line">  <span class="bullet">-</span> <span class="string">&lt;script</span> <span class="string">src=&quot;/js/XXXX.js&quot;&gt;&lt;/script&gt;</span> <span class="comment"># 自定义js位置，要放在弹幕插件下面</span></span><br></pre></td></tr></table></figure><p>然后在自定义js内添加以下代码：</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">function</span> <span class="title function_">danmu</span>(<span class="params"></span>) &#123;</span><br><span class="line">  <span class="keyword">if</span> (location.<span class="property">pathname</span> != <span class="string">&#x27;/collect/&#x27;</span> || <span class="variable language_">document</span>.<span class="property">body</span>.<span class="property">clientWidth</span> &lt; <span class="number">768</span>) <span class="keyword">return</span> <span class="comment">//判断是否是留言板页面</span></span><br><span class="line">  <span class="variable language_">console</span>.<span class="title function_">log</span>(<span class="number">1</span>);</span><br><span class="line">  <span class="keyword">const</span> <span class="title class_">Danmaku</span> = <span class="keyword">new</span> <span class="title class_">EasyDanmaku</span>(&#123;</span><br><span class="line">    <span class="attr">page</span>: <span class="string">&#x27;/collect/&#x27;</span>, <span class="comment">// 即留言板地址</span></span><br><span class="line">    <span class="attr">el</span>: <span class="string">&#x27;#danmu&#x27;</span>, <span class="comment">//弹幕挂载节点</span></span><br><span class="line">    <span class="attr">line</span>: <span class="number">10</span>, <span class="comment">//弹幕行数</span></span><br><span class="line">    <span class="attr">speed</span>: <span class="number">20</span>, <span class="comment">//弹幕播放速度</span></span><br><span class="line">    <span class="attr">hover</span>: <span class="literal">true</span>,</span><br><span class="line">    <span class="attr">loop</span>: <span class="literal">true</span>, <span class="comment">//开启循环播放</span></span><br><span class="line">  &#125;)</span><br><span class="line">  <span class="keyword">let</span> data = saveToLocal.<span class="title function_">get</span>(<span class="string">&#x27;danmu&#x27;</span>)</span><br><span class="line">  <span class="keyword">if</span> (data) <span class="title class_">Danmaku</span>.<span class="title function_">batchSend</span>(data, <span class="literal">true</span>);</span><br><span class="line">  <span class="keyword">else</span> &#123;</span><br><span class="line">    <span class="keyword">let</span> ls = []</span><br><span class="line">    <span class="title function_">fetch</span>(<span class="string">&#x27;https://twikoo.xxx.cn/&#x27;</span>, &#123; <span class="comment">// 此处替换成自己的twikoo地址</span></span><br><span class="line">      <span class="attr">method</span>: <span class="string">&quot;POST&quot;</span>,</span><br><span class="line">      <span class="attr">body</span>: <span class="title class_">JSON</span>.<span class="title function_">stringify</span>(&#123;</span><br><span class="line">        <span class="string">&quot;event&quot;</span>: <span class="string">&quot;GET_RECENT_COMMENTS&quot;</span>,</span><br><span class="line">        <span class="string">&quot;includeReply&quot;</span>: <span class="literal">false</span>,</span><br><span class="line">        <span class="string">&quot;pageSize&quot;</span>: <span class="number">100</span></span><br><span class="line">      &#125;),</span><br><span class="line">      <span class="attr">headers</span>: &#123; <span class="string">&#x27;Content-Type&#x27;</span>: <span class="string">&#x27;application/json&#x27;</span> &#125;</span><br><span class="line">    &#125;).<span class="title function_">then</span>(<span class="function"><span class="params">res</span> =&gt;</span> res.<span class="title function_">json</span>()).<span class="title function_">then</span>(<span class="function">(<span class="params">&#123; data &#125;</span>) =&gt;</span> &#123;</span><br><span class="line">      data.<span class="title function_">forEach</span>(<span class="function"><span class="params">i</span> =&gt;</span> &#123;</span><br><span class="line">        <span class="keyword">if</span> (i.<span class="property">avatar</span> == <span class="literal">undefined</span>) i.<span class="property">avatar</span> = <span class="string">&#x27;https://cravatar.cn/avatar/d615d5793929e8c7d70eab5f00f7f5f1?d=mp&#x27;</span></span><br><span class="line">        ls.<span class="title function_">push</span>(&#123; <span class="attr">avatar</span>: i.<span class="property">avatar</span>, <span class="attr">content</span>: i.<span class="property">nick</span> + <span class="string">&#x27;：&#x27;</span> + <span class="title function_">formatDanmaku</span>(i.<span class="property">comment</span>), <span class="attr">url</span>: i.<span class="property">url</span> + <span class="string">&#x27;#&#x27;</span> + i.<span class="property">id</span> &#125;)</span><br><span class="line">      &#125;);</span><br><span class="line">      <span class="title class_">Danmaku</span>.<span class="title function_">batchSend</span>(ls, <span class="literal">true</span>);</span><br><span class="line">      saveToLocal.<span class="title function_">set</span>(<span class="string">&#x27;danmu&#x27;</span>, ls, <span class="number">0.02</span>)</span><br><span class="line">    &#125;);</span><br><span class="line">    <span class="comment">// 格式化评论</span></span><br><span class="line">    <span class="keyword">function</span> <span class="title function_">formatDanmaku</span>(<span class="params">str</span>) &#123;</span><br><span class="line">      str = str.<span class="title function_">replace</span>(<span class="regexp">/&lt;\/*br&gt;|[\s\uFEFF\xA0]+/g</span>, <span class="string">&#x27;&#x27;</span>);</span><br><span class="line">      str = str.<span class="title function_">replace</span>(<span class="regexp">/&lt;img.*?&gt;/g</span>, <span class="string">&#x27;[图片]&#x27;</span>);</span><br><span class="line">      str = str.<span class="title function_">replace</span>(<span class="regexp">/&lt;a.*?&gt;.*?&lt;\/a&gt;/g</span>, <span class="string">&#x27;[链接]&#x27;</span>);</span><br><span class="line">      str = str.<span class="title function_">replace</span>(<span class="regexp">/&lt;pre.*?&gt;.*?&lt;\/pre&gt;/g</span>, <span class="string">&#x27;[代码块]&#x27;</span>);</span><br><span class="line">      str = str.<span class="title function_">replace</span>(<span class="regexp">/&lt;.*?&gt;/g</span>, <span class="string">&#x27;&#x27;</span>);</span><br><span class="line">      <span class="keyword">return</span> str</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&#x27;danmuBtn&#x27;</span>).<span class="property">innerHTML</span> = <span class="string">`&lt;button class=&quot;hideBtn&quot; onclick=&quot;document.getElementById(&#x27;danmu&#x27;).classList.remove(&#x27;hidedanmu&#x27;)&quot;&gt;显示弹幕&lt;/button&gt; &lt;button class=&quot;hideBtn&quot; onclick=&quot;document.getElementById(&#x27;danmu&#x27;).classList.add(&#x27;hidedanmu&#x27;)&quot;&gt;隐藏弹幕&lt;/button&gt;`</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="title function_">danmu</span>()</span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">addEventListener</span>(<span class="string">&quot;pjax:complete&quot;</span>, danmu)</span><br></pre></td></tr></table></figure><p>使用<code>hexo n page xxx</code>创建一个页面，我是放在了留言板里面</p><p>打开 xxx&#x2F;index.md 文件，粘贴如下代码并替换数据（已注释位置）</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br></pre></td><td class="code"><pre><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">style</span>&gt;</span></span></span><br><span class="line"><span class="section">#article-container a:not(.headerlink, .fancybox, .default-style a) &#123;</span></span><br><span class="line"><span class="code">    font-weight: 700;</span></span><br><span class="line"><span class="code">    color: var(--font-color);</span></span><br><span class="line"><span class="code">    padding: 0 3px;</span></span><br><span class="line"><span class="code">    border-bottom: 2px var(--leonus-main) solid;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="section">#article-container a:not(.headerlink, .fancybox, .default-style a):hover &#123;</span></span><br><span class="line"><span class="code">    color: #fff;</span></span><br><span class="line"><span class="code">    border-radius: 5px;</span></span><br><span class="line"><span class="code">    text-decoration: none;</span></span><br><span class="line"><span class="code">    background-color: var(--leonus-main);</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line"><span class="section">#danmu &#123;</span></span><br><span class="line"><span class="code">    width: 100%;</span></span><br><span class="line"><span class="code">    height: calc(100% - 60px);</span></span><br><span class="line"><span class="code">    position: fixed;</span></span><br><span class="line"><span class="code">    left: 0;</span></span><br><span class="line"><span class="code">    top: 60px;</span></span><br><span class="line"><span class="code">    z-index: 1;</span></span><br><span class="line"><span class="code">    pointer-events: none;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.hidedanmu &#123;</span><br><span class="line"><span class="code">    opacity: 0;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.hidedanmu * &#123;</span><br><span class="line"><span class="code">    pointer-events: none !important;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">div#danmuBtn &#123;</span><br><span class="line"><span class="code">    display: flex;</span></span><br><span class="line"><span class="code">    justify-content: center;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">div#danmuBtn button &#123;</span><br><span class="line"><span class="code">    background: var(--leonus-main);</span></span><br><span class="line"><span class="code">    color: white;</span></span><br><span class="line"><span class="code">    padding: 8px 20px;</span></span><br><span class="line"><span class="code">    margin: 0 20px;</span></span><br><span class="line"><span class="code">    border-radius: 100px;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.default-style &#123;</span><br><span class="line"><span class="code">    pointer-events: all;</span></span><br><span class="line"><span class="code">    cursor: pointer;</span></span><br><span class="line"><span class="code">    font-size: 16px;</span></span><br><span class="line"><span class="code">    border-radius: 100px;</span></span><br><span class="line"><span class="code">    overflow: hidden;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.default-style a &#123;</span><br><span class="line"><span class="code">    background-color: rgba(0, 0, 0, 0.5);</span></span><br><span class="line"><span class="code">    transition: .3s;</span></span><br><span class="line"><span class="code">    color: #eee !important;</span></span><br><span class="line"><span class="code">    display: flex;</span></span><br><span class="line"><span class="code">    align-items: center;</span></span><br><span class="line"><span class="code">    justify-content: center;</span></span><br><span class="line"><span class="code">    padding: 6px 16px 6px 6px;</span></span><br><span class="line"><span class="code">    text-decoration: none !important;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.default-style a:hover &#123;</span><br><span class="line"><span class="code">    background-color: rgba(0, 0, 0, 0.7);</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.default-style img &#123;</span><br><span class="line"><span class="code">    pointer-events: none;</span></span><br><span class="line"><span class="code">    height: 30px;</span></span><br><span class="line"><span class="code">    width: 30px;</span></span><br><span class="line"><span class="code">    margin: 0 5px 0 0 !important;</span></span><br><span class="line"><span class="code">    border-radius: 50% !important;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">.default-style p &#123;</span><br><span class="line"><span class="code">    line-height: 1;</span></span><br><span class="line"><span class="code">    pointer-events: none;</span></span><br><span class="line"><span class="code">    margin: 0 !important;</span></span><br><span class="line"><span class="code">    max-width: 300px;</span></span><br><span class="line"><span class="code">    white-space: nowrap;</span></span><br><span class="line"><span class="code">    overflow: hidden;</span></span><br><span class="line"><span class="code">    text-overflow: ellipsis;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code">&lt;/style&gt;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">&#123;% note success  flat %&#125;</span><br><span class="line">如果有什么 <span class="strong">**想说的**</span>、<span class="strong">**想问的**</span> 或者 <span class="strong">**发现了本站的BUG**</span>，欢迎留言告知😊。</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% note pink &#x27;fa-solid fa-link&#x27;  flat %&#125;</span><br><span class="line">若想 <span class="strong">**添加友链**</span> 请前往 [<span class="string">友情链接</span>](<span class="link">/link/</span>) 页面进行友链申请😄</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br><span class="line"><span class="language-xml"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;danmuBtn&quot;</span>&gt;</span></span></span><span class="language-xml"><span class="language-css">&lt;/<span class="selector-tag">div</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">id</span>=<span class="string">&quot;danmu&quot;</span>&gt;</span></span></span><span class="language-xml"><span class="language-css">&lt;/<span class="selector-tag">div</span>&gt;</span></span></span><br></pre></td></tr></table></figure><p>原文地址：</p><a class="tag-Link" target="_blank" href="https://blog.leonus.cn/2023/danmaku.html">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.leonus.cn/2023/danmaku.html.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">给你的留言板添加一个弹幕吧（重制）</div>            <div class="tag-link-sitename">Leonus</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a></div></details><h2 id="网址卡片外置标签"><a href="#网址卡片外置标签" class="headerlink" title="网址卡片外置标签"></a>网址卡片外置标签</h2><p><strong>效果</strong>：</p><a class="tag-Link" target="_blank" href="https://blog.3ms.run">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.3ms.run.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">3MS s Blog'</div>            <div class="tag-link-sitename">Daliyuer</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a><br><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查完整的教程</summary><div class="toggle-content"><a class="tag-Link" target="_blank" href="https://blog.zhheo.com/p/ccaf9148.html">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.zhheo.com/p/ccaf9148.html.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">Hexo的Butterfly魔改教程：网址卡片外置标签</div>            <div class="tag-link-sitename">张洪Heo</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a></div></details><h2 id="Heo同款loading动画"><a href="#Heo同款loading动画" class="headerlink" title="Heo同款loading动画"></a>Heo同款loading动画</h2><details class="toggle" style="border: 1px solid #a38fd9"><summary class="toggle-button" style="background-color: #a38fd9;color: #fff">预览效果</summary><div class="toggle-content"><p><img src="https://img.muooy.com/img/1/2025/04/17/68010cb82a254.webp"></p></div></details><details class="toggle" style="border: 1px solid #b6e2ff"><summary class="toggle-button" style="background-color: #b6e2ff;color: #fff">点击查完整的教程</summary><div class="toggle-content"><p>修改 <code>themes/butterfly/layout/includes/loading/fullpage-loading.pug</code></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line">#loading-box(onclick=&#x27;document.getElementById(&quot;loading-box&quot;).classList.add(&quot;loaded&quot;)&#x27;)</span><br><span class="line">  .loading-bg</span><br><span class="line">    div.loading-img</span><br><span class="line">    .loading-image-dot</span><br><span class="line"></span><br><span class="line">script.</span><br><span class="line">  const preloader = &#123;</span><br><span class="line">    endLoading: () =&gt; &#123;</span><br><span class="line">      document.body.style.overflow = &#x27;auto&#x27;;</span><br><span class="line">      document.getElementById(&#x27;loading-box&#x27;).classList.add(&quot;loaded&quot;)</span><br><span class="line">    &#125;,</span><br><span class="line">    initLoading: () =&gt; &#123;</span><br><span class="line">      document.body.style.overflow = &#x27;&#x27;;</span><br><span class="line">      document.getElementById(&#x27;loading-box&#x27;).classList.remove(&quot;loaded&quot;)</span><br><span class="line"></span><br><span class="line">    &#125;</span><br><span class="line">  &#125;</span><br><span class="line">  window.addEventListener(&#x27;load&#x27;,()=&gt; &#123; preloader.endLoading() &#125;)</span><br><span class="line"></span><br><span class="line">  if (!&#123;theme.pjax &amp;&amp; theme.pjax.enable&#125;) &#123;</span><br><span class="line">    document.addEventListener(&#x27;pjax:send&#x27;, () =&gt; &#123; preloader.initLoading() &#125;)</span><br><span class="line">    document.addEventListener(&#x27;pjax:complete&#x27;, () =&gt; &#123; preloader.endLoading() &#125;)</span><br><span class="line">  &#125;</span><br></pre></td></tr></table></figure><p>修改<code>themes/butterfly/layout/includes/loading/index.pug</code></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">if theme.preloader.source === 1</span><br><span class="line">  include ./fullpage-loading.pug</span><br><span class="line">else if theme.preloader.source === 2</span><br><span class="line">  include ./pace.pug</span><br><span class="line">else</span><br><span class="line">  include ./fullpage-loading.pug</span><br><span class="line">  include ./pace.pug</span><br></pre></td></tr></table></figure><p>新建<code>source/css/progress_bar.css</code>, 也可以不做这一步下面配置文件<code>pace_css_url</code>这一项就要留空, 这一步是修改 pace 加载的胶囊 💊 样式用的</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.pace</span> &#123;</span><br><span class="line">  -webkit-<span class="attribute">pointer-events</span>: none;</span><br><span class="line">  <span class="attribute">pointer-events</span>: none;</span><br><span class="line">  -webkit-<span class="attribute">user-select</span>: none;</span><br><span class="line">  -moz-<span class="attribute">user-select</span>: none;</span><br><span class="line">  <span class="attribute">user-select</span>: none;</span><br><span class="line">  <span class="attribute">z-index</span>: <span class="number">2000</span>;</span><br><span class="line">  <span class="attribute">position</span>: fixed;</span><br><span class="line">  <span class="attribute">margin</span>: auto;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">10px</span>;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">8px</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">8px</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">4rem</span>;</span><br><span class="line">  <span class="attribute">background</span>: <span class="number">#eaecf2</span>;</span><br><span class="line">  <span class="attribute">border</span>: <span class="number">1px</span> <span class="number">#e3e8f7</span>;</span><br><span class="line">  <span class="attribute">overflow</span>: hidden;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.pace-inactive</span> <span class="selector-class">.pace-progress</span> &#123;</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">transition</span>: <span class="number">0.3s</span> ease-in;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.pace</span> <span class="selector-class">.pace-progress</span> &#123;</span><br><span class="line">  -webkit-<span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">  -moz-<span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">  -ms-<span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">  -o-<span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">  <span class="attribute">box-sizing</span>: border-box;</span><br><span class="line">  -webkit-<span class="attribute">transform</span>: <span class="built_in">translate3d</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  -moz-<span class="attribute">transform</span>: <span class="built_in">translate3d</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  -ms-<span class="attribute">transform</span>: <span class="built_in">translate3d</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  -o-<span class="attribute">transform</span>: <span class="built_in">translate3d</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate3d</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  <span class="attribute">max-width</span>: <span class="number">200px</span>;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">z-index</span>: <span class="number">2000</span>;</span><br><span class="line">  <span class="attribute">display</span>: block;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">right</span>: <span class="number">100%</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">100%</span>;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">linear-gradient</span>(-<span class="number">45deg</span>, <span class="number">#ee7752</span>, <span class="number">#e73c7e</span>, <span class="number">#23a6d5</span>, <span class="number">#23d5ab</span>);</span><br><span class="line">  <span class="attribute">animation</span>: gradient <span class="number">1.5s</span> ease infinite;</span><br><span class="line">  <span class="attribute">background-size</span>: <span class="number">200%</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-class">.pace</span><span class="selector-class">.pace-inactive</span> &#123;</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">transition</span>: <span class="number">0.3s</span>;</span><br><span class="line">  <span class="attribute">top</span>: -<span class="number">8px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">@keyframes</span> gradient &#123;</span><br><span class="line">  <span class="number">0%</span> &#123;</span><br><span class="line">    <span class="attribute">background-position</span>: <span class="number">0%</span> <span class="number">50%</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="number">50%</span> &#123;</span><br><span class="line">    <span class="attribute">background-position</span>: <span class="number">100%</span> <span class="number">50%</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="number">100%</span> &#123;</span><br><span class="line">    <span class="attribute">background-position</span>: <span class="number">0%</span> <span class="number">50%</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>修改<code>themes/butterfly/source/css/_layout/loading.styl</code>, 注意其中颜色代码<code>--anzhiyu-card-bg</code>等需自行替换为自己的色值。</p><figure class="highlight stylus"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> <span class="built_in">hexo-config</span>(<span class="string">&#x27;preloader&#x27;</span>)</span><br><span class="line">  <span class="selector-class">.loading-bg</span></span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">position</span>: fixed;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">var</span>(--anzhiyu-card-bg);</span><br><span class="line">    <span class="attribute">z-index</span>: <span class="number">1001</span>;</span><br><span class="line">    <span class="attribute">opacity</span>: <span class="number">1</span>;</span><br><span class="line">    <span class="attribute">transition</span>: .<span class="number">3s</span>;</span><br><span class="line"></span><br><span class="line">  <span class="selector-id">#loading-box</span></span><br><span class="line">    <span class="selector-class">.loading-img</span></span><br><span class="line">      <span class="attribute">width</span>: <span class="number">100px</span>;</span><br><span class="line">      <span class="attribute">height</span>: <span class="number">100px</span>;</span><br><span class="line">      <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span><br><span class="line">      <span class="attribute">margin</span>: auto;</span><br><span class="line">      <span class="attribute">border</span>: <span class="number">4px</span> solid <span class="number">#f0f0f2</span>;</span><br><span class="line">      <span class="attribute">animation-duration</span>: .<span class="number">3s</span>;</span><br><span class="line">      <span class="attribute">animation-name</span>: loadingAction;</span><br><span class="line">      <span class="attribute">animation-iteration-count</span>: infinite;</span><br><span class="line">      <span class="attribute">animation-direction</span>: alternate;</span><br><span class="line">    <span class="selector-class">.loading-image-dot</span></span><br><span class="line">      <span class="attribute">width</span>: <span class="number">30px</span>;</span><br><span class="line">      <span class="attribute">height</span>: <span class="number">30px</span>;</span><br><span class="line">      <span class="attribute">background</span>: <span class="number">#6bdf8f</span>;</span><br><span class="line">      <span class="attribute">position</span>: absolute;</span><br><span class="line">      <span class="attribute">border-radius</span>: <span class="number">50%</span>;</span><br><span class="line">      <span class="attribute">border</span>: <span class="number">6px</span> solid <span class="number">#fff</span>;</span><br><span class="line">      <span class="attribute">top</span>: <span class="number">50%</span>;</span><br><span class="line">      <span class="attribute">left</span>: <span class="number">50%</span>;</span><br><span class="line">      <span class="attribute">transform</span>: <span class="built_in">translate</span>(<span class="number">18px</span>, <span class="number">24px</span>);</span><br><span class="line">    &amp;<span class="selector-class">.loaded</span></span><br><span class="line">      <span class="selector-class">.loading-bg</span></span><br><span class="line">        <span class="attribute">opacity</span>: <span class="number">0</span>;</span><br><span class="line">        <span class="attribute">z-index</span>: -<span class="number">1000</span>;</span><br><span class="line"></span><br><span class="line">  <span class="keyword">@keyframes</span> loadingAction</span><br><span class="line">    <span class="number">0%</span> &#123;</span><br><span class="line">        <span class="attribute">opacity</span>: <span class="number">1</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    <span class="number">100%</span> &#123;</span><br><span class="line">        <span class="attribute">opacity</span>: .<span class="number">4</span>;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>在合适的地方加上自定义 css, 其中 <code>background</code> 的 <code>url 即为 loading 的图片地址</code>。</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.loading-img</span> &#123;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">https://npm.elemecdn.com/anzhiyu-blog@2.1.1/img/avatar.webp</span>) no-repeat center center;</span><br><span class="line">  <span class="attribute">background-size</span>: cover;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>最后修改<code>_config.butterfly.yml</code>中<code>preloader</code>选项, 改完以后<code>source: 1</code>为满屏加载无<code>pace胶囊</code>,<code>source: 2</code>为<code>pace胶囊</code>无满屏动画, <code>source: 3</code>是两者都启用。</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Loading Animation (加载动画)</span></span><br><span class="line"><span class="attr">preloader:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="comment"># source</span></span><br><span class="line">  <span class="comment"># 1. fullpage-loading</span></span><br><span class="line">  <span class="comment"># 2. pace (progress bar)</span></span><br><span class="line">  <span class="comment"># else all</span></span><br><span class="line">  <span class="attr">source:</span> <span class="number">3</span></span><br><span class="line">  <span class="comment"># pace theme (see https://codebyzach.github.io/pace/)</span></span><br><span class="line">  <span class="attr">pace_css_url:</span> <span class="string">/css/progress_bar.css</span></span><br><span class="line">  <span class="attr">avatar:</span> <span class="comment"># 自定义头像</span></span><br></pre></td></tr></table></figure></div></details>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;本帖教程基于&lt;strong&gt;Hexo博客&lt;/strong&gt;程序的 &lt;strong&gt;Butterfly主题&lt;/strong&gt;编写 ，其中魔改&amp;#x2F;美化内容大部分收集至各位大神的博客以及网络。&lt;/p&gt;
&lt;p&gt;由于每位用户的根目录名称各不相同，本文</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="Butterfly" scheme="https://blog.3ms.run/tags/Butterfly/"/>
    
    <category term="Butterfly魔改" scheme="https://blog.3ms.run/tags/Butterfly%E9%AD%94%E6%94%B9/"/>
    
  </entry>
  
  <entry>
    <title>给Butterfly主题文章顶部添加波浪效果</title>
    <link href="https://blog.3ms.run/archives/f9a47848.html"/>
    <id>https://blog.3ms.run/archives/f9a47848.html</id>
    <published>2025-03-22T00:09:58.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<p>本文简要介绍如何在Hexo博客的Butterfly主题中，为每篇文章顶部添加一个动态波浪效果。</p><p>效果图：</p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.22/img/archives/20250322001104.png"></p><h2 id="教程开始"><a href="#教程开始" class="headerlink" title="教程开始"></a>教程开始</h2><p>修改主题目录： <code>themes/butterfly/layout/includes/header/index.pug</code> 在：</p><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">if top_img !== false</span><br><span class="line">  if is_post()</span><br><span class="line">    include ./post-info.pug</span><br></pre></td></tr></table></figure><p>代码后面添加如下代码，<code>+</code>是要添加的部分，记得删除前面的<code>+</code>号。</p><figure class="highlight diff"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">if top_img !== false</span><br><span class="line">  if is_post()</span><br><span class="line">    include ./post-info.pug</span><br><span class="line"><span class="addition">+   section.main-hero-waves-area.waves-area</span></span><br><span class="line"><span class="addition">+     svg.waves-svg(xmlns=&#x27;http://www.w3.org/2000/svg&#x27;, xlink=&#x27;http://www.w3.org/1999/xlink&#x27;, viewBox=&#x27;0 24 150 28&#x27;, preserveAspectRatio=&#x27;none&#x27;, shape-rendering=&#x27;auto&#x27;)</span></span><br><span class="line"><span class="addition">+       defs</span></span><br><span class="line"><span class="addition">+         path#gentle-wave(d=&#x27;M -160 44 c 30 0 58 -18 88 -18 s 58 18 88 18 s 58 -18 88 -18 s 58 18 88 18 v 44 h -352 Z&#x27;)</span></span><br><span class="line"><span class="addition">+       g.parallax</span></span><br><span class="line"><span class="addition">+         use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;0&#x27;)</span></span><br><span class="line"><span class="addition">+         use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;3&#x27;)</span></span><br><span class="line"><span class="addition">+         use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;5&#x27;)</span></span><br><span class="line"><span class="addition">+         use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;7&#x27;)</span></span><br><span class="line">    #post-top-cover</span><br><span class="line">      img#post-top-bg(class=&#x27;nolazyload&#x27; src=bg_img)</span><br><span class="line">  else if is_home()</span><br><span class="line">    #site-info</span><br><span class="line">      h1#site-title=site_title</span><br><span class="line">      if theme.subtitle.enable</span><br></pre></td></tr></table></figure><p>然后在<code>_config.butterfly.yml</code>配置文件中的 <code>[inject.head]</code> 或者自定义 css 中 引入以下 css</p><figure class="highlight css"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* 波浪css */</span></span><br><span class="line"><span class="selector-class">.main-hero-waves-area</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">bottom</span>: -<span class="number">11px</span>;</span><br><span class="line">  <span class="attribute">z-index</span>: <span class="number">5</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.waves-area</span> <span class="selector-class">.waves-svg</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">5rem</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* Animation */</span></span><br><span class="line"></span><br><span class="line"><span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span> &#123;</span><br><span class="line">  <span class="attribute">animation</span>: move-forever <span class="number">25s</span> <span class="built_in">cubic-bezier</span>(<span class="number">0.55</span>, <span class="number">0.5</span>, <span class="number">0.45</span>, <span class="number">0.5</span>) infinite;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">1</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">2s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">7s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#f7f9febd</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">2</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">3s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">10s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#f7f9fe82</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">3</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">4s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">13s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#f7f9fe36</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">4</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">5s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">20s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#f7f9fe</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/* 黑色模式背景 */</span></span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span> <span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">1</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">2s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">7s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#18171dc8</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span> <span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">2</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">3s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">10s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#18171d80</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span> <span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">3</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">4s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">13s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#18171d3e</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span> <span class="selector-class">.parallax</span> &gt; <span class="selector-tag">use</span><span class="selector-pseudo">:nth-child</span>(<span class="number">4</span>) &#123;</span><br><span class="line">  <span class="attribute">animation-delay</span>: -<span class="number">5s</span>;</span><br><span class="line">  <span class="attribute">animation-duration</span>: <span class="number">20s</span>;</span><br><span class="line">  <span class="attribute">fill</span>: <span class="number">#18171d</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="keyword">@keyframes</span> move-forever &#123;</span><br><span class="line">  <span class="number">0%</span> &#123;</span><br><span class="line">    <span class="attribute">transform</span>: <span class="built_in">translate3d</span>(-<span class="number">90px</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="number">100%</span> &#123;</span><br><span class="line">    <span class="attribute">transform</span>: <span class="built_in">translate3d</span>(<span class="number">85px</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/*Shrinking for mobile*/</span></span><br><span class="line"><span class="keyword">@media</span> (<span class="attribute">max-width</span>: <span class="number">768px</span>) &#123;</span><br><span class="line">  <span class="selector-class">.waves-area</span> <span class="selector-class">.waves-svg</span> &#123;</span><br><span class="line">    <span class="attribute">height</span>: <span class="number">40px</span>;</span><br><span class="line">    <span class="attribute">min-height</span>: <span class="number">40px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">inject:</span></span><br><span class="line">  <span class="attr">head:</span></span><br><span class="line">    <span class="comment"># 自定义css</span></span><br><span class="line">    <span class="bullet">-</span> <span class="string">&lt;link</span> <span class="string">rel=&quot;stylesheet&quot;</span> <span class="string">href=&quot;/css/style.css&quot;&gt;</span> <span class="comment">#改成自己的css地址</span></span><br><span class="line">    </span><br></pre></td></tr></table></figure><div class="note primary flat"><p>需要注意的是 css 中<code>fill属性</code>可以控制波浪颜色，最好使其中一个颜色与背景颜色一致，否则会显的有点奇怪。</p></div>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;本文简要介绍如何在Hexo博客的Butterfly主题中，为每篇文章顶部添加一个动态波浪效果。&lt;/p&gt;
&lt;p&gt;效果图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://jsd.gog.email/npm/daliyuer-static@1.0.22/img/archive</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="Butterfly" scheme="https://blog.3ms.run/tags/Butterfly/"/>
    
    <category term="Butterfly魔改" scheme="https://blog.3ms.run/tags/Butterfly%E9%AD%94%E6%94%B9/"/>
    
  </entry>
  
  <entry>
    <title>Nginx反代Jsdelivr自建Npm和Github镜像加速服务</title>
    <link href="https://blog.3ms.run/archives/c920ed04.html"/>
    <id>https://blog.3ms.run/archives/c920ed04.html</id>
    <published>2025-03-18T22:28:16.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>由于某些原因，jsdelivr项目的中国域名cdn.jsdelivr.net经历了备案注销，这直接导致了国内用户访问该服务时线路质量变得极不稳定。对于众多依赖jsdelivr作为静态资源加速服务的网站和应用而言，这意味着加载速度显著下降，稳定性也大打折扣。相比备案期间的表现，当前的服务水平确实难以匹敌。</p><p>值得注意的是，在构建自己的jsdelivr镜像时，建议同时配置防盗链措施，以保护您的资源免受未经授权的使用，从而确保仅限内部或授权用户能够享受加速服务。通过这样的策略，不仅能够有效提升用户体验，还能在一定程度上减轻原服务的压力，促进网络资源的合理分配与利用。</p><p>实施上述解决方案不仅能为您的用户提供更加流畅、稳定的访问体验，而且从长远来看，有助于提高您网站的整体性能表现及搜索引擎排名，进而吸引更多的流量与关注。</p></blockquote><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.21/img/archives/20250318230931.png"></p><h2 id="Nginx反代配置文件"><a href="#Nginx反代配置文件" class="headerlink" title="Nginx反代配置文件"></a>Nginx反代配置文件</h2><figure class="highlight nginx"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br></pre></td><td class="code"><pre><span class="line"><span class="section">server</span> &#123;</span><br><span class="line">    <span class="attribute">listen</span> <span class="number">80</span>;</span><br><span class="line">    <span class="attribute">server_name</span> cdn.yourdomain.com;</span><br><span class="line">    </span><br><span class="line"><span class="section">location</span><span class="regexp"> ^~</span> /npm/</span><br><span class="line">&#123;</span><br><span class="line">    <span class="attribute">proxy_pass</span> https://cdn.jsdelivr.net/npm/;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Host cdn.jsdelivr.net;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> X-Real-IP <span class="variable">$remote_addr</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> X-Forwarded-For <span class="variable">$proxy_add_x_forwarded_for</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> REMOTE-HOST <span class="variable">$remote_addr</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Upgrade <span class="variable">$http_upgrade</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Connection <span class="variable">$connection_upgrade</span>;</span><br><span class="line">    <span class="attribute">proxy_http_version</span> <span class="number">1</span>.<span class="number">1</span>;</span><br><span class="line">    <span class="attribute">add_header</span> X-Cache <span class="variable">$upstream_cache_status</span>;</span><br><span class="line"></span><br><span class="line">    <span class="attribute">if</span> ( <span class="variable">$uri</span> <span class="regexp">~* &quot;\.(gif|png|jpg|css|js|woff|woff2)$&quot;</span> )</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="attribute">expires</span> <span class="number">1m</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="attribute">proxy_ignore_headers</span> Set-Cookie Cache-Control expires;</span><br><span class="line">    <span class="attribute">proxy_cache</span> cache_one;</span><br><span class="line">    <span class="attribute">proxy_cache_key</span> <span class="variable">$host</span><span class="variable">$uri</span><span class="variable">$is_args</span><span class="variable">$args</span>;</span><br><span class="line">    <span class="attribute">proxy_cache_valid</span> <span class="number">200</span> <span class="number">304</span> <span class="number">301</span> <span class="number">302</span> <span class="number">1440m</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="section">location</span><span class="regexp"> ^~</span> /gh/</span><br><span class="line">&#123;</span><br><span class="line">    <span class="attribute">proxy_pass</span> https://cdn.jsdelivr.net/gh/;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Host cdn.jsdelivr.net;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> X-Real-IP <span class="variable">$remote_addr</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> X-Forwarded-For <span class="variable">$proxy_add_x_forwarded_for</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> REMOTE-HOST <span class="variable">$remote_addr</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Upgrade <span class="variable">$http_upgrade</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Connection <span class="variable">$connection_upgrade</span>;</span><br><span class="line">    <span class="attribute">proxy_http_version</span> <span class="number">1</span>.<span class="number">1</span>;</span><br><span class="line"> </span><br><span class="line">    <span class="attribute">add_header</span> X-Cache <span class="variable">$upstream_cache_status</span>;</span><br><span class="line"></span><br><span class="line">    <span class="attribute">if</span> ( <span class="variable">$uri</span> <span class="regexp">~* &quot;\.(gif|png|jpg|css|js|woff|woff2)$&quot;</span> )</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="attribute">expires</span> <span class="number">1m</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="attribute">proxy_ignore_headers</span> Set-Cookie Cache-Control expires;</span><br><span class="line">    <span class="attribute">proxy_cache</span> cache_one;</span><br><span class="line">    <span class="attribute">proxy_cache_key</span> <span class="variable">$host</span><span class="variable">$uri</span><span class="variable">$is_args</span><span class="variable">$args</span>;</span><br><span class="line">    <span class="attribute">proxy_cache_valid</span> <span class="number">200</span> <span class="number">304</span> <span class="number">301</span> <span class="number">302</span> <span class="number">1440m</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">#WP可选</span></span><br><span class="line"><span class="section">location</span><span class="regexp"> ^~</span> /wp/</span><br><span class="line">&#123;</span><br><span class="line">    <span class="attribute">proxy_pass</span> https://cdn.jsdelivr.net/wp/;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Host cdn.jsdelivr.net;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> X-Real-IP <span class="variable">$remote_addr</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> X-Forwarded-For <span class="variable">$proxy_add_x_forwarded_for</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> REMOTE-HOST <span class="variable">$remote_addr</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Upgrade <span class="variable">$http_upgrade</span>;</span><br><span class="line">    <span class="attribute">proxy_set_header</span> Connection <span class="variable">$connection_upgrade</span>;</span><br><span class="line">    <span class="attribute">proxy_http_version</span> <span class="number">1</span>.<span class="number">1</span>;</span><br><span class="line">    </span><br><span class="line">    <span class="attribute">add_header</span> X-Cache <span class="variable">$upstream_cache_status</span>;</span><br><span class="line"></span><br><span class="line">    <span class="attribute">if</span> ( <span class="variable">$uri</span> <span class="regexp">~* &quot;\.(gif|png|jpg|css|js|woff|woff2)$&quot;</span> )</span><br><span class="line">    &#123;</span><br><span class="line">        <span class="attribute">expires</span> <span class="number">1m</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="attribute">proxy_ignore_headers</span> Set-Cookie Cache-Control expires;</span><br><span class="line">    <span class="attribute">proxy_cache</span> cache_one;</span><br><span class="line">    <span class="attribute">proxy_cache_key</span> <span class="variable">$host</span><span class="variable">$uri</span><span class="variable">$is_args</span><span class="variable">$args</span>;</span><br><span class="line">    <span class="attribute">proxy_cache_valid</span> <span class="number">200</span> <span class="number">304</span> <span class="number">301</span> <span class="number">302</span> <span class="number">1440m</span>;</span><br><span class="line">&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h2 id="宝塔反代教程"><a href="#宝塔反代教程" class="headerlink" title="宝塔反代教程"></a>宝塔反代教程</h2><p>如果你使用的是宝塔或者1Panel等其他面板程序可直接在<strong>反向代理</strong>中添加一条配置即可，如图下（以宝塔为例），域名必备设置为<code>cdn.jsdelivr.net</code>，路径<code>/gh</code>也是如此。</p><p><img src="https://jsd.gog.email/npm/daliyuer-static@1.0.21/img/archives/20250318224800.png"></p><h2 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h2><p>将项目引用链接中的cdn.jsdelivr.net替换为你绑定的反代域名即可</p>]]></content>
    
    
    <summary type="html">由于某些原因，jsdelivr项目的中国域名cdn.jsdelivr.net经历了备案注销，这直接导致了国内用户访问该服务时线路质量变得极不稳定。对于众多依赖jsdelivr作为静态资源加速服务的网站和应用而言，这意味着加载速度显著下降，稳定性也大打折扣。相比备案期间的表现，当前的服务水平确实难以匹敌。值得注意的是，在构建自己的jsdelivr镜像时，建议同时配置防盗链措施，以保护您的资源免受未经授权的使用，从而确保仅限内部或授权用户能够享受加速服务。通过这样的策略，不仅能够有效提升用户体验，还能在一定程度上减轻原服务的压力，促进网络资源的合理分配与利用。</summary>
    
    
    
    <category term="实用教程" scheme="https://blog.3ms.run/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="Npm镜像" scheme="https://blog.3ms.run/tags/Npm%E9%95%9C%E5%83%8F/"/>
    
    <category term="Github镜像" scheme="https://blog.3ms.run/tags/Github%E9%95%9C%E5%83%8F/"/>
    
    <category term="Jsdelivr" scheme="https://blog.3ms.run/tags/Jsdelivr/"/>
    
    <category term="自建Npm镜像" scheme="https://blog.3ms.run/tags/%E8%87%AA%E5%BB%BANpm%E9%95%9C%E5%83%8F/"/>
    
    <category term="Jsdelivr反代" scheme="https://blog.3ms.run/tags/Jsdelivr%E5%8F%8D%E4%BB%A3/"/>
    
    <category term="Jsdelivr加速" scheme="https://blog.3ms.run/tags/Jsdelivr%E5%8A%A0%E9%80%9F/"/>
    
  </entry>
  
  <entry>
    <title>使用Hexo+Github搭建个人博客部署到Vercel并使用Github Action自动化编译部署</title>
    <link href="https://blog.3ms.run/archives/Hexo-Github-Vercel-DeploymentTutorial.html"/>
    <id>https://blog.3ms.run/archives/Hexo-Github-Vercel-DeploymentTutorial.html</id>
    <published>2025-03-15T00:18:11.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>这篇文章将教大家如何搭建Hexo博客程序，并部署到Github Pages+Vercel并通过Github Action自动化部署编译。</p><p>无需每次重复运行<code>Hexo</code>三件套命令，随着文章越来越多，编译的时间也随之越来越长，所以我们可以通过<code>Github Action</code>实现自动化部署，当我们博客需要更新时，你只需要将改动直接<code>push</code>到远程仓库，之后的编译部署的工作统交给<code>CI</code>来完成即可。</p></blockquote><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><p>请提前安装（准备）好以下软件，不会的请自行百度，有很多教程。</p><ul><li><p>电脑：Windows或者Mac</p></li><li><p>Node Js(建议使用 Node.js 12.0 及以上版本)：<a class="btn-beautify green" href="https://nodejs.org/" title="点击前往下载"><i class="fas fa-link"></i><span>点击前往下载</span></a></p></li><li><p>Git：<a class="btn-beautify red" href="https://git-scm.com/downloads" title="点击前往下载"><i class="fas fa-link"></i><span>点击前往下载</span></a></p></li><li><p>Guthub账号：<a class="btn-beautify orange" href="https://github.com/" title="点击前往注册"><i class="fas fa-link"></i><span>点击前往注册</span></a></p></li><li><p>Vercel：<a class="btn-beautify blue" href="https://vercel.com" title="点击前往注册"><i class="fas fa-link"></i><span>点击前往注册</span></a></p></li><li><p>域名一个（可选）</p></li></ul><h2 id="本地安装Hexo"><a href="#本地安装Hexo" class="headerlink" title="本地安装Hexo"></a>本地安装Hexo</h2><ol><li>打开 <strong>CMD（终端）</strong> 命令框输入如下命令安装</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo-cli</span><br></pre></td></tr></table></figure><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250312221925.png"><br>2. 安装完后输入<strong>hexo -v</strong>验证是否安装成功。<br><img src="/../img/archives/20250312222327.png"></p><ol start="3"><li>在硬盘中创建一个用于搭建<strong>Hexo</strong>程序的目录</li></ol><p>如：我创建的目录是：<code>E:\HexoBlogTest\DaliyuerBlog</code></p><p><img src="/../img/archives/20250312222509.png"></p><ol start="4"><li>在刚刚创建好的目录中鼠标右键，选择**<code>Open Git Bash here</code>**打开Git终端界面</li></ol><p><img src="/../img/archives/20250312223243.png"></p><ol start="5"><li>配置Git户名和邮箱，终端中输入以下内容</li></ol><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git config --global user.name <span class="string">&quot;你的用户名&quot;</span></span><br><span class="line">git config --global user.email <span class="string">&quot;你的邮箱&quot;</span></span><br></pre></td></tr></table></figure><p><img src="/../img/archives/20250312224908.png"></p><ol start="6"><li>终端中输入：<code>hexo init</code>初始化<strong>Hexo博客</strong>，确保目录与之前创建的目录一样</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">hexo init #在当前目录下存放Hexo文件</span><br><span class="line">hexo init 项目名 #会创新创建一个目录用于存放Hexo文件</span><br></pre></td></tr></table></figure><p><img src="/../img/archives/20250312225308.png"></p><ol start="7"><li>初始化成功后输入<code>npm i</code>安装相关依赖。</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">cd DaliyuerBlog  //进入Hexo Blog文件夹 如果你使用的是hexo init命令，则此命令可不用输</span><br><span class="line">npm i</span><br></pre></td></tr></table></figure><p><img src="/../img/archives/20250312225947.png"></p><p><strong>Hexo</strong>的目录结构如下：</p><p><img src="/../img/archives/20250312230041.png"></p><table><thead><tr><th>目录</th><th>描叙</th></tr></thead><tbody><tr><td>node_modules</td><td>依赖包</td></tr><tr><td>scaffolds</td><td>生成文章的一些模板</td></tr><tr><td>source</td><td>文章页面存放文件</td></tr><tr><td>themes</td><td>主题</td></tr><tr><td>_config.landscape.yml</td><td>发主题的配置文件</td></tr><tr><td>config.yml</td><td>博客的配置文件</td></tr><tr><td>package.json</td><td>项目名称、描述、版本、运行和开发等信息</td></tr></tbody></table><ol start="8"><li>之后终端中输入 <code>hexo g</code>生成静态文件，<code>hexo g</code>启动项目</li></ol><p><img src="/../img/archives/20250312231148.png"></p><ol start="9"><li>打开浏览器，输入地址：<a href="http://localhost:4000/">http://localhost:4000/</a> ，看到下面的效果，说明你的博客已经构建成功了。</li></ol><p><img src="/../img/archives/20250312231307.png"></p><h2 id="将静态博客部署到GitHub-Pages"><a href="#将静态博客部署到GitHub-Pages" class="headerlink" title="将静态博客部署到GitHub Pages"></a>将静态博客部署到GitHub Pages</h2><h3 id="配置GitHub-SSH密钥"><a href="#配置GitHub-SSH密钥" class="headerlink" title="配置GitHub SSH密钥"></a>配置GitHub SSH密钥</h3><p>打开Git终端执行以下命令生成SSH密钥</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh-keygen -t rsa -C &quot;你的邮箱&quot;</span><br></pre></td></tr></table></figure><p>打开C盘用户目录下的<code>.ssh</code>：<strong>C:\Users\用户名\.ssh</strong> 找到<code>id_rsa.pub</code>文件用记事本打开，复制里面的内容，之后需要在github中配置ssh密钥</p><p><img src="/../img/archives/20250312234947.png"></p><p>打开<strong>Github</strong>，点击右上角头像 选择settings，进入设置页后选择 <a href="https://github.com/settings/keys">SSH and GPG keys</a>，名字随便起，将刚刚复制的内容公钥填到Key那一栏。</p><p><img src="/../img/archives/20250312235726.png"></p><p><img src="/../img/archives/20250312235840.png"></p><p>Ok到这里就已经配置好<strong>GitHub</strong>连接ssh了</p><p>测试连接，终端输入以下命令</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">ssh -T git@github.com</span><br></pre></td></tr></table></figure><p>出现以下内容就说明已经配置成功了</p><p><img src="/../img/archives/20250313000142.png"></p><h3 id="创建GitHub仓库并部署Pages"><a href="#创建GitHub仓库并部署Pages" class="headerlink" title="创建GitHub仓库并部署Pages"></a>创建GitHub仓库并部署Pages</h3><ol><li>打开GitHub创建一个仓库，点击右上角的<code>+</code>按钮，选择<code>New repository</code>，创建一个<code>&lt;用户名&gt;.github.io</code>的仓库。</li></ol><p><img src="/../img/archives/20250312232143.png"></p><p>仓库的格式必须为：<code>&lt;用户名&gt;.github.io</code> (注意：前缀必须为用户名，不要等后面无法打开网页)</p><p>仓库可见性选择<code>Public</code>，并勾选<code>Add a README file</code></p><p>点击 Creat repository 进行创建即可</p><ol start="2"><li>之后回到Git终端，输入<code>npm install hexo-deployer-git --save</code> 命令安装 hexo-deployer-git</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">npm install hexo-deployer-git --save</span><br></pre></td></tr></table></figure><ol start="3"><li>打开修改博客目录下的 <code>_config.yml</code> 文件</li></ol><div class="note info flat"><p>_config.yml，就是整个Hexo框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的<a href="https://hexo.io/zh-cn/docs/configuration">配置描述</a>。</p></div><p>修改最后一行的<code>deploy</code>配置，将<code>repo</code>修改为你自己的github项目地址即可，<code>branch</code>为分支默认main即可</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">deploy:</span></span><br><span class="line">  <span class="attr">type:</span> <span class="string">git</span></span><br><span class="line">  <span class="attr">repo:</span> <span class="string">git@github.com:daliyuer/daliyuer.github.io.git</span></span><br><span class="line">  <span class="attr">branch:</span> <span class="string">main</span></span><br><span class="line">  <span class="attr">message:</span> <span class="string">Site</span> <span class="string">updated:&#123;&#123;</span> <span class="string">now(&#x27;YYYY-MM-DD</span> <span class="string">HH:mm:ss&#x27;)</span> <span class="string">&#125;&#125;</span></span><br></pre></td></tr></table></figure><p><img src="/../img/archives/20250312234126.png"></p><ol start="4"><li>修改配置之后终端运行如下命令，将代码部署到 GitHub Pages</li></ol><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">hexo cl &amp;&amp; hexo g &amp;&amp; hexo d</span><br></pre></td></tr></table></figure><p><img src="/../img/archives/20250313001105.png"></p><p>等待命令跑完出现<code>Deploy done: git</code>即部署成功</p><p><img src="/../img/archives/20250313001229.png"></p><p>等待5分钟左右，浏览器访问<code>&lt;你的用户名&gt;.github.io</code>即可查看到你博客的内容</p><div class="note primary flat"><p>注意每次更新博客都需要运行以上三件套命令，下面我会教大家使用<strong>Github Action</strong>自动化部署，无需使用上面的三件套命令。</p></div><p><img src="/../img/archives/20250313001617.png"></p><h2 id="部署到Vercel"><a href="#部署到Vercel" class="headerlink" title="部署到Vercel"></a>部署到Vercel</h2><h3 id="注册Vercel"><a href="#注册Vercel" class="headerlink" title="注册Vercel"></a>注册Vercel</h3><p>打开<a href="https://vercel.com/">Vercel</a>-&gt;选择<code>I&#39;m working on personal projects</code>-&gt;输入用户名-&gt; 继续<code>Continue</code>-&gt;使用<code>Continue with GitHub</code>注册，在新弹出的窗口授权<strong>github</strong>即可</p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314205228.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314205418.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314205606.png"></p><h3 id="新建项目将Hexo部署到Vercel"><a href="#新建项目将Hexo部署到Vercel" class="headerlink" title="新建项目将Hexo部署到Vercel"></a>新建项目将Hexo部署到Vercel</h3><ol><li>注册之后来到首页，点击·<code>Add New...</code>-&gt;<code>Project</code></li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314210220.png"></p><ol start="2"><li>点击<code>install</code>在新弹出的窗口授权github</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314210530.png"></p><ol start="3"><li>之后页面会出现之前创建的<strong>Github Pages</strong>仓库，点击<code>Import</code>，参数全部默认，点击<code>Deploy</code>部署</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314210649.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314210944.png"></p><ol start="4"><li>部署成功后点击<code>Continue to Dashboard</code>来到项目控制面板，出现如下图就代表部署成功了。</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314211300.png"></p><p>之后你就可以通过 github<code>用户名.github.io</code>和Vercel上的<code>项目名.vercel.app</code>访问你的博客了。</p><p>但是由于GFW把Vercel的vercel.app屏蔽了所以需要绑定自己的域名才能访问。</p><h3 id="Vercel绑定自定义域名（可选）"><a href="#Vercel绑定自定义域名（可选）" class="headerlink" title="Vercel绑定自定义域名（可选）"></a>Vercel绑定自定义域名（可选）</h3><ol><li>项目控制台点击-&gt;<code>Settings</code>-&gt;<code>Domains</code>-&gt;<code>Add</code>-&gt;输入你的域名，这里我已<code>bk.3ms.run</code>为例，其他保持默认-&gt;点击<code>Add Domain</code>。</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314211757.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314211918.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314212208.png"></p><ol start="2"><li>之后会要求验证域名所有权，打开你域名注册商的管理界面添加一条解析记录，如下图</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314212359.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314212508.png"></p><ol start="3"><li>验证成功之后在添加一条解析技能，如图</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314212604.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314212702.png"></p><p>等待几分钟之后你就可以通过添加的自定义域名访问了。</p><h2 id="Github-Action自动化部署"><a href="#Github-Action自动化部署" class="headerlink" title="Github Action自动化部署"></a><strong>Github Action</strong>自动化部署</h2><p>由于每次部署写文章修改配置后都需要运行<strong>Hexo</strong>的三件套指令，随着文章越来越多，编译的时间也随之越来越长，通过<strong>Github Action</strong>，我们只需要在每次完成博客的编写或修改以后，将改动直接push到远程仓库，之后的编译部署的工作统统交给Github Action CI来完成即可。</p><a class="tag-Link" target="_blank" href="https://akilar.top/posts/f752c86d/">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/akilar.top/posts/f752c86d/.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">使用Github Action实现全自动部署</div>            <div class="tag-link-sitename">参考文章-Akila</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a><h3 id="创建Hexo源码仓库"><a href="#创建Hexo源码仓库" class="headerlink" title="创建Hexo源码仓库"></a>创建Hexo源码仓库</h3><ol><li>继续创建一个<strong>Github</strong>仓库用于存放<strong>HexoBlog</strong>的全部文件，Repository name仓库名称可随意填。仓库选择私有Private，其他保持默认创建即可。</li></ol><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314214326.png"></p><p>创建完成后，需要把博客的源码push到这给仓库，之后会教大家如何弄。</p><ol start="2"><li>在本地博客目录下依次新建文件夹&#x2F;文件：<code>[BlogRoot]/.github/workflows/autodeploy.yml</code>如下图，在<code>autodeploy.yml</code>文件中并输入以下内容</li></ol><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 当有改动推送到master分支时，启动Action</span></span><br><span class="line"><span class="attr">name:</span> <span class="string">自动部署</span></span><br><span class="line"></span><br><span class="line"><span class="attr">on:</span></span><br><span class="line">  <span class="attr">push:</span></span><br><span class="line">    <span class="attr">branches:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">main</span> <span class="comment">#2020年10月后github新建仓库默认分支改为main，注意更改</span></span><br><span class="line"></span><br><span class="line">  <span class="attr">release:</span></span><br><span class="line">    <span class="attr">types:</span></span><br><span class="line">      <span class="bullet">-</span> <span class="string">published</span></span><br><span class="line"></span><br><span class="line"><span class="attr">jobs:</span></span><br><span class="line">  <span class="attr">deploy:</span></span><br><span class="line">    <span class="attr">runs-on:</span> <span class="string">ubuntu-latest</span></span><br><span class="line">    <span class="attr">steps:</span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">检查分支</span></span><br><span class="line">      <span class="attr">uses:</span> <span class="string">actions/checkout@v4</span></span><br><span class="line">      <span class="attr">with:</span></span><br><span class="line">        <span class="attr">ref:</span> <span class="string">main</span> <span class="comment">#2020年10月后github新建仓库默认分支改为main，注意更改</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">安装</span> <span class="string">Node</span></span><br><span class="line">      <span class="attr">uses:</span> <span class="string">actions/setup-node@v4</span></span><br><span class="line">      <span class="attr">with:</span></span><br><span class="line">        <span class="attr">node-version:</span> <span class="string">&quot;18.19.0&quot;</span> <span class="comment">#action使用的node版本，建议大版本和本地保持一致。可以在本地用node -v查询版本号。</span></span><br><span class="line"></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">安装</span> <span class="string">Hexo</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        export TZ=&#x27;Asia/Shanghai&#x27;</span></span><br><span class="line"><span class="string">        npm install hexo-cli -g</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">缓存</span> <span class="string">Hexo</span></span><br><span class="line">      <span class="attr">uses:</span> <span class="string">actions/cache@v4</span></span><br><span class="line">      <span class="attr">id:</span> <span class="string">cache</span></span><br><span class="line">      <span class="attr">with:</span></span><br><span class="line">        <span class="attr">path:</span> <span class="string">node_modules</span></span><br><span class="line">        <span class="attr">key:</span> <span class="string">$&#123;&#123;runner.OS&#125;&#125;-$&#123;&#123;hashFiles(&#x27;**/package-lock.json&#x27;)&#125;&#125;</span></span><br><span class="line">    </span><br><span class="line">          </span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">安装依赖</span></span><br><span class="line">      <span class="attr">if:</span> <span class="string">steps.cache.outputs.cache-hit</span> <span class="type">!=</span> <span class="string">&#x27;true&#x27;</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        npm install --save</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">生成静态文件</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        hexo clean</span></span><br><span class="line"><span class="string">        hexo generate</span></span><br><span class="line"><span class="string"></span></span><br><span class="line">    <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">部署</span> <span class="comment">#此处master:master 指从本地的master分支提交到远程仓库的master分支，若远程仓库没有对应分支则新建一个。如有其他需要，可以根据自己的需求更改。</span></span><br><span class="line">      <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">        cd ./public</span></span><br><span class="line"><span class="string">        git init</span></span><br><span class="line"><span class="string">        git config --global user.name &#x27;$&#123;&#123; secrets.GITHUBUSERNAME &#125;&#125;&#x27;</span></span><br><span class="line"><span class="string">        git config --global user.email &#x27;$&#123;&#123; secrets.GITHUBEMAIL &#125;&#125;&#x27;</span></span><br><span class="line"><span class="string">        git add .</span></span><br><span class="line"><span class="string">        git commit -m &quot;$&#123;&#123; github.event.head_commit.message &#125;&#125; $(date +&quot;%Z %Y-%m-%d %A %H:%M:%S&quot;) Updated By Github Actions&quot;</span></span><br><span class="line"><span class="string">        git push --force --quiet &quot;https://$&#123;&#123; secrets.GITHUBUSERNAME &#125;&#125;:$&#123;&#123; secrets.GITHUBTOKEN &#125;&#125;@github.com/$&#123;&#123; secrets.GITHUBUSERNAME &#125;&#125;/$&#123;&#123; secrets.GITHUBUSERNAME &#125;&#125;.github.io.git&quot; master:main</span></span><br><span class="line"><span class="string">        #git push --force --quiet &quot;https://$&#123;&#123; secrets.TOKENUSER &#125;&#125;:$&#123;&#123; secrets.CODINGTOKEN &#125;&#125;@e.coding.net/$&#123;&#123; secrets.CODINGUSERNAME &#125;&#125;/$&#123;&#123;  secrets.CODINGBLOGREPO &#125;&#125;.git&quot; master:master #coding部署写法，需要的自行取消注释</span></span><br><span class="line"><span class="string">        #git push --force --quiet &quot;https://$&#123;&#123; secrets.GITEEUSERNAME &#125;&#125;:$&#123;&#123; secrets.GITEETOKEN &#125;&#125;@gitee.com/$&#123;&#123; secrets.GITEEUSERNAME &#125;&#125;/$&#123;&#123; secrets.GITEEUSERNAME &#125;&#125;.git&quot; master:master #gitee部署写法，需要的自行取消注释</span></span><br></pre></td></tr></table></figure><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314215220.png"></p><h3 id="获取Token"><a href="#获取Token" class="headerlink" title="获取Token"></a>获取Token</h3><p>为了确保交由<code>Github Action</code>来持续部署时，<code>Github Action</code>具备足够的权限来进行<code>hexo deploy</code>操作,需要先获取<code>Token</code>，</p><p>访问Github-&gt;头像（右上角）-&gt;Settings-&gt;Developer Settings-&gt;Personal access tokens-&gt;Tokens (classic)-&gt;generate new token-&gt;Generate new token(classic),创建的Token名称随意，但必须勾选repo项和workflows项,最后点击<code>Generate token</code>创建即可</p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314220538.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314220618.png"></p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314220733.png"></p><div class="note info flat"><p><code>token</code>只会显示这一次，之后将无法查看，所以务必保证你已经记录下了<code>Token</code>。之后如果忘记了就只能重新生成重新配置了。如上图</p></div><h3 id="配置Github-Action"><a href="#配置Github-Action" class="headerlink" title="配置Github Action"></a>配置Github Action</h3><ol><li><p>继续打开刚刚创建用于存放<strong>Hexo</strong>博客源码的<strong>Github</strong>仓库依次打开<code>Settings-&gt;Secrets-&gt;actions-&gt;New repository secret</code>添加环境变量，依次添加以下变量名称。</p><table><thead><tr><th>变量名</th><th>内容</th></tr></thead><tbody><tr><td>GITHUBUSERNAME</td><td>GitHub用户名</td></tr><tr><td>GITHUBEMAIL</td><td>Github邮箱</td></tr><tr><td>GITHUBTOKEN</td><td>刚刚申请的Github的tken</td></tr></tbody></table><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314221949.png"></p></li><li><p>将本地<strong>Hexo博客</strong>源码上传到Github仓库推荐使用<code>Visual Studio Code</code>操作，用vs code 打开hexo博客目录，CTRL+~打开终端。<img src="/20250314222406.png"></p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#依次输入以下命令</span></span><br><span class="line">git init</span><br><span class="line">git branch -M main </span><br><span class="line">git remote add origin git@github.com:[Github用户名]/[Github仓库名].git <span class="comment">#自行更改Github用户名/Github仓库名</span></span><br></pre></td></tr></table></figure><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314222931.png"></p></li><li><p>博客根目录创建（如无）<code>.gitignore</code>，输入如下内容：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">.DS_Store</span><br><span class="line">Thumbs.db</span><br><span class="line">db.json</span><br><span class="line">*.log</span><br><span class="line">node_modules/</span><br><span class="line">public/</span><br><span class="line">.deploy*/</span><br><span class="line">.deploy_git*/</span><br><span class="line">.idea</span><br><span class="line">themes/butterfly/.git</span><br></pre></td></tr></table></figure><p>表示不上传到github上。这样可以显著减少需要提交的文件量和加快提交速度。</p><p>如果不是<code>butterfly</code>主题，记得替换最后一行内容为你自己当前使用的主题。</p></li><li><p>之后再运行git提交指令，将博客源码提交到github上。牢记下方的三行指令，以后都是通过这个指令进行提交。</p><figure class="highlight sh"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git add .</span><br><span class="line">git commit -m <span class="string">&quot;github action update&quot;</span> <span class="comment">#引号内的内容可以自行更改作为提交记录。</span></span><br><span class="line">git push -u origin main</span><br></pre></td></tr></table></figure><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314223639.png"></p></li></ol><div class="note info flat"><p>到这基本上已经完成所有的配置了，每次发布文章修改配置只需要将文件push到github上就可以了。</p></div><h3 id="查看Github-Action部署情况"><a href="#查看Github-Action部署情况" class="headerlink" title="查看Github Action部署情况"></a>查看Github Action部署情况</h3><p>打开GIthub存放源码的私有仓库，找到action。</p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314224216.png"></p><p>若全部打钩，恭喜你，你现在可以享受自动部署的快感了。</p><p><img src="http://unpkg.com/daliyuer-static@1.0.3/img/archives/20250314224301.png"></p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;这篇文章将教大家如何搭建Hexo博客程序，并部署到Github Pages+Vercel并通过Github Action自动化部署编译。&lt;/p&gt;
&lt;p&gt;无需每次重复运行&lt;code&gt;Hexo&lt;/code&gt;三件套命令，随着文章越来越多，编译的时间也随之</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="Hexo博客" scheme="https://blog.3ms.run/tags/Hexo%E5%8D%9A%E5%AE%A2/"/>
    
    <category term="Hexo搭建教程" scheme="https://blog.3ms.run/tags/Hexo%E6%90%AD%E5%BB%BA%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo部署" scheme="https://blog.3ms.run/tags/Hexo%E9%83%A8%E7%BD%B2/"/>
    
    <category term="Hexo自动化部署" scheme="https://blog.3ms.run/tags/Hexo%E8%87%AA%E5%8A%A8%E5%8C%96%E9%83%A8%E7%BD%B2/"/>
    
    <category term="Vercel部署" scheme="https://blog.3ms.run/tags/Vercel%E9%83%A8%E7%BD%B2/"/>
    
    <category term="GitHub Pages" scheme="https://blog.3ms.run/tags/GitHub-Pages/"/>
    
  </entry>
  
  <entry>
    <title>Hexo+Butterfly主题更详细的Front-matter</title>
    <link href="https://blog.3ms.run/archives/d2f6e5e8.html"/>
    <id>https://blog.3ms.run/archives/d2f6e5e8.html</id>
    <published>2025-03-11T16:21:36.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>Front-matter 是文件开头的 YAML 或 JSON 代码块，用于配置写作设置。 以 YAML 格式书写时，Front-matter 以三个破折号结束；以 JSON 格式书写时，Front-matter 以三个分号结束。</p></blockquote><h2 id="使用方式"><a href="#使用方式" class="headerlink" title="使用方式"></a>使用方式</h2><h3 id="YAML"><a href="#YAML" class="headerlink" title="YAML"></a>YAML</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: Hello World</span><br><span class="line">date: 2013/7/13 20:46:25</span><br><span class="line">---</span><br></pre></td></tr></table></figure><h3 id="JSON"><a href="#JSON" class="headerlink" title="JSON"></a>JSON</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&quot;title&quot;: &quot;Hello World&quot;,</span><br><span class="line">&quot;date&quot;: &quot;2013/7/13 20:46:25&quot;</span><br><span class="line">;;;</span><br></pre></td></tr></table></figure><h2 id="文章的-Front-matter"><a href="#文章的-Front-matter" class="headerlink" title="文章的 Front-matter"></a>文章的 Front-matter</h2><table><thead><tr><th>写法</th><th>解释</th></tr></thead><tbody><tr><td>title</td><td>【必需】文章标题 文章的文件名</td></tr><tr><td>date</td><td>【必需】文章创建日期</td></tr><tr><td>updated</td><td>【可选】文章更新日期</td></tr><tr><td>tags</td><td>【可选】文章标签</td></tr><tr><td>categories</td><td>【可选】文章分类</td></tr><tr><td>sticky</td><td>【可选】文章置顶，sticky: 1属性来把这篇文章置顶。数值越大，置顶的优先级越大。</td></tr><tr><td>keywords</td><td>【可选】文章关键字</td></tr><tr><td>description</td><td>【可选】文章描述</td></tr><tr><td>top_img</td><td>【可选】文章顶部图片</td></tr><tr><td>cover</td><td>【可选】文章缩略图(如果没有设置 top_img,文章页顶部将显示缩略图，可设为 false&#x2F;图片地址&#x2F;留空)</td></tr><tr><td>comments</td><td>【可选】显示文章评论模块(默认 true)</td></tr><tr><td>toc</td><td>【可选】显示文章 TOC(默认为设置中 toc 的 enable 配置)</td></tr><tr><td>toc_number</td><td>【可选】显示 toc_number(默认为设置中 toc 的 number 配置)</td></tr><tr><td>toc_style_simple</td><td>【可选】显示 toc 简洁模式</td></tr><tr><td>copyright</td><td>【可选】显示文章版权模块(默认为设置中 post_copyright 的 enable 配置)</td></tr><tr><td>copyright_author</td><td>【可选】文章版权模块的<code>文章作者</code></td></tr><tr><td>copyright_author_href</td><td>【可选】文章版权模块的<code>文章作者</code>链接</td></tr><tr><td>copyright_url</td><td>【可选】文章版权模块的<code>文章连结</code>链接</td></tr><tr><td>copyright_info</td><td>【可选】文章版权模块的<code>版权声明</code>文字</td></tr><tr><td>mathjax</td><td>【可选】显示 mathjax(当设置 mathjax 的 per_page: false 时，才需要配置，默认 false )</td></tr><tr><td>katex</td><td>【可选】显示 katex (当设置 katex 的 per_page: false 时，才需要配置，默认 false )</td></tr><tr><td>aplayer</td><td>【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的<code>音乐</code> 配置</td></tr><tr><td>highlight_shrink</td><td>【可选】配置代码框是否展开(true&#x2F;false)(默认为设置中 highlight_shrink 的配置)</td></tr><tr><td>aside</td><td>【可选】显示侧边栏 (默认 true)</td></tr><tr><td>abcjs</td><td>【可选】加载 abcjs (当设置 abcjs 的 per_page: false 时，才需要配置，默认 false )</td></tr><tr><td>noticeOutdate</td><td>【可选】文章过期提醒 (默认为设置中 noticeOutdate 的 enable 配置)</td></tr></tbody></table><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: Hello World</span><br><span class="line">date: 2013/7/13 20:46:25</span><br><span class="line">---</span><br></pre></td></tr></table></figure><h2 id="页面的-Front-matter"><a href="#页面的-Front-matter" class="headerlink" title="页面的 Front-matter"></a>页面的 Front-matter</h2><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>title</td><td>【必需】页面标题</td></tr><tr><td>date</td><td>【必需】页面创建日期</td></tr><tr><td>type</td><td>【必需】标签、分类和友情链接三个页面需要配置</td></tr><tr><td>updated</td><td>【可选】页面更新日期</td></tr><tr><td>description</td><td>【可选】页面描述</td></tr><tr><td>keywords</td><td>【可选】页面关键字</td></tr><tr><td>comments</td><td>【可选】显示页面评论模块 (默认 true)</td></tr><tr><td>top_img</td><td>【可选】页面顶部图片</td></tr><tr><td>mathjax</td><td>【可选】显示 mathjax (当设置 mathjax 的 per_page: false 时，才需要配置，默认 false)</td></tr><tr><td>katex</td><td>【可选】显示 katex (当设置 katex 的 per_page: false 时，才需要配置，默认 false)</td></tr><tr><td>aside</td><td>【可选】显示侧边栏 (默认 true)</td></tr><tr><td>aplayer</td><td>【可选】在需要的页面加载 aplayer 的 js 和 css,请参考文章下面的<code>音乐</code> 配置</td></tr><tr><td>highlight_shrink</td><td>【可选】配置代码框是否展开 (true&#x2F;false) (默认为设置中 highlight_shrink 的配置)</td></tr><tr><td>random</td><td>【可选】配置友情链接是否随机排序（默认为 false）</td></tr><tr><td>limit</td><td>【可选】配置説説显示数量</td></tr><tr><td>limit.type</td><td>【可选】配置説説显示数量的类型 （date 或者 num）</td></tr><tr><td>limit.value</td><td>【可选】配置説説显示数量的值</td></tr></tbody></table><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">---</span><br><span class="line">title: 标签</span><br><span class="line">date: 2018-01-05 00:00:00</span><br><span class="line">type: &#x27;tags&#x27;</span><br><span class="line">---</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;Front-matter 是文件开头的 YAML 或 JSON 代码块，用于配置写作设置。 以 YAML 格式书写时，Front-matter 以三个破折号结束；以 JSON 格式书写时，Front-matter 以三个分号结束。&lt;/p&gt;
&lt;/bl</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="Butterfly" scheme="https://blog.3ms.run/tags/Butterfly/"/>
    
    <category term="教程" scheme="https://blog.3ms.run/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo Blog" scheme="https://blog.3ms.run/tags/Hexo-Blog/"/>
    
    <category term="主题" scheme="https://blog.3ms.run/tags/%E4%B8%BB%E9%A2%98/"/>
    
    <category term="Butterfly主题" scheme="https://blog.3ms.run/tags/Butterfly%E4%B8%BB%E9%A2%98/"/>
    
  </entry>
  
  <entry>
    <title>Hexo Butterfly 主题标签外挂</title>
    <link href="https://blog.3ms.run/archives/hexo-Butterfly-bqwg.html"/>
    <id>https://blog.3ms.run/archives/hexo-Butterfly-bqwg.html</id>
    <published>2025-03-11T16:01:30.000Z</published>
    <updated>2026-02-25T09:16:38.516Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>标签外挂是 Hexo 独有的功能，并不是标准的 Markdown 格式。</p><p>以下的写法，只适用于 Butterfly 主题，用在其它主题上不会有效果，甚至可能会报错。使用前请留意</p></blockquote><p><code>标签外挂虽然能为主题带来一些额外的功能和 UI 方面的强化，但是，标签外挂也有明显的限制，使用时请留意。</code></p><h2 id="Note-提示框-Bootstrap-Callout"><a href="#Note-提示框-Bootstrap-Callout" class="headerlink" title="Note 提示框(Bootstrap Callout)"></a>Note 提示框(Bootstrap Callout)</h2><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">通用设置</button><button type="button" class="tab">用法一</button><button type="button" class="tab">用法二（自定义icon图标）</button></div><div class="tab-contents"><div class="tab-item-content active"><p>主题配置文件：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Note - Bootstrap 提示框</span></span><br><span class="line"><span class="attr">note:</span></span><br><span class="line">  <span class="comment"># Note 标签样式值:</span></span><br><span class="line">  <span class="comment">#  - simple    bs-callout 旧警告样式。默认。</span></span><br><span class="line">  <span class="comment">#  - modern    bs-callout 新 (v2-v3) 警告样式。</span></span><br><span class="line">  <span class="comment">#  - flat      扁平提示框样式，带背景，如 Mozilla 或 StackOverflow。</span></span><br><span class="line">  <span class="comment">#  - disabled  禁用所有 Note 标签的 CSS 样式。</span></span><br><span class="line">  <span class="attr">style:</span> <span class="string">flat</span></span><br><span class="line">  <span class="comment"># 是否显示图标</span></span><br><span class="line">  <span class="attr">icons:</span> <span class="literal">true</span></span><br><span class="line">  <span class="comment"># 边框半径</span></span><br><span class="line">  <span class="attr">border_radius:</span> <span class="number">3</span></span><br><span class="line">  <span class="comment"># 背景颜色偏移百分比 (modern: -12 | 12; flat: -18 | 6)。</span></span><br><span class="line">  <span class="comment"># 也应用于标签变量。此选项可与禁用的 Note 标签一起使用。</span></span><br><span class="line">  <span class="attr">light_bg_offset:</span> <span class="number">0</span></span><br></pre></td></tr></table></figure><p><code>icons</code> 和 <code>light_bg_offset</code> 只对方法一生效</p><p>Note 标签外挂有两种用法</p></div><div class="tab-item-content"><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note [class] [no-icon] [style] %&#125;</span><br><span class="line">内容 (support inline tags too.io).</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>名称</th><th align="left">用法</th></tr></thead><tbody><tr><td>class</td><td align="left">【可选】标识，不同的标识有不同的配色<br/>（ default &#x2F; primary &#x2F; success &#x2F; info &#x2F; warning &#x2F; danger ）</td></tr><tr><td>no-icon</td><td align="left">【可选】不显示 icon</td></tr><tr><td>style</td><td align="left">【可选】可以覆盖配置中的 style<br/>（simple&#x2F;modern&#x2F;flat&#x2F;disabled）</td></tr></tbody></table><div class="note info flat"><p><strong>style为：simple</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note simple %&#125;</span><br><span class="line">默认 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note simple"><p>默认 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note default simple %&#125;</span><br><span class="line">default 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note default simple"><p>default 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note primary simple %&#125;</span><br><span class="line">primary 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note primary simple"><p>primary 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note info simple %&#125;</span><br><span class="line">info 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note info simple"><p>info 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note warning simple %&#125;</span><br><span class="line">warning 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note warning simple"><p>warning 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note danger simple %&#125;</span><br><span class="line">danger 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note danger simple"><p>danger 提示块标签</p></div><hr><div class="note info flat"><p><strong>style为：modern</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note modern %&#125;</span><br><span class="line">默认 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note modern"><p>默认 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note default modern %&#125;</span><br><span class="line">default 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note default modern"><p>default 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note primary modern %&#125;</span><br><span class="line">primary 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note primary modern"><p>primary 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note success modern %&#125;</span><br><span class="line">success 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note success modern"><p>success 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note info modern %&#125;</span><br><span class="line">info 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note info modern"><p>info 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note warning modern %&#125;</span><br><span class="line">warning 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note warning modern"><p>warning 提示块标签</p></div><hr><div class="note info flat"><p><strong>style为：flat</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note flat %&#125;</span><br><span class="line">默认 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note flat"><p>默认 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note default flat %&#125;</span><br><span class="line">default 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note default flat"><p>default 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note primary flat %&#125;</span><br><span class="line">primary 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note primary flat"><p>primary 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note success flat %&#125;</span><br><span class="line">success 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note success flat"><p>success 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note info flat %&#125;</span><br><span class="line">info 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note info flat"><p>info 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note warning flat %&#125;</span><br><span class="line">warning 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note warning flat"><p>warning 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note danger flat %&#125;</span><br><span class="line">danger 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note danger flat"><p>danger 提示块标签</p></div><hr><div class="note info flat"><p><strong>style为：disabled</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note disabled %&#125;</span><br><span class="line">默认 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note disabled"><p>默认 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note default disabled %&#125;</span><br><span class="line">default 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note default disabled"><p>default 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note primary disabled %&#125;</span><br><span class="line">primary 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note primary disabled"><p>primary 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note success disabled %&#125;</span><br><span class="line">success 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note success disabled"><p>success 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note info disabled %&#125;</span><br><span class="line">info 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note info disabled"><p>info 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note warning disabled %&#125;</span><br><span class="line">warning 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note warning disabled"><p>warning 提示块标签</p></div><hr><div class="note info flat"><p><strong>style为：no-icon</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note no-icon %&#125;</span><br><span class="line">默认 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note no-icon flat"><p>默认 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note default no-icon %&#125;</span><br><span class="line">default 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note default no-icon flat"><p>default 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note primary no-icon %&#125;</span><br><span class="line">primary 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note primary no-icon flat"><p>primary 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note success no-icon %&#125;</span><br><span class="line">success 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note success no-icon flat"><p>success 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note info no-icon %&#125;</span><br><span class="line">info 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note info no-icon flat"><p>info 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note warning no-icon %&#125;</span><br><span class="line">warning 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note warning no-icon flat"><p>warning 提示块标签</p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note danger no-icon %&#125;</span><br><span class="line">danger 提示块标签</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><div class="note danger no-icon flat"><p>danger 提示块标签</p></div></div><div class="tab-item-content"><p><code>仅支持3.2.0以上版本支持</code></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note [color] [icon] [style] %&#125;</span><br><span class="line">Any content (support inline tags too.io).</span><br><span class="line">&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>名称</th><th>用法</th></tr></thead><tbody><tr><td>color</td><td>【可选】顔色<br/>(default &#x2F; blue &#x2F; pink &#x2F; red &#x2F; purple &#x2F; orange &#x2F; green)</td></tr><tr><td>icon</td><td>【可选】可配置自定义 icon (只支持 fontawesome 图标, 也可以配置 no-icon )</td></tr><tr><td>style</td><td>【可选】可以覆盖配置中的 style<br/>（simple&#x2F;modern&#x2F;flat&#x2F;disabled）</td></tr></tbody></table><hr><div class="note primary flat"><p><strong>style为：simple</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note &#x27;fab fa-cc-visa&#x27; simple %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; simple %&#125;</span><br><span class="line">2021 年快到了....</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; simple %&#125;</span><br><span class="line">小心开车 安全至上</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;fas fa-fan&#x27; simple%&#125;</span><br><span class="line">这是三片呢？还是四片？</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; simple %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; simple %&#125;</span><br><span class="line">剪刀石头布</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; simple %&#125;</span><br><span class="line">前端最讨厌的浏览器</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="note icon-padding simple"><i class="note-icon fab fa-cc-visa"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue icon-padding simple"><i class="note-icon fas fa-bullhorn"></i><p>2021 年快到了….</p></div><div class="note pink icon-padding simple"><i class="note-icon fas fa-car-crash"></i><p>小心开车 安全至上</p></div><div class="note red icon-padding simple"><i class="note-icon fas fa-fan"></i><p>这是三片呢？还是四片？</p></div><div class="note orange icon-padding simple"><i class="note-icon fas fa-battery-half"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple icon-padding simple"><i class="note-icon far fa-hand-scissors"></i><p>剪刀石头布</p></div><div class="note green icon-padding simple"><i class="note-icon fab fa-internet-explorer"></i><p>前端最讨厌的浏览器</p></div><hr><div class="note primary flat"><p><strong>style为：modern</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note &#x27;fab fa-cc-visa&#x27; modern %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; modern %&#125;</span><br><span class="line">2021 年快到了....</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; modern %&#125;</span><br><span class="line">小心开车 安全至上</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;fas fa-fan&#x27; modern%&#125;</span><br><span class="line">这是三片呢？还是四片？</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; modern %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; modern %&#125;</span><br><span class="line">剪刀石头布</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; modern %&#125;</span><br><span class="line">前端最讨厌的浏览器</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="note icon-padding modern"><i class="note-icon fab fa-cc-visa"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue icon-padding modern"><i class="note-icon fas fa-bullhorn"></i><p>2021 年快到了….</p></div><div class="note pink icon-padding modern"><i class="note-icon fas fa-car-crash"></i><p>小心开车 安全至上</p></div><div class="note red icon-padding modern"><i class="note-icon fas fa-fan"></i><p>这是三片呢？还是四片？</p></div><div class="note orange icon-padding modern"><i class="note-icon fas fa-battery-half"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple icon-padding modern"><i class="note-icon far fa-hand-scissors"></i><p>剪刀石头布</p></div><div class="note green icon-padding modern"><i class="note-icon fab fa-internet-explorer"></i><p>前端最讨厌的浏览器</p></div><hr><div class="note primary flat"><p><strong>style为：flat</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note &#x27;fab fa-cc-visa&#x27; flat %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; flat %&#125;</span><br><span class="line">2021 年快到了....</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; flat %&#125;</span><br><span class="line">小心开车 安全至上</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;fas fa-fan&#x27; flat%&#125;</span><br><span class="line">这是三片呢？还是四片？</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; flat %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; flat %&#125;</span><br><span class="line">剪刀石头布</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; flat %&#125;</span><br><span class="line">前端最讨厌的浏览器</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="note icon-padding flat"><i class="note-icon fab fa-cc-visa"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue icon-padding flat"><i class="note-icon fas fa-bullhorn"></i><p>2021 年快到了….</p></div><div class="note pink icon-padding flat"><i class="note-icon fas fa-car-crash"></i><p>小心开车 安全至上</p></div><div class="note red icon-padding flat"><i class="note-icon fas fa-fan"></i><p>这是三片呢？还是四片？</p></div><div class="note orange icon-padding flat"><i class="note-icon fas fa-battery-half"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple icon-padding flat"><i class="note-icon far fa-hand-scissors"></i><p>剪刀石头布</p></div><div class="note green icon-padding flat"><i class="note-icon fab fa-internet-explorer"></i><p>前端最讨厌的浏览器</p></div><hr><div class="note primary flat"><p><strong>style为：disabled</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note &#x27;fab fa-cc-visa&#x27; disabled %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; disabled %&#125;</span><br><span class="line">2021 年快到了....</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; disabled %&#125;</span><br><span class="line">小心开车 安全至上</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;fas fa-fan&#x27; disabled %&#125;</span><br><span class="line">这是三片呢？还是四片？</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; disabled %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; disabled %&#125;</span><br><span class="line">剪刀石头布</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; disabled %&#125;</span><br><span class="line">前端最讨厌的浏览器</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="note icon-padding disabled"><i class="note-icon fab fa-cc-visa"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue icon-padding disabled"><i class="note-icon fas fa-bullhorn"></i><p>2021 年快到了….</p></div><div class="note pink icon-padding disabled"><i class="note-icon fas fa-car-crash"></i><p>小心开车 安全至上</p></div><div class="note red icon-padding disabled"><i class="note-icon fas fa-fan"></i><p>这是三片呢？还是四片？</p></div><div class="note orange icon-padding disabled"><i class="note-icon fas fa-battery-half"></i><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple icon-padding disabled"><i class="note-icon far fa-hand-scissors"></i><p>剪刀石头布</p></div><div class="note green icon-padding disabled"><i class="note-icon fab fa-internet-explorer"></i><p>前端最讨厌的浏览器</p></div><hr><div class="note primary flat"><p><strong>style为：no-icon</strong></p></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% note no-icon %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue no-icon %&#125;</span><br><span class="line">2021 年快到了....</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink no-icon %&#125;</span><br><span class="line">小心开车 安全至上</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red no-icon %&#125;</span><br><span class="line">这是三片呢？还是四片？</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange no-icon %&#125;</span><br><span class="line">你是刷 Visa 还是 UnionPay</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple no-icon %&#125;</span><br><span class="line">剪刀石头布</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green no-icon %&#125;</span><br><span class="line">前端最讨厌的浏览器</span><br><span class="line">&#123;% endnote %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="note no-icon flat"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue no-icon flat"><p>2021 年快到了….</p></div><div class="note pink no-icon flat"><p>小心开车 安全至上</p></div><div class="note red no-icon flat"><p>这是三片呢？还是四片？</p></div><div class="note orange no-icon flat"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple no-icon flat"><p>剪刀石头布</p></div><div class="note green no-icon flat"><p>前端最讨厌的浏览器</p></div></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h2 id="Gallery-相册图库"><a href="#Gallery-相册图库" class="headerlink" title="Gallery 相册图库"></a>Gallery 相册图库</h2><p>一个图库集合，写法：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;gallery-group-main&quot;</span>&gt;</span></span></span><br><span class="line">&#123;% galleryGroup name description link img-url %&#125;</span><br><span class="line">&#123;% galleryGroup name description link img-url %&#125;</span><br><span class="line">&#123;% galleryGroup name description link img-url %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>name</td><td>图库名字</td></tr><tr><td>description</td><td>图库描述</td></tr><tr><td>link</td><td>连接到对应相册的地址</td></tr><tr><td>img-url</td><td>图库封面的地址</td></tr></tbody></table><h3 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;gallery-group-main&quot;</span>&gt;</span></span></span><br><span class="line">&#123;% galleryGroup &#x27;壁纸&#x27; &#x27;收藏的一些壁纸&#x27; &#x27;/Gallery/wallpaper&#x27; https://i.loli.net/2019/11/10/T7Mu8Aod3egmC4Q.png %&#125;</span><br><span class="line">&#123;% galleryGroup &#x27;漫威&#x27; &#x27;关于漫威的图片&#x27; &#x27;/Gallery/marvel&#x27; https://i.loli.net/2019/12/25/8t97aVlp4hgyBGu.jpg %&#125;</span><br><span class="line">&#123;% galleryGroup &#x27;OH MY GIRL&#x27; &#x27;关于OH MY GIRL的图片&#x27; &#x27;/Gallery/ohmygirl&#x27; https://i.loli.net/2019/12/25/hOqbQ3BIwa6KWpo.jpg %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="gallery-group-main"><figure class="gallery-group">    <img class="gallery-group-img no-lightbox" src='https://i.loli.net/2019/11/10/T7Mu8Aod3egmC4Q.png' alt="Group Image Gallery">    <figcaption>      <div class="gallery-group-name">壁纸</div>      <p>收藏的一些壁纸</p>      <a href='/Gallery/wallpaper'></a>    </figcaption>  </figure><figure class="gallery-group">    <img class="gallery-group-img no-lightbox" src='https://i.loli.net/2019/12/25/8t97aVlp4hgyBGu.jpg' alt="Group Image Gallery">    <figcaption>      <div class="gallery-group-name">漫威</div>      <p>关于漫威的图片</p>      <a href='/Gallery/marvel'></a>    </figcaption>  </figure><figure class="gallery-group">    <img class="gallery-group-img no-lightbox" src='https://i.loli.net/2019/12/25/hOqbQ3BIwa6KWpo.jpg' alt="Group Image Gallery">    <figcaption>      <div class="gallery-group-name">OH MY GIRL</div>      <p>关于OH MY GIRL的图片</p>      <a href='/Gallery/ohmygirl'></a>    </figcaption>  </figure></div><h2 id="Gallery-相册"><a href="#Gallery-相册" class="headerlink" title="Gallery 相册"></a>Gallery 相册</h2><p>区别于旧版的 Gallery 相册,新的 Gallery 相册会自动根据图片长度进行排版，书写也更加方便，与 markdown 格式一样。可根据需要插入到相应的 md。</p><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">本地</button><button type="button" class="tab">远程拉取</button></div><div class="tab-contents"><div class="tab-item-content active"><p>写法:</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% gallery [button] %&#125;</span><br><span class="line">markdown 图片格式</span><br><span class="line">&#123;% endgallery %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>button</td><td>【可选】点击按钮加载更多图片，填写 true&#x2F;false。默认为 false。</td></tr></tbody></table><h3 id="示例"><a href="#示例" class="headerlink" title="示例"></a>示例</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% gallery %&#125;</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/Fze9jchtnyJXMHN.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/ryLVePaqkYm4TEK.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/gEy5Zc1Ai6VuO4N.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/d6QHbytlSYO4FBG.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/6nepIJ1xTgufatZ.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/E7Jvr4eIPwUNmzq.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/mh19anwBSWIkGlH.jpg</span>)</span><br><span class="line">![](<span class="link">https://i.loli.net/2019/12/25/2tu9JC8ewpBFagv.jpg</span>)</span><br><span class="line">&#123;% endgallery %&#125;</span><br></pre></td></tr></table></figure><div class="gallery-container" data-type="data" data-button="" data-limit="10" data-first="10">    <div class="gallery-items">[{"url":"https://i.loli.net/2019/12/25/Fze9jchtnyJXMHN.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/ryLVePaqkYm4TEK.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/gEy5Zc1Ai6VuO4N.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/d6QHbytlSYO4FBG.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/6nepIJ1xTgufatZ.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/E7Jvr4eIPwUNmzq.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/mh19anwBSWIkGlH.jpg","alt":"","title":""},{"url":"https://i.loli.net/2019/12/25/2tu9JC8ewpBFagv.jpg","alt":"","title":""}]</div>  </div></div><div class="tab-item-content"><p>写法：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">&#123;% gallery url,[link],[button] %&#125;</span><br><span class="line">&#123;% endgallery %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>url</td><td>【必须】 识别词</td></tr><tr><td>link</td><td>【必须】远程的 json 链接</td></tr><tr><td>button</td><td>【可选】点击按钮加载更多图片，填写 true&#x2F;false。默认为 false。</td></tr></tbody></table><h3 id="远程链接-Json-的例子："><a href="#远程链接-Json-的例子：" class="headerlink" title="远程链接 Json 的例子："></a>远程链接 Json 的例子：</h3><p>有三个参数，<code>url</code>是必须<strong>存在</strong>的，<code>alt</code> 和 <code>title</code> 可有可无。</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">[</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/IMG_0556.jpg&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;alt&quot;</span><span class="punctuation">:</span> <span class="string">&quot;IMG_0556.jpg&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;title&quot;</span><span class="punctuation">:</span> <span class="string">&quot;这是title&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/IMG_0472.jpg&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;alt&quot;</span><span class="punctuation">:</span> <span class="string">&quot;IMG_0472.jpg&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/IMG_0453.jpg&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;alt&quot;</span><span class="punctuation">:</span> <span class="string">&quot;&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">  <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;url&quot;</span><span class="punctuation">:</span> <span class="string">&quot;https://cdn.jsdelivr.net/gh/jerryc127/CDN/img/IMG_0931.jpg&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;alt&quot;</span><span class="punctuation">:</span> <span class="string">&quot;&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">]</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="示例："><a href="#示例：" class="headerlink" title="示例："></a>示例：</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">&#123;% gallery url,https://xxxx.com/sss.json %&#125;</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% gallery url,https://xxxx.com/sss.json,true,220,10 %&#125;</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% gallery url,https://xxxx.com/sss.json,true,,10 %&#125;</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h2 id="Tag-hide标签隐藏"><a href="#Tag-hide标签隐藏" class="headerlink" title="Tag-hide标签隐藏"></a>Tag-hide标签隐藏</h2><div class="note warning simple"><p>2.2.0 以上提供</p><p>请注意，tag-hide 内的标签外挂 content 内都不建议有 h1 - h6 等标题。因为 Toc 会把隐藏内容标题也显示出来，而且当滚动屏幕时，如果隐藏内容没有显示出来，会导致 Toc 的滚动出现异常。</p></div><p>如果你想把一些文字、内容隐藏起来，并提供按钮让用户点击显示。可以使用这个标签外挂。</p><h3 id="inline"><a href="#inline" class="headerlink" title="inline"></a>inline</h3><details class="toggle" ><summary class="toggle-button" style="">inline</summary><div class="toggle-content"><p><code>inline</code> 在文本里面添加按钮隐藏内容，只限文字</p><p>( content 不能包含英文逗号，可用<code>‚</code>)</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% hideInline content,display,bg,color %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>content</td><td>文本内容</td></tr><tr><td>display</td><td>【可选】按钮显示的文字</td></tr><tr><td>bg</td><td>【可选】按钮的背景颜色</td></tr><tr><td>color</td><td>【可选】按钮文字的颜色</td></tr></tbody></table><p><strong>示例</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">哪个英文字母最酷？ &#123;% hideInline 因为西装裤(C装酷),查看答案,#FF7242,#fff %&#125;</span><br><span class="line"></span><br><span class="line">门里站着一个人? &#123;% hideInline 闪 %&#125;</span><br></pre></td></tr></table></figure><p>哪个英文字母最酷？ <span class="hide-inline"><button type="button" class="hide-button" style="background-color: #FF7242;color: #fff">查看答案</button><span class="hide-content">因为西装裤(C装酷)</span></span></p><p>门里站着一个人? <span class="hide-inline"><button type="button" class="hide-button" style="">Click</button><span class="hide-content">闪</span></span></p></div></details><h3 id="block"><a href="#block" class="headerlink" title="block"></a>block</h3><details class="toggle" ><summary class="toggle-button" style="">Block</summary><div class="toggle-content"><p><code>block</code>独立的 block 隐藏内容，可以隐藏很多内容，包括图片，代码块等等</p><p>( display 不能包含英文逗号，可用<code>‚</code>)</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% hideBlock display,bg,color %&#125;</span><br><span class="line">content</span><br><span class="line">&#123;% endhideBlock %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>content</td><td>文本内容</td></tr><tr><td>display</td><td>【可选】按钮显示的文字</td></tr><tr><td>bg</td><td>【可选】按钮的背景颜色</td></tr><tr><td>color</td><td>【可选】按钮文字的颜色</td></tr></tbody></table><p><strong>示例</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">查看答案</span><br><span class="line">&#123;% hideBlock 查看答案 %&#125;</span><br><span class="line">傻子，怎么可能有答案</span><br><span class="line">&#123;% endhideBlock %&#125;</span><br></pre></td></tr></table></figure><p>查看答案</p><div class="hide-block"><button type="button" class="hide-button" style="">查看答案</button><div class="hide-content"><p>傻子，怎么可能有答案</p></div></div></div></details><h3 id="Toggle"><a href="#Toggle" class="headerlink" title="Toggle"></a>Toggle</h3><details class="toggle" ><summary class="toggle-button" style="">Toggle</summary><div class="toggle-content"><p><code>2.3.0 以上支持</code></p><p>如果你需要展示的内容太多，可以把它隐藏在收缩框里，需要时再把它展开。</p><p>( display 不能包含英文逗号，可用<code>‚</code>)</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% hideToggle display,bg,color %&#125;</span><br><span class="line">content</span><br><span class="line">&#123;% endhideToggle %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>display</td><td>显示的文字</td></tr><tr><td>bg</td><td>【可选】背景颜色</td></tr><tr><td>color</td><td>【可选】文字的颜色</td></tr></tbody></table><p><strong>例子</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% hideToggle Butterfly安装方法 %&#125;</span><br><span class="line">在你的博客根目录里</span><br><span class="line"></span><br><span class="line">git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly</span><br><span class="line"></span><br><span class="line">如果想要安装比较新的 dev 分支，可以</span><br><span class="line"></span><br><span class="line">git clone -b dev https://github.com/jerryc127/hexo-theme-butterfly.git themes/Butterfly</span><br><span class="line"></span><br><span class="line">&#123;% endhideToggle %&#125;</span><br></pre></td></tr></table></figure><details class="toggle" ><summary class="toggle-button" style="">Butterfly安装方法</summary><div class="toggle-content"><p>在你的博客根目录里</p><p>git clone -b master <a href="https://github.com/jerryc127/hexo-theme-butterfly.git">https://github.com/jerryc127/hexo-theme-butterfly.git</a> themes&#x2F;Butterfly</p><p>如果想要安装比较新的 dev 分支，可以</p><p>git clone -b dev <a href="https://github.com/jerryc127/hexo-theme-butterfly.git">https://github.com/jerryc127/hexo-theme-butterfly.git</a> themes&#x2F;Butterfly</p></div></details></div></details><h2 id="Mermaid图标绘制"><a href="#Mermaid图标绘制" class="headerlink" title="Mermaid图标绘制"></a>Mermaid图标绘制</h2><p>使用 mermaid 标签可以绘制 Flowchart（流程图）、Sequence diagram（时序图 ）、Class Diagram（类别图）、State Diagram（状态图）、Gantt（甘特图）和 Pie Chart（圆形图），具体可以查看<a href="https://mermaid-js.github.io/mermaid/#/">mermaid 文档</a></p><p><strong>更改主题配置文件</strong>:</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># Mermaid</span></span><br><span class="line"><span class="comment"># https://github.com/mermaid-js/mermaid</span></span><br><span class="line"><span class="attr">mermaid:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">false</span></span><br><span class="line">  <span class="comment"># Write Mermaid diagrams using code blocks</span></span><br><span class="line">  <span class="attr">code_write:</span> <span class="literal">false</span></span><br><span class="line">  <span class="comment"># built-in themes: default / forest / dark / neutral</span></span><br><span class="line">  <span class="attr">theme:</span></span><br><span class="line">    <span class="attr">light:</span> <span class="string">default</span></span><br><span class="line">    <span class="attr">dark:</span> <span class="string">dark</span></span><br></pre></td></tr></table></figure><p><strong>写法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% mermaid %&#125;</span><br><span class="line">内容</span><br><span class="line">&#123;% endmermaid %&#125;</span><br></pre></td></tr></table></figure><p><strong>示例饼图</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&#123;% mermaid %&#125;</span><br><span class="line">pie</span><br><span class="line">title 产品X的关键要素</span><br><span class="line">&quot;钙&quot; : 42.96</span><br><span class="line">&quot;钾&quot; : 50.05</span><br><span class="line">&quot;镁&quot; : 10.01</span><br><span class="line">&quot;铁&quot; : 5</span><br><span class="line">&#123;% endmermaid %&#125;</span><br></pre></td></tr></table></figure><div class="mermaid-wrap"><pre class="mermaid-src" hidden>    pietitle 产品X的关键要素&quot;钙&quot; : 42.96&quot;钾&quot; : 50.05&quot;镁&quot; : 10.01&quot;铁&quot; : 5  </pre></div><p><strong>示例思维导图：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line">&#123;% mermaid %&#125;</span><br><span class="line">mindmap</span><br><span class="line">  root((mindmap))</span><br><span class="line"><span class="code">    Origins</span></span><br><span class="line"><span class="code">      Long history</span></span><br><span class="line"><span class="code">      ::icon(fa fa-book)</span></span><br><span class="line"><span class="code">      Popularisation</span></span><br><span class="line"><span class="code">        British popular psychology author Tony Buzan</span></span><br><span class="line"><span class="code">    Research</span></span><br><span class="line"><span class="code">      On effectiveness&lt;br/&gt;and features</span></span><br><span class="line"><span class="code">      On Automatic creation</span></span><br><span class="line"><span class="code">        Uses</span></span><br><span class="line"><span class="code">            Creative techniques</span></span><br><span class="line"><span class="code">            Strategic planning</span></span><br><span class="line"><span class="code">            Argument mapping</span></span><br><span class="line"><span class="code">    Tools</span></span><br><span class="line"><span class="code">      Pen and paper</span></span><br><span class="line"><span class="code">      Mermaid</span></span><br><span class="line"><span class="code">&#123;% endmermaid %&#125;</span></span><br></pre></td></tr></table></figure><div class="mermaid-wrap"><pre class="mermaid-src" hidden>    mindmap  root((mindmap))    Origins      Long history      ::icon(fa fa-book)      Popularisation        British popular psychology author Tony Buzan    Research      On effectiveness&lt;br&#x2F;&gt;and features      On Automatic creation        Uses            Creative techniques            Strategic planning            Argument mapping    Tools      Pen and paper      Mermaid  </pre></div><h2 id="Tabs栏目"><a href="#Tabs栏目" class="headerlink" title="Tabs栏目"></a>Tabs栏目</h2><p><strong>使用方法：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% tabs Unique name, [index] %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab [Tab caption] [@icon] --&gt;</span><br><span class="line"></span><br><span class="line">Any content (support inline tags too).</span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtabs %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>Unique name</td><td>tabs 区块标签的唯一名称，不包含逗号。将用于每个选项卡的 #id 前缀，并附加其索引号。若名称中有空格，生成 #id 时会将空格替换为短横线。仅对当前文章&#x2F;页面的 URL 必须唯一！</td></tr><tr><td>[index]</td><td>【可选】活动选项卡的索引号。如果未指定，将选择第一个选项卡（1）。如果索引为 -1，则不会选择任何选项卡，类似于折叠内容。可选参数。</td></tr><tr><td>[Tab caption]</td><td>当前选项卡的标题。如果未指定标题，将使用唯一名称和选项卡索引后缀作为选项卡标题。如果未指定标题，但指定了图标，标题将为空。</td></tr><tr><td>[@icon]</td><td>【可选】FontAwesome 图标名称（全名，如 ‘fas fa-font’）。可以有或没有空格；例如 ‘Tab caption @icon’ 与 ‘Tab caption@icon’ 类似。</td></tr></tbody></table><p><strong>示例 1 - 预设选择第一个【默认】</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% tabs test1 %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 1.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 2.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 3.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtabs %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">test1 1</button><button type="button" class="tab">test1 2</button><button type="button" class="tab">test1 3</button></div><div class="tab-contents"><div class="tab-item-content active"><p><strong>This is Tab 1.</strong></p></div><div class="tab-item-content"><p><strong>This is Tab 2.</strong></p></div><div class="tab-item-content"><p><strong>This is Tab 3.</strong></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><p><strong>示例 2 - 预设选择第3个tabs</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% tabs test2, 3 %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 1.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 2.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 3.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtabs %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="tabs"><div class="nav-tabs"><button type="button" class="tab">test2 1</button><button type="button" class="tab">test2 2</button><button type="button" class="tab active">test2 3</button></div><div class="tab-contents"><div class="tab-item-content"><p><strong>This is Tab 1.</strong></p></div><div class="tab-item-content"><p><strong>This is Tab 2.</strong></p></div><div class="tab-item-content active"><p><strong>This is Tab 3.</strong></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><p><strong>示例 3 - 没有预设值</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% tabs test3, -1 %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 1.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 2.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**This is Tab 3.**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtabs %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="tabs"><div class="nav-tabs no-default"><button type="button" class="tab">test3 1</button><button type="button" class="tab">test3 2</button><button type="button" class="tab">test3 3</button></div><div class="tab-contents"><div class="tab-item-content"><p><strong>This is Tab 1.</strong></p></div><div class="tab-item-content"><p><strong>This is Tab 2.</strong></p></div><div class="tab-item-content"><p><strong>This is Tab 3.</strong></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><p><strong>示例 4 - 自定义 Tab 名 + 只有 icon + icon 和 Tab 名</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">&#123;% tabs test4 %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab 第一个Tab --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**tab 名字为第一个 Tab**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab @fab fa-apple-pay --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**只有图标 没有 Tab 名字**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&lt;!-- tab 炸弹@fas fa-bomb --&gt;</span><br><span class="line"></span><br><span class="line"><span class="strong">**名字+icon**</span></span><br><span class="line"></span><br><span class="line">&lt;!-- endtab --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtabs %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">第一个Tab</button><button type="button" class="tab"><i class="fab fa-apple-pay"></i></button><button type="button" class="tab"><i class="fas fa-bomb"></i>炸弹</button></div><div class="tab-contents"><div class="tab-item-content active"><p><strong>tab 名字为第一个 Tab</strong></p></div><div class="tab-item-content"><p><strong>只有图标 没有 Tab 名字</strong></p></div><div class="tab-item-content"><p><strong>名字+icon</strong></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h2 id="Button按钮"><a href="#Button按钮" class="headerlink" title="Button按钮"></a>Button按钮</h2><p><strong>使用方法：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% btn [url],[text],[icon],[color] [style] [layout] [position] [size] %&#125;</span><br></pre></td></tr></table></figure><p><strong>参数：</strong></p><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>url</td><td>【必须】链接地址</td></tr><tr><td>text</td><td>【必须】按钮文字</td></tr><tr><td>icon</td><td>【可选】图标</td></tr><tr><td>color</td><td>【可选】按钮背景顔色（默认 style 时）按钮字体和边框顔色(outline 时) 配置： default&#x2F;blue&#x2F;pink&#x2F;red&#x2F;purple&#x2F;orange&#x2F;green</td></tr><tr><td>style</td><td>【可选】按钮样式 默认实心 配置： outline&#x2F;留空</td></tr><tr><td>layout</td><td>【可选】按钮佈局 默认为 line 配置： block&#x2F;留空</td></tr><tr><td>position</td><td>【可选】按钮位置 前提是设置了 layout 为 block 默认为左边 配置： center&#x2F;right&#x2F;留空</td></tr><tr><td>size</td><td>【可选】按钮大小 配置： larger&#x2F;留空</td></tr></tbody></table><h3 id="示例："><a href="#示例：" class="headerlink" title="示例："></a><strong>示例：</strong></h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">点击按钮进入我的网站 &#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly %&#125;</span><br><span class="line">点击按钮进入我的网站 &#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right %&#125;</span><br><span class="line">点击按钮进入我的网站 &#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,,outline %&#125;</span><br><span class="line">点击按钮进入我的网站 &#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline %&#125;</span><br><span class="line">点击按钮进入我的网站 &#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,larger %&#125;</span><br></pre></td></tr></table></figure><p>点击按钮进入我的网站 <a class="btn-beautify " href="https://blog.3ms.run/" title="Butterfly"><span>Butterfly</span></a><br>点击按钮进入我的网站 <a class="btn-beautify " href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><br>点击按钮进入我的网站 <a class="btn-beautify outline" href="https://blog.3ms.run/" title="Butterfly"><span>Butterfly</span></a><br>点击按钮进入我的网站 <a class="btn-beautify outline" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><br>点击按钮进入我的网站 <a class="btn-beautify larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a></p><h3 id="按钮对齐位置"><a href="#按钮对齐位置" class="headerlink" title="按钮对齐位置"></a>按钮对齐位置</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,block %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,block center larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,block right outline larger %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><a class="btn-beautify block" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify block center larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify block right outline larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><h3 id="自定义按钮颜色"><a href="#自定义按钮颜色" class="headerlink" title="自定义按钮颜色"></a>自定义按钮颜色</h3><h4 id="实心按钮"><a href="#实心按钮" class="headerlink" title="实心按钮"></a>实心按钮</h4><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,blue larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,pink larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,red larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,purple larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,orange larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,green larger %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><a class="btn-beautify larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify blue larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify pink larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify red larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify purple larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify orange larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify green larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><h4 id="空心按钮"><a href="#空心按钮" class="headerlink" title="空心按钮"></a>空心按钮</h4><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;btn-center&quot;</span>&gt;</span></span></span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline blue larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline pink larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline red larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline purple larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline orange larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.3ms.run/&#x27;,Butterfly,far fa-hand-point-right,outline green larger %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span></span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="btn-center"><a class="btn-beautify outline larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify outline blue larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify outline pink larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify outline red larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify outline purple larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify outline orange larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a><a class="btn-beautify outline green larger" href="https://blog.3ms.run/" title="Butterfly"><i class="far fa-hand-point-right"></i><span>Butterfly</span></a></div><h2 id="InlineImg图像以内联元素显示"><a href="#InlineImg图像以内联元素显示" class="headerlink" title="InlineImg图像以内联元素显示"></a>InlineImg图像以内联元素显示</h2><p>Butterfly主题中的图片都是默认以<code>块级元素</code>显示，如果你想以<code>内联元素</code>显示，可以使用这个标签外挂。</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% inlineImg [src] [height] %&#125;</span><br></pre></td></tr></table></figure><p>参数：</p><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>src</td><td>图片链接</td></tr><tr><td>height</td><td>【可选】图片高度限制</td></tr></tbody></table><p><strong>示例</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">你看她长得漂亮不</span><br><span class="line"></span><br><span class="line">![](<span class="link">https://i.loli.net/2021/03/19/2P6ivUGsdaEXSFI.png</span>)</span><br><span class="line"></span><br><span class="line">我觉得很漂亮 &#123;% inlineImg https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png 150px %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>你看她长得漂亮不</p><p><img src="https://i.loli.net/2021/03/19/2P6ivUGsdaEXSFI.png"></p><p>我觉得很漂亮 <img class="inline-img" src="https://i.loli.net/2021/03/19/5M4jUB3ynq7ePgw.png" style="height:150px" /></p><h2 id="Label-高亮所需的文字"><a href="#Label-高亮所需的文字" class="headerlink" title="Label 高亮所需的文字"></a>Label 高亮所需的文字</h2><div class="note default simple"><p>由于 hexo 的渲染限制， 在段落开头使用 label 标签外挂会出现一些问题。例如：连续开头使用 label 标签外挂的段落无法换行</p><p>建议 <strong>不要</strong> 在段落开头使用 label 标签外挂</p></div><p><strong>用法：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% label text color %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>text</td><td>文字</td></tr><tr><td>color</td><td>【可选】背景颜色，默认为 <code>default</code> default&#x2F;blue&#x2F;pink&#x2F;red&#x2F;purple&#x2F;orange&#x2F;green</td></tr></tbody></table><p><strong>示例：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">臣亮言：&#123;% label 先帝 %&#125;创业未半，而&#123;% label 中道崩殂 blue %&#125;。今天下三分，&#123;% label 益州疲敝 pink %&#125;，此诚&#123;% label 危急存亡之秋 red %&#125;也！然侍衞之臣，不懈于内；&#123;% label 忠志之士 purple %&#125;，忘身于外者，盖追先帝之殊遇，欲报之于陛下也。诚宜开张圣听，以光先帝遗德，恢弘志士之气；不宜妄自菲薄，引喻失义，以塞忠谏之路也。</span><br><span class="line">宫中、府中，俱为一体；陟罚臧否，不宜异同。若有&#123;% label 作奸 orange %&#125;、&#123;% label 犯科 green %&#125;，及为忠善者，宜付有司，论其刑赏，以昭陛下平明之治；不宜偏私，使内外异法也。</span><br></pre></td></tr></table></figure><p>臣亮言：<mark class="hl-label default">先帝</mark>创业未半，而<mark class="hl-label blue">中道崩殂</mark>。今天下三分，<mark class="hl-label pink">益州疲敝</mark>，此诚<mark class="hl-label red">危急存亡之秋</mark>也！然侍衞之臣，不懈于内；<mark class="hl-label purple">忠志之士</mark>，忘身于外者，盖追先帝之殊遇，欲报之于陛下也。诚宜开张圣听，以光先帝遗德，恢弘志士之气；不宜妄自菲薄，引喻失义，以塞忠谏之路也。<br>宫中、府中，俱为一体；陟罚臧否，不宜异同。若有<mark class="hl-label orange">作奸</mark>、<mark class="hl-label green">犯科</mark>，及为忠善者，宜付有司，论其刑赏，以昭陛下平明之治；不宜偏私，使内外异法也。</p><h2 id="Timeline-时间线"><a href="#Timeline-时间线" class="headerlink" title="Timeline 时间线"></a>Timeline 时间线</h2><p><strong>使用方法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline title,color %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline title --&gt;</span><br><span class="line"></span><br><span class="line">xxxxx</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line">&lt;!-- timeline title --&gt;</span><br><span class="line"></span><br><span class="line">xxxxx</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>title</td><td>标题&#x2F;时间线</td></tr><tr><td>color</td><td>timeline 颜色 default(留空) &#x2F; blue &#x2F; pink &#x2F; red &#x2F; purple &#x2F; orange &#x2F; green</td></tr></tbody></table><p><strong>示例：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022 %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><div class="timeline "><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022,blue %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="timeline blue"><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022,pink %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="timeline pink"><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022,red %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="timeline red"><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022,purple %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="timeline purple"><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022,orange %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="timeline orange"><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-03</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">&#123;% timeline 2022,green %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- timeline 01-02 --&gt;</span><br><span class="line"></span><br><span class="line">这是测试页面</span><br><span class="line"></span><br><span class="line">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="timeline green"><div class='timeline-item headline'>        <div class='timeline-item-title'>          <div class='item-circle'><p>2022</p></div>        </div>      </div><div class='timeline-item'>        <div class='timeline-item-title'>          <div class='item-circle'><p>01-02</p></div>        </div>        <div class='timeline-item-content'><p>这是测试页面</p></div>      </div></div><h2 id="Flink-在任何界面插入类似友链的效果"><a href="#Flink-在任何界面插入类似友链的效果" class="headerlink" title="Flink 在任何界面插入类似友链的效果"></a>Flink 在任何界面插入类似友链的效果</h2><p>可在任何界面插入类似友情链接列表效果</p><p>内容格式与友情链接界面一样，支持 <code>yml</code> 格式</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% flink %&#125;</span><br><span class="line">xxxxxx</span><br><span class="line">&#123;% endflink %&#125;</span><br></pre></td></tr></table></figure><p><strong>示例</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br></pre></td><td class="code"><pre><span class="line">&#123;% flink %&#125;</span><br><span class="line"><span class="bullet">-</span> class<span class="emphasis">_name: 友情链接</span></span><br><span class="line"><span class="emphasis">  class_</span>desc: 那些人，那些事</span><br><span class="line">  link<span class="emphasis">_list:</span></span><br><span class="line"><span class="emphasis">    - name: JerryC</span></span><br><span class="line"><span class="emphasis">      link: https://blog.3ms.run/</span></span><br><span class="line"><span class="emphasis">      avatar: https://jerryc.me/img/avatar.png</span></span><br><span class="line"><span class="emphasis">      descr: 今日事,今日毕</span></span><br><span class="line"><span class="emphasis">    - name: Hexo</span></span><br><span class="line"><span class="emphasis">      link: https://hexo.io/zh-tw/</span></span><br><span class="line"><span class="emphasis">      avatar: https://d33wubrfki0l68.cloudfront.net/6657ba50e702d84afb32fe846bed54fba1a77add/827ae/logo.svg</span></span><br><span class="line"><span class="emphasis">      descr: 快速、简单且强大的网志框架</span></span><br><span class="line"><span class="emphasis"></span></span><br><span class="line"><span class="emphasis">- class_</span>name: 网站</span><br><span class="line">  class<span class="emphasis">_desc: 值得推荐的网站</span></span><br><span class="line"><span class="emphasis">  link_</span>list: </span><br><span class="line"><span class="bullet">    -</span> name: Youtube</span><br><span class="line"><span class="code">      link: https://www.youtube.com/</span></span><br><span class="line"><span class="code">      avatar: https://i.loli.net/2020/05/14/9ZkGg8v3azHJfM1.png</span></span><br><span class="line"><span class="code">      descr: 视频网站 </span></span><br><span class="line"><span class="code">    - name: Weibo</span></span><br><span class="line"><span class="code">      link: https://www.weibo.com/</span></span><br><span class="line"><span class="code">      avatar: https://i.loli.net/2020/05/14/TLJBum386vcnI1P.png</span></span><br><span class="line"><span class="code">      descr: 中国最大社交分享平台 </span></span><br><span class="line"><span class="code">    - name: Twitter</span></span><br><span class="line"><span class="code">      link: https://twitter.com/</span></span><br><span class="line"><span class="code">      avatar: https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png</span></span><br><span class="line"><span class="code">      descr: 社交分享平台</span></span><br><span class="line"><span class="code">&#123;% endflink %&#125;</span></span><br><span class="line"><span class="code"></span></span><br></pre></td></tr></table></figure><div class="flink"><div class="flink-name">友情链接</div><div class="flink-desc">那些人，那些事</div><div class="flink-list">      <div class="flink-list-item">        <a href="https://blog.3ms.run/" title="三毫秒时光博客" target="_blank">          <div class="flink-item-icon">            <img class="no-lightbox" src="https://blog.3ms.run/img/avatar.png" onerror='this.onerror=null;this.src="/img/loading-xly.gif"' alt="三毫秒时光博客" />          </div>          <div class="flink-item-name">三毫秒时光博客</div>          <div class="flink-item-desc" title="今日事,今日毕">今日事,今日毕</div>        </a>      </div>      <div class="flink-list-item">        <a href="https://hexo.io/zh-tw/" title="Hexo" target="_blank">          <div class="flink-item-icon">            <img class="no-lightbox" src="https://d33wubrfki0l68.cloudfront.net/6657ba50e702d84afb32fe846bed54fba1a77add/827ae/logo.svg" onerror='this.onerror=null;this.src="/img/loading-xly.gif"' alt="Hexo" />          </div>          <div class="flink-item-name">Hexo</div>          <div class="flink-item-desc" title="快速、简单且强大的网志框架">快速、简单且强大的网志框架</div>        </a>      </div></div><div class="flink-name">网站</div><div class="flink-desc">值得推荐的网站</div><div class="flink-list">      <div class="flink-list-item">        <a href="https://www.youtube.com/" title="Youtube" target="_blank">          <div class="flink-item-icon">            <img class="no-lightbox" src="https://i.loli.net/2020/05/14/9ZkGg8v3azHJfM1.png" onerror='this.onerror=null;this.src="/img/loading-xly.gif"' alt="Youtube" />          </div>          <div class="flink-item-name">Youtube</div>          <div class="flink-item-desc" title="视频网站">视频网站</div>        </a>      </div>      <div class="flink-list-item">        <a href="https://www.weibo.com/" title="Weibo" target="_blank">          <div class="flink-item-icon">            <img class="no-lightbox" src="https://i.loli.net/2020/05/14/TLJBum386vcnI1P.png" onerror='this.onerror=null;this.src="/img/loading-xly.gif"' alt="Weibo" />          </div>          <div class="flink-item-name">Weibo</div>          <div class="flink-item-desc" title="中国最大社交分享平台">中国最大社交分享平台</div>        </a>      </div>      <div class="flink-list-item">        <a href="https://twitter.com/" title="Twitter" target="_blank">          <div class="flink-item-icon">            <img class="no-lightbox" src="https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png" onerror='this.onerror=null;this.src="/img/loading-xly.gif"' alt="Twitter" />          </div>          <div class="flink-item-name">Twitter</div>          <div class="flink-item-desc" title="社交分享平台">社交分享平台</div>        </a>      </div></div></div><h2 id="ABCJS-乐谱"><a href="#ABCJS-乐谱" class="headerlink" title="ABCJS 乐谱"></a>ABCJS 乐谱</h2><p><strong>在页面上渲染乐谱</strong></p><p>修改主题配置文件：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># abcjs (乐谱渲染)</span></span><br><span class="line"><span class="section"># See https://github.com/paulrosen/abcjs</span></span><br><span class="line"><span class="section"># ---------------</span></span><br><span class="line">abcjs:</span><br><span class="line">  enable: true</span><br><span class="line">  per<span class="emphasis">_page: true</span></span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>enable</td><td>是否启用 ABCJS</td></tr><tr><td>per_page</td><td>是否每页都加载 ABCJS, 如果设爲 false, 在你使用 ABCJS 时，你需要在使用 ABCJS 的页面 Front-matter 添加 <code>abcjs: true</code></td></tr></tbody></table><p>写法：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">&#123;% score %&#125;</span><br><span class="line">乐谱代码</span><br><span class="line">&#123;% endscore %&#125;</span><br></pre></td></tr></table></figure><p><strong>示例</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">&#123;% score %&#125;</span><br><span class="line">X:1</span><br><span class="line">T:alternate heads</span><br><span class="line">M:C</span><br><span class="line">L:1/8</span><br><span class="line">U:n=!style=normal!</span><br><span class="line">K:C treble style=rhythm</span><br><span class="line">&quot;Am&quot; BBBB B2 B&gt;B | &quot;Dm&quot; B2 B/B/B &quot;C&quot; B4 |&quot;Am&quot; B2 nGnB B2 nGnA | &quot;Dm&quot; nDB/B/ nDB/B/ &quot;C&quot; nCB/B/ nCB/B/ |B8| B0 B0 B0 B0 |]</span><br><span class="line">%%text This translates to:</span><br><span class="line">[<span class="string">M:C</span>][<span class="symbol">K:style=normal</span>]</span><br><span class="line">[<span class="string">A,EAce</span>][<span class="symbol">A,EAce</span>][<span class="string">A,EAce</span>][<span class="symbol">A,EAce</span>] [A,EAce]2 [A,EAce]&gt;[A,EAce] |[DAdf]2 [DAdf]/[DAdf]/[DAdf] [CEGce]4 |[A,EAce]2 GA [A,EAce] GA |D[DAdf]/[DAdf]/ D[DAdf]/[DAdf]/ C [CEGce]/[CEGce]/ C[CEGce]/[CEGce]/ |[CEGce]8 | [CEGce]2 [CEGce]2 [CEGce]2 [CEGce]2 |]</span><br><span class="line">GAB2 !style=harmonic![gb]4|GAB2 [K: style=harmonic]gbgb|</span><br><span class="line">[K: style=x]</span><br><span class="line">C/A,/ C/C/E C/zz2|</span><br><span class="line">w:Rock-y did-nt like that</span><br><span class="line">&#123;% endscore %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><h2 id="Series-系列文章"><a href="#Series-系列文章" class="headerlink" title="Series 系列文章"></a>Series 系列文章</h2><p><strong>在页面上显示系列文章</strong></p><p>修改配置文件：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">series:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">orderBy:</span> <span class="string">&#x27;title&#x27;</span> <span class="comment"># Order by title or date</span></span><br><span class="line">  <span class="attr">order:</span> <span class="number">1</span> <span class="comment"># Sort of order. 1, asc for ascending; -1, desc for descending</span></span><br><span class="line">  <span class="attr">number:</span> <span class="literal">true</span></span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>enable</td><td>是否启用 series</td></tr><tr><td>orderBy</td><td>排序方式，默认为 title, 可选 title &#x2F; date</td></tr><tr><td>order</td><td>排序方式，默认为 1, 可选 1 (升序) &#x2F; -1（降序）</td></tr><tr><td>number</td><td>显示序列号</td></tr></tbody></table><p><strong>写法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">&#123;% series %&#125;</span><br><span class="line">&#123;% series [series name] %&#125;</span><br></pre></td></tr></table></figure><p>在文章的 <code>front-matter</code> 上添加参数 series，并给与一个标识</p><p>使用此标签外挂，会把相同标识的文章以列表的形式展示</p><p>如果不写 series 标识，则默认为你使用此标签外挂所在的文章的 series 标识</p><p><strong>示例：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% series test1 %&#125;</span><br></pre></td></tr></table></figure><ol class="series-items"><li><a href="/archives/12986.html" title="国内外免费公共 DoT/DoH 加密 DNS 服务器地址大全">国内外免费公共 DoT/DoH 加密 DNS 服务器地址大全</a></li></ol><h2 id="Chartjs-图表"><a href="#Chartjs-图表" class="headerlink" title="Chartjs 图表"></a>Chartjs 图表</h2><p>另一种方式添加图表</p><p><strong>修改配置文件：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># chartjs</span></span><br><span class="line"><span class="section"># 参见 https://www.chartjs.org/docs/latest/</span></span><br><span class="line">chartjs:</span><br><span class="line">  enable: false</span><br><span class="line">  # 除非你了解它们的工作原理，否则不要修改。</span><br><span class="line">  # 默认设置仅在未指定 MD 语法时使用。</span><br><span class="line">  # 图表的字体颜色</span><br><span class="line">  fontColor:</span><br><span class="line"><span class="code">    light: &quot;rgba(0, 0, 0, 0.8)&quot;</span></span><br><span class="line"><span class="code">    dark: &quot;rgba(255, 255, 255, 0.8)&quot;</span></span><br><span class="line"><span class="code">  # 图表的边框颜色</span></span><br><span class="line"><span class="code">  borderColor:</span></span><br><span class="line"><span class="code">    light: &quot;rgba(0, 0, 0, 0.1)&quot;</span></span><br><span class="line"><span class="code">    dark: &quot;rgba(255, 255, 255, 0.2)&quot;</span></span><br><span class="line"><span class="code">  # 雷达图和极区图的刻度标签背景颜色</span></span><br><span class="line"><span class="code">  scale_ticks_backdropColor:</span></span><br><span class="line"><span class="code">    light: &quot;transparent&quot;</span></span><br><span class="line"><span class="code">    dark: &quot;transparent&quot;</span></span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>enable</td><td>是否启用 chartjs</td></tr><tr><td>fontColor</td><td>图表的字体颜色</td></tr><tr><td>borderColor</td><td>图表的边框颜色</td></tr><tr><td>scale_ticks_backdropColor</td><td>雷达和极区图表的刻度标签的背景颜色</td></tr></tbody></table><p><strong>写法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">&#123;% chartjs [width, abreast, chartId] %&#125;</span><br><span class="line">&lt;!-- chart --&gt;</span><br><span class="line">&lt;!-- endchart --&gt;</span><br><span class="line">&lt;!-- desc --&gt;</span><br><span class="line">&lt;!-- enddesc --&gt;</span><br><span class="line">&#123;% endchartjs %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th></tr></thead><tbody><tr><td>width</td><td>【可选】图表宽度</td></tr><tr><td>abreast</td><td>【可选】是否并排显示，当你写了 <code>&lt;!-- desc --&gt;</code>, 使用并排模式，图标和描述将并排显示。 abreast 为 true 时，需要配置 width 的值</td></tr><tr><td>chartId</td><td>【可选】图表 ID</td></tr></tbody></table><p><strong>示例：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br></pre></td><td class="code"><pre><span class="line">&#123;% chartjs 70 %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- chart --&gt;</span><br><span class="line">&#123;</span><br><span class="line"><span class="code">    &quot;type&quot;: &quot;line&quot;,</span></span><br><span class="line"><span class="code">    &quot;data&quot;: &#123;</span></span><br><span class="line"><span class="code">        &quot;labels&quot;: [&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;April&quot;, &quot;May&quot;, &quot;June&quot;, &quot;July&quot;],</span></span><br><span class="line"><span class="code">        &quot;datasets&quot;: [&#123;</span></span><br><span class="line"><span class="code">            &quot;label&quot;: &quot;My First dataset&quot;,</span></span><br><span class="line"><span class="code">            &quot;backgroundColor&quot;: &quot;rgb(255, 99, 132)&quot;,</span></span><br><span class="line"><span class="code">            &quot;borderColor&quot;: &quot;rgb(255, 99, 132)&quot;,</span></span><br><span class="line"><span class="code">            &quot;data&quot;: [0, 10, 5, 2, 20, 30, 45]</span></span><br><span class="line"><span class="code">        &#125;]</span></span><br><span class="line"><span class="code">    &#125;,</span></span><br><span class="line"><span class="code">    &quot;options&quot;: &#123;</span></span><br><span class="line"><span class="code">        &quot;responsive&quot;: true,</span></span><br><span class="line"><span class="code">        &quot;title&quot;: &#123;</span></span><br><span class="line"><span class="code">            &quot;display&quot;: true,</span></span><br><span class="line"><span class="code">            &quot;text&quot;: &quot;Chart.js Line Chart&quot;</span></span><br><span class="line"><span class="code">        &#125;</span></span><br><span class="line"><span class="code">    &#125;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code">&lt;!-- endchart --&gt;</span></span><br><span class="line"><span class="code"></span></span><br><span class="line">&#123;% endchartjs %&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><div class="chartjs-container" data-chartjs-id="" data-width="70%">            <pre class="chartjs-src" hidden>{    &quot;type&quot;: &quot;line&quot;,    &quot;data&quot;: {        &quot;labels&quot;: [&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;April&quot;, &quot;May&quot;, &quot;June&quot;, &quot;July&quot;],        &quot;datasets&quot;: [{            &quot;label&quot;: &quot;My First dataset&quot;,            &quot;backgroundColor&quot;: &quot;rgb(255, 99, 132)&quot;,            &quot;borderColor&quot;: &quot;rgb(255, 99, 132)&quot;,            &quot;data&quot;: [0, 10, 5, 2, 20, 30, 45]        }]    },    &quot;options&quot;: {        &quot;responsive&quot;: true,        &quot;title&quot;: {            &quot;display&quot;: true,            &quot;text&quot;: &quot;Chart.js Line Chart&quot;        }    }}</pre>                      </div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br></pre></td><td class="code"><pre><span class="line">&#123;% chartjs %&#125;</span><br><span class="line"></span><br><span class="line">&lt;!-- chart --&gt;</span><br><span class="line">&#123;</span><br><span class="line">  &quot;type&quot;: &quot;radar&quot;,</span><br><span class="line">  &quot;data&quot;: &#123;</span><br><span class="line"><span class="code">    &quot;labels&quot;: [</span></span><br><span class="line"><span class="code">      &quot;Eating&quot;,</span></span><br><span class="line"><span class="code">      &quot;Drinking&quot;,</span></span><br><span class="line"><span class="code">      &quot;Sleeping&quot;,</span></span><br><span class="line"><span class="code">      &quot;Designing&quot;,</span></span><br><span class="line"><span class="code">      &quot;Coding&quot;,</span></span><br><span class="line"><span class="code">      &quot;Cycling&quot;,</span></span><br><span class="line"><span class="code">      &quot;Running&quot;</span></span><br><span class="line"><span class="code">    ],</span></span><br><span class="line"><span class="code">    &quot;datasets&quot;: [</span></span><br><span class="line"><span class="code">      &#123;</span></span><br><span class="line"><span class="code">        &quot;label&quot;: &quot;My First Dataset&quot;,</span></span><br><span class="line"><span class="code">        &quot;data&quot;: [65, 59, 90, 81, 56, 55, 40],</span></span><br><span class="line"><span class="code">        &quot;fill&quot;: true,</span></span><br><span class="line"><span class="code">        &quot;backgroundColor&quot;: &quot;rgba(255, 99, 132, 0.2)&quot;,</span></span><br><span class="line"><span class="code">        &quot;borderColor&quot;: &quot;rgb(255, 99, 132)&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointBackgroundColor&quot;: &quot;rgb(255, 99, 132)&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointBorderColor&quot;: &quot;#fff&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointHoverBackgroundColor&quot;: &quot;#fff&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointHoverBorderColor&quot;: &quot;rgb(255, 99, 132)&quot;</span></span><br><span class="line"><span class="code">      &#125;,</span></span><br><span class="line"><span class="code">      &#123;</span></span><br><span class="line"><span class="code">        &quot;label&quot;: &quot;My Second Dataset&quot;,</span></span><br><span class="line"><span class="code">        &quot;data&quot;: [28, 48, 40, 19, 96, 27, 100],</span></span><br><span class="line"><span class="code">        &quot;fill&quot;: true,</span></span><br><span class="line"><span class="code">        &quot;backgroundColor&quot;: &quot;rgba(54, 162, 235, 0.2)&quot;,</span></span><br><span class="line"><span class="code">        &quot;borderColor&quot;: &quot;rgb(54, 162, 235)&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointBackgroundColor&quot;: &quot;rgb(54, 162, 235)&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointBorderColor&quot;: &quot;#fff&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointHoverBackgroundColor&quot;: &quot;#fff&quot;,</span></span><br><span class="line"><span class="code">        &quot;pointHoverBorderColor&quot;: &quot;rgb(54, 162, 235)&quot;</span></span><br><span class="line"><span class="code">      &#125;</span></span><br><span class="line"><span class="code">    ]</span></span><br><span class="line"><span class="code">  &#125;,</span></span><br><span class="line"><span class="code">  &quot;options&quot;: &#123;</span></span><br><span class="line"><span class="code">    &quot;elements&quot;: &#123;</span></span><br><span class="line"><span class="code">      &quot;line&quot;: &#123;</span></span><br><span class="line"><span class="code">        &quot;borderWidth&quot;: 3</span></span><br><span class="line"><span class="code">      &#125;</span></span><br><span class="line"><span class="code">    &#125;</span></span><br><span class="line"><span class="code">  &#125;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code">&lt;!-- endchart --&gt;</span></span><br><span class="line"><span class="code">&#123;% endchartjs %&#125;</span></span><br><span class="line"><span class="code"></span></span><br></pre></td></tr></table></figure><div class="chartjs-container" data-chartjs-id="" >            <pre class="chartjs-src" hidden>{  &quot;type&quot;: &quot;radar&quot;,  &quot;data&quot;: {    &quot;labels&quot;: [      &quot;Eating&quot;,      &quot;Drinking&quot;,      &quot;Sleeping&quot;,      &quot;Designing&quot;,      &quot;Coding&quot;,      &quot;Cycling&quot;,      &quot;Running&quot;    ],    &quot;datasets&quot;: [      {        &quot;label&quot;: &quot;My First Dataset&quot;,        &quot;data&quot;: [65, 59, 90, 81, 56, 55, 40],        &quot;fill&quot;: true,        &quot;backgroundColor&quot;: &quot;rgba(255, 99, 132, 0.2)&quot;,        &quot;borderColor&quot;: &quot;rgb(255, 99, 132)&quot;,        &quot;pointBackgroundColor&quot;: &quot;rgb(255, 99, 132)&quot;,        &quot;pointBorderColor&quot;: &quot;#fff&quot;,        &quot;pointHoverBackgroundColor&quot;: &quot;#fff&quot;,        &quot;pointHoverBorderColor&quot;: &quot;rgb(255, 99, 132)&quot;      },      {        &quot;label&quot;: &quot;My Second Dataset&quot;,        &quot;data&quot;: [28, 48, 40, 19, 96, 27, 100],        &quot;fill&quot;: true,        &quot;backgroundColor&quot;: &quot;rgba(54, 162, 235, 0.2)&quot;,        &quot;borderColor&quot;: &quot;rgb(54, 162, 235)&quot;,        &quot;pointBackgroundColor&quot;: &quot;rgb(54, 162, 235)&quot;,        &quot;pointBorderColor&quot;: &quot;#fff&quot;,        &quot;pointHoverBackgroundColor&quot;: &quot;#fff&quot;,        &quot;pointHoverBorderColor&quot;: &quot;rgb(54, 162, 235)&quot;      }    ]  },  &quot;options&quot;: {    &quot;elements&quot;: {      &quot;line&quot;: {        &quot;borderWidth&quot;: 3      }    }  }}</pre>                      </div><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br></pre></td><td class="code"><pre><span class="line">&#123;% chartjs 40,true %&#125;</span><br><span class="line">&lt;!-- chart --&gt;</span><br><span class="line">&#123;</span><br><span class="line"><span class="code">    &quot;type&quot;: &quot;pie&quot;,</span></span><br><span class="line"><span class="code">    &quot;data&quot;: &#123;</span></span><br><span class="line"><span class="code">        &quot;labels&quot;: [</span></span><br><span class="line"><span class="code">            &quot;编程&quot;,</span></span><br><span class="line"><span class="code">            &quot;音乐&quot;,</span></span><br><span class="line"><span class="code">            &quot;阅读&quot;,</span></span><br><span class="line"><span class="code">            &quot;游戏&quot;,</span></span><br><span class="line"><span class="code">            &quot;健身&quot;,</span></span><br><span class="line"><span class="code">            &quot;旅游&quot;</span></span><br><span class="line"><span class="code">        ],</span></span><br><span class="line"><span class="code">        &quot;datasets&quot;: [</span></span><br><span class="line"><span class="code">            &#123;</span></span><br><span class="line"><span class="code">                &quot;label&quot;: &quot;喜爱指数&quot;,</span></span><br><span class="line"><span class="code">                &quot;data&quot;: [</span></span><br><span class="line"><span class="code">                    30,</span></span><br><span class="line"><span class="code">                    24,</span></span><br><span class="line"><span class="code">                    19,</span></span><br><span class="line"><span class="code">                    14,</span></span><br><span class="line"><span class="code">                    9,</span></span><br><span class="line"><span class="code">                    4</span></span><br><span class="line"><span class="code">                ],</span></span><br><span class="line"><span class="code">                &quot;backgroundColor&quot;: &#123;</span></span><br><span class="line"><span class="code">                    &quot;dark-mode&quot;: [</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 99, 132, 0.5)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(54, 162, 235, 0.5)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 206, 86, 0.5)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(75, 192, 192, 0.5)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(153, 102, 255, 0.5)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 159, 64, 0.5)&quot;</span></span><br><span class="line"><span class="code">                    ],</span></span><br><span class="line"><span class="code">                    &quot;light-mode&quot;: [</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 99, 132, 0.2)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(54, 162, 235, 0.2)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 206, 86, 0.2)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(75, 192, 192, 0.2)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(153, 102, 255, 0.2)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 159, 64, 0.2)&quot;</span></span><br><span class="line"><span class="code">                    ]</span></span><br><span class="line"><span class="code">                &#125;,</span></span><br><span class="line"><span class="code">                &quot;borderColor&quot;: &#123;</span></span><br><span class="line"><span class="code">                    &quot;dark-mode&quot;: [</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 99, 132, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(54, 162, 235, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 206, 86, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(75, 192, 192, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(153, 102, 255, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 159, 64, 1)&quot;</span></span><br><span class="line"><span class="code">                    ],</span></span><br><span class="line"><span class="code">                    &quot;light-mode&quot;: [</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 99, 132, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(54, 162, 235, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 206, 86, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(75, 192, 192, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(153, 102, 255, 1)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;rgba(255, 159, 64, 1)&quot;</span></span><br><span class="line"><span class="code">                    ]</span></span><br><span class="line"><span class="code">                &#125;</span></span><br><span class="line"><span class="code">            &#125;</span></span><br><span class="line"><span class="code">        ]</span></span><br><span class="line"><span class="code">    &#125;,</span></span><br><span class="line"><span class="code">    &quot;options&quot;: &#123;</span></span><br><span class="line"><span class="code">        &quot;plugins&quot;: &#123;</span></span><br><span class="line"><span class="code">            &quot;legend&quot;: &#123;</span></span><br><span class="line"><span class="code">                &quot;labels&quot;: &#123;</span></span><br><span class="line"><span class="code">                    &quot;color&quot;: &#123;</span></span><br><span class="line"><span class="code">                        &quot;dark-mode&quot;: &quot;rgba(255, 255, 255, 0.8)&quot;,</span></span><br><span class="line"><span class="code">                        &quot;light-mode&quot;: &quot;rgba(0, 0, 0, 0.8)&quot;</span></span><br><span class="line"><span class="code">                    &#125;</span></span><br><span class="line"><span class="code">                &#125;</span></span><br><span class="line"><span class="code">            &#125;</span></span><br><span class="line"><span class="code">        &#125;</span></span><br><span class="line"><span class="code">    &#125;</span></span><br><span class="line"><span class="code">&#125;</span></span><br><span class="line"><span class="code">&lt;!-- endchart --&gt;</span></span><br><span class="line"><span class="code">&lt;!-- desc --&gt;</span></span><br><span class="line"><span class="code">除了**计算机编程**外，我想不出还有其他让我感兴趣的工作。</span></span><br><span class="line"><span class="code">我可以无中生有地创造出**精美的范式**和**结构**，</span></span><br><span class="line"><span class="code">在此过程中也解决了无数的小谜团。</span></span><br><span class="line"><span class="code">&lt;span style=&quot;font-size:0.8em;color: var(--sep-secondtext);&quot;&gt;I can&#x27;t think of any other job other than **computer programming** that interests me.</span></span><br><span class="line"><span class="code">I can create **beautiful paradigms** and **structures** out of nothing,</span></span><br><span class="line"><span class="code">Countless small mysteries are also solved in the process.&lt;/span&gt;</span></span><br><span class="line"><span class="code">&lt;!-- enddesc --&gt;</span></span><br><span class="line"><span class="code">&#123;% endchartjs %&#125;</span></span><br><span class="line"><span class="code"></span></span><br></pre></td></tr></table></figure><div class="chartjs-container chartjs-abreast" data-chartjs-id="" data-width="40%">            <pre class="chartjs-src" hidden>{    &quot;type&quot;: &quot;pie&quot;,    &quot;data&quot;: {        &quot;labels&quot;: [            &quot;编程&quot;,            &quot;音乐&quot;,            &quot;阅读&quot;,            &quot;游戏&quot;,            &quot;健身&quot;,            &quot;旅游&quot;        ],        &quot;datasets&quot;: [            {                &quot;label&quot;: &quot;喜爱指数&quot;,                &quot;data&quot;: [                    30,                    24,                    19,                    14,                    9,                    4                ],                &quot;backgroundColor&quot;: {                    &quot;dark-mode&quot;: [                        &quot;rgba(255, 99, 132, 0.5)&quot;,                        &quot;rgba(54, 162, 235, 0.5)&quot;,                        &quot;rgba(255, 206, 86, 0.5)&quot;,                        &quot;rgba(75, 192, 192, 0.5)&quot;,                        &quot;rgba(153, 102, 255, 0.5)&quot;,                        &quot;rgba(255, 159, 64, 0.5)&quot;                    ],                    &quot;light-mode&quot;: [                        &quot;rgba(255, 99, 132, 0.2)&quot;,                        &quot;rgba(54, 162, 235, 0.2)&quot;,                        &quot;rgba(255, 206, 86, 0.2)&quot;,                        &quot;rgba(75, 192, 192, 0.2)&quot;,                        &quot;rgba(153, 102, 255, 0.2)&quot;,                        &quot;rgba(255, 159, 64, 0.2)&quot;                    ]                },                &quot;borderColor&quot;: {                    &quot;dark-mode&quot;: [                        &quot;rgba(255, 99, 132, 1)&quot;,                        &quot;rgba(54, 162, 235, 1)&quot;,                        &quot;rgba(255, 206, 86, 1)&quot;,                        &quot;rgba(75, 192, 192, 1)&quot;,                        &quot;rgba(153, 102, 255, 1)&quot;,                        &quot;rgba(255, 159, 64, 1)&quot;                    ],                    &quot;light-mode&quot;: [                        &quot;rgba(255, 99, 132, 1)&quot;,                        &quot;rgba(54, 162, 235, 1)&quot;,                        &quot;rgba(255, 206, 86, 1)&quot;,                        &quot;rgba(75, 192, 192, 1)&quot;,                        &quot;rgba(153, 102, 255, 1)&quot;,                        &quot;rgba(255, 159, 64, 1)&quot;                    ]                }            }        ]    },    &quot;options&quot;: {        &quot;plugins&quot;: {            &quot;legend&quot;: {                &quot;labels&quot;: {                    &quot;color&quot;: {                        &quot;dark-mode&quot;: &quot;rgba(255, 255, 255, 0.8)&quot;,                        &quot;light-mode&quot;: &quot;rgba(0, 0, 0, 0.8)&quot;                    }                }            }        }    }}</pre>            <div class="chartjs-desc"><p>除了<strong>计算机编程</strong>外，我想不出还有其他让我感兴趣的工作。<br>我可以无中生有地创造出<strong>精美的范式</strong>和<strong>结构</strong>，<br>在此过程中也解决了无数的小谜团。<br><span style="font-size:0.8em;color: var(--sep-secondtext);">I can’t think of any other job other than <strong>computer programming</strong> that interests me.<br>I can create <strong>beautiful paradigms</strong> and <strong>structures</strong> out of nothing,<br>Countless small mysteries are also solved in the process.</span></p></div>          </div><h2 id="网址卡片外置标签（魔改后）"><a href="#网址卡片外置标签（魔改后）" class="headerlink" title="网址卡片外置标签（魔改后）"></a>网址卡片外置标签（魔改后）</h2><p><strong>使用方法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% link [title],[desc],[url] %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>解释</th><th></th></tr></thead><tbody><tr><td>title</td><td>【必须】链接标题</td><td></td></tr><tr><td>desc</td><td>【必须】描述副标题</td><td></td></tr><tr><td>[url</td><td>【必须】链接地址</td><td></td></tr></tbody></table><p><strong>示例：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% link &#x27;3MS &#x27;s Blog&#x27;,Daliyuer,https://blog.3ms.run%&#125;</span><br></pre></td></tr></table></figure><a class="tag-Link" target="_blank" href="https://blog.3ms.run">    <div class="tag-link-tips">引用站外地址，不保证站点的可用性和安全性</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://api.iowen.cn/favicon/blog.3ms.run.png);"><i class="iconfont icon-link"></i></div>        <div class="tag-link-right">            <div class="tag-link-title">3MS 's Blog</div>            <div class="tag-link-sitename">Daliyuer</div>        </div>        <i class="fa-solid fa-angle-right"></i>    </div>    </a><h2 id="语雀同款链接卡片（魔改后）"><a href="#语雀同款链接卡片（魔改后）" class="headerlink" title="语雀同款链接卡片（魔改后）"></a>语雀同款链接卡片（魔改后）</h2><p><strong>使用方法</strong>：</p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- 使用html是为了高亮代码，不必在意 --&gt;</span><br><span class="line">&lt;!-- 参数如下： --&gt;</span><br><span class="line">&#123;% yqlink 链接,标题,图标,介绍 %&#125;</span><br><span class="line">&lt;!-- 示例如下： --&gt;</span><br><span class="line">&#123;% yqlink https://blog.3ms.run,ZeroLatency,https://blog.3ms.run/favicon.ico,进一寸有进一寸的欢喜。 %&#125;</span><br><span class="line">&lt;!-- 你也可以什么都不填，将会全部使用默认值，如下： --&gt;</span><br><span class="line">&#123;% yqlink %&#125;</span><br><span class="line">&lt;!-- 你也可以省略部分内容，如下： --&gt;</span><br><span class="line">&#123;% yqlink https://blog.3ms.run %&#125;</span><br><span class="line">&lt;!-- 位置在后面的参数不填的话可以直接省略，但是如果中间的不想填必须留空，如下： --&gt;</span><br><span class="line">&#123;% yqlink https://blog.3ms.run,,,进一寸有进一寸的欢喜。 %&#125;</span><br></pre></td></tr></table></figure><table><thead><tr><th>参数</th><th>描述</th><th>默认值</th></tr></thead><tbody><tr><td>链接</td><td>如果连接中包含http则新标签打开，否则本标签页打开</td><td>无</td></tr><tr><td>标题</td><td>网站的标题</td><td>点击直达链接</td></tr><tr><td>图标</td><td>网站favicon<code>链接</code></td><td><svg width="40px" height="40px" t="1670307855063" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19066"><path d="M504.064 516.608m-384.256 0a384.256 384.256 0 1 0 768.512 0 384.256 384.256 0 1 0-768.512 0Z" fill="#009CF5" p-id="19068"></path><path d="M746.112 270.464L472.448 485.12l63.104 63.104L750.08 274.56c2.304-2.688-1.28-6.144-3.968-4.096z" fill="#FF4C3A" p-id="19069"></path><path d="M262.016 762.752l273.664-214.528-63.104-63.104-214.656 273.536c-2.176 2.688 1.28 6.144 4.096 4.096z" fill="#FFFFFF" p-id="19070"></path><path d="M505.216 155.136c-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.56 5.888 5.888 5.888s5.888-2.56 5.888-5.888v-53.504c-0.128-3.2-2.688-5.888-5.888-5.888zM442.368 160.512c-3.2 0.512-5.376 3.584-4.736 6.784l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736zM396.288 234.368c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552l-18.304-50.304c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552l18.304 50.304zM348.928 257.408c1.664 2.816 5.248 3.712 7.936 2.176s3.712-5.248 2.176-7.936l-26.752-46.336c-1.664-2.816-5.248-3.712-7.936-2.176-2.816 1.664-3.712 5.248-2.176 7.936l26.752 46.336zM306.304 288.256c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.432 2.048-2.816 5.76-0.768 8.192l34.432 40.96zM269.696 326.144c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-2.048 2.432-1.792 6.144 0.768 8.192l40.96 34.432zM193.792 342.912l46.336 26.752c2.816 1.664 6.4 0.64 7.936-2.176 1.664-2.816 0.64-6.4-2.176-8.064L199.552 332.8c-2.816-1.664-6.4-0.64-7.936 2.176-1.664 2.688-0.64 6.272 2.176 7.936zM168.32 399.488l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM207.872 457.344l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784zM201.984 509.568H148.48c-3.2 0-5.888 2.56-5.888 5.888 0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888zM205.44 562.176l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.376 6.784 4.736l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784s-3.584-5.248-6.784-4.736zM217.856 613.376l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 3.072 4.48 4.608 7.552 3.456l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456zM238.976 661.504l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.816 5.248 3.712 8.064 2.176l46.336-26.752c2.816-1.664 3.712-5.248 2.176-8.064-1.664-2.816-5.248-3.712-8.064-2.176zM268.16 705.408l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.432 5.76 2.816 8.192 0.768l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-1.92-2.56-5.632-2.816-8.192-0.768zM304.512 743.424l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.304-1.92-6.016-1.664-8.192 0.768zM347.008 774.656l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.664 6.4 0.64 8.064-2.176l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.536-6.4-0.64-8.064 2.176zM394.24 798.08l-18.304 50.304c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.152 6.4-0.512 7.552-3.456l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.528 0.384-7.552 3.456zM440.192 872.32c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.64 3.2 1.536 6.272 4.736 6.784zM502.912 878.08c3.2 0 5.888-2.56 5.888-5.888v-53.504c0-3.2-2.56-5.888-5.888-5.888-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.688 5.888 5.888 5.888zM549.632 815.232l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736-3.2 0.512-5.248 3.584-4.736 6.784zM600.832 802.816l18.304 50.304c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552L611.84 798.72c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552zM649.088 781.696l26.752 46.336c1.664 2.816 5.248 3.712 8.064 2.176 2.816-1.664 3.712-5.248 2.176-8.064l-26.88-46.336c-1.664-2.816-5.248-3.712-8.064-2.176-2.816 1.664-3.712 5.248-2.048 8.064zM692.864 752.384l34.432 40.96c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.56 2.048-2.816 5.76-0.768 8.192zM730.88 716.032l40.96 34.432c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-1.92 2.432-1.664 6.144 0.768 8.192zM762.112 673.664l46.336 26.752c2.816 1.664 6.4 0.64 8.064-2.176 1.664-2.816 0.64-6.4-2.176-7.936L768 663.552c-2.816-1.664-6.4-0.64-8.064 2.176-1.536 2.688-0.64 6.272 2.176 7.936zM785.536 626.432l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM800.256 575.872l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784zM800.256 517.76c0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888h-53.504c-3.328 0-5.888 2.56-5.888 5.888zM802.688 471.04l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784-0.512-3.2-3.584-5.376-6.784-4.736l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.248 6.784 4.736zM790.272 419.84l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 2.944 4.48 4.608 7.552 3.456zM769.152 371.584l46.336-26.752c2.816-1.664 3.712-5.248 2.176-7.936-1.664-2.816-5.248-3.712-8.064-2.176l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.688 5.248 3.712 8.064 2.048zM739.84 327.808l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-2.048-2.432-5.76-2.816-8.192-0.768l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.56 5.76 2.816 8.192 0.768zM703.488 289.664l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.432-2.048-6.144-1.792-8.192 0.768l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768zM661.12 258.56l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.664-6.4-0.64-8.064 2.176l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.536 6.4 0.64 8.064-2.176zM613.888 235.136l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.4 0.512-7.552 3.456L602.88 231.168c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.024 6.4-0.512 7.552-3.584zM556.544 225.152c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.512 3.2 1.536 6.144 4.736 6.784zM273.536 290.432c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96l21.12 21.12zM237.824 333.824c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536s-1.28 6.912 1.536 8.832l24.448 17.152zM183.04 370.176l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 7.04 3.072 8.448zM194.688 423.68l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.152 6.912 4.48 7.808l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808zM183.168 478.72l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.456 2.304 6.656 5.76 6.912l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.384-3.456-2.176-6.528-5.76-6.912zM181.504 535.04l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.456 6.144 6.912 5.76l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.328-6.016-6.912-5.76zM191.36 590.72l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.352 5.376 7.808 4.48l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.328-4.352-5.376-7.808-4.48zM207.232 644.224l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.2 5.248 4.608 8.448 3.072l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.408-3.2-5.248-4.48-8.448-3.072zM233.984 693.888l-24.448 17.152c-2.944 2.048-3.584 6.016-1.536 8.832 2.048 2.944 6.016 3.584 8.832 1.536l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536zM310.912 775.552L293.76 800c-2.048 2.944-1.28 6.912 1.536 8.832 2.944 2.048 6.912 1.28 8.832-1.536l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.816-2.048-6.912-1.408-8.832 1.536zM349.184 840.704c3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.536-3.2 0.128-7.04-3.072-8.448-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.408 3.2-0.128 6.912 3.072 8.448zM407.808 862.72c3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c0.896-3.456-1.152-6.912-4.48-7.808-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.328 1.152 6.912 4.48 7.808zM469.376 874.112c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.584 2.304 6.656 5.76 6.912zM522.496 839.168l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.456-6.144-6.912-5.76-3.456 0.256-6.016 3.328-5.76 6.912zM578.176 830.976l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928c-0.896-3.456-4.352-5.376-7.808-4.48-3.328 0.896-5.376 4.48-4.48 7.808zM631.68 813.312l12.672 27.136c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.248 3.072-8.448l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.48 5.248-3.072 8.448zM681.344 786.688l17.152 24.448c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 1.92-3.584 5.888-1.536 8.832zM725.504 751.744l21.12 21.12c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96zM763.008 709.76l24.448 17.152c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536-2.048 2.816-1.408 6.784 1.536 8.832zM792.576 661.888l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 6.912 3.072 8.448zM813.44 609.536l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.024 6.912 4.48 7.808zM824.832 554.368l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.256-3.456-2.304-6.656-5.76-6.912l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.584 2.304 6.656 5.76 6.912zM826.624 498.176l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.456-6.144-6.912-5.76l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.328 6.016 6.912 5.76zM818.432 442.368l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.456-4.352-5.376-7.808-4.48l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.48 5.376 7.808 4.48zM800.768 388.992l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.536-3.2-5.248-4.608-8.448-3.072l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.072 5.248 4.48 8.448 3.072zM774.144 339.328l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536L766.848 328.96c-2.944 2.048-3.584 6.016-1.536 8.832 1.92 2.816 5.888 3.584 8.832 1.536zM697.216 257.664l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.944-2.048-6.912-1.28-8.832 1.536l-17.152 24.448c-2.048 2.944-1.28 6.912 1.536 8.832 2.816 2.048 6.784 1.408 8.832-1.536zM658.944 192.512c-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.536 3.2-0.128 7.04 3.072 8.448 3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.408-3.2 0-7.04-3.072-8.448zM600.192 170.496c-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.456 1.152 6.912 4.48 7.808 3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c1.024-3.328-1.024-6.912-4.48-7.808zM534.912 201.6c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.456 2.304 6.528 5.76 6.912zM476.032 158.464c-3.456 0.256-6.144 3.456-5.76 6.912l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.328-6.016-6.912-5.76zM422.144 173.312c-0.896-3.456-4.352-5.376-7.808-4.48-3.456 0.896-5.376 4.352-4.48 7.808l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928zM376.448 219.776l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.608 5.248-3.072 8.448L364.8 225.28c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.376 3.2-8.576zM316.416 253.824c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 2.048-3.584 6.016-1.536 8.832l17.152 24.448z" fill="#FFFFFF" p-id="19071"></path></svg></td></tr><tr><td>介绍</td><td>网站的description</td><td>无</td></tr></tbody></table><p><strong>示例：</strong></p><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% yqlink https://blog.3ms.run,Daliyuer,,进一寸有进一寸的欢喜。 %&#125;</span><br></pre></td></tr></table></figure><a href="https://blog.3ms.run" target="_blank" title="Daliyuer" referrerPolicy="no-referrer" class="yqlink_card"><div class="yqlink_icon"><svg t="1670307855063" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="19066" width="200" height="200"><path d="M504.064 516.608m-384.256 0a384.256 384.256 0 1 0 768.512 0 384.256 384.256 0 1 0-768.512 0Z" fill="#009CF5" p-id="19068"></path><path d="M746.112 270.464L472.448 485.12l63.104 63.104L750.08 274.56c2.304-2.688-1.28-6.144-3.968-4.096z" fill="#FF4C3A" p-id="19069"></path><path d="M262.016 762.752l273.664-214.528-63.104-63.104-214.656 273.536c-2.176 2.688 1.28 6.144 4.096 4.096z" fill="#FFFFFF" p-id="19070"></path><path d="M505.216 155.136c-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.56 5.888 5.888 5.888s5.888-2.56 5.888-5.888v-53.504c-0.128-3.2-2.688-5.888-5.888-5.888zM442.368 160.512c-3.2 0.512-5.376 3.584-4.736 6.784l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736zM396.288 234.368c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552l-18.304-50.304c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552l18.304 50.304zM348.928 257.408c1.664 2.816 5.248 3.712 7.936 2.176s3.712-5.248 2.176-7.936l-26.752-46.336c-1.664-2.816-5.248-3.712-7.936-2.176-2.816 1.664-3.712 5.248-2.176 7.936l26.752 46.336zM306.304 288.256c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.432 2.048-2.816 5.76-0.768 8.192l34.432 40.96zM269.696 326.144c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-2.048 2.432-1.792 6.144 0.768 8.192l40.96 34.432zM193.792 342.912l46.336 26.752c2.816 1.664 6.4 0.64 7.936-2.176 1.664-2.816 0.64-6.4-2.176-8.064L199.552 332.8c-2.816-1.664-6.4-0.64-7.936 2.176-1.664 2.688-0.64 6.272 2.176 7.936zM168.32 399.488l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM207.872 457.344l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784zM201.984 509.568H148.48c-3.2 0-5.888 2.56-5.888 5.888 0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888zM205.44 562.176l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.376 6.784 4.736l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784s-3.584-5.248-6.784-4.736zM217.856 613.376l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 3.072 4.48 4.608 7.552 3.456l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456zM238.976 661.504l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.816 5.248 3.712 8.064 2.176l46.336-26.752c2.816-1.664 3.712-5.248 2.176-8.064-1.664-2.816-5.248-3.712-8.064-2.176zM268.16 705.408l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.432 5.76 2.816 8.192 0.768l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-1.92-2.56-5.632-2.816-8.192-0.768zM304.512 743.424l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.304-1.92-6.016-1.664-8.192 0.768zM347.008 774.656l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.664 6.4 0.64 8.064-2.176l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.536-6.4-0.64-8.064 2.176zM394.24 798.08l-18.304 50.304c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.152 6.4-0.512 7.552-3.456l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.528 0.384-7.552 3.456zM440.192 872.32c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.64 3.2 1.536 6.272 4.736 6.784zM502.912 878.08c3.2 0 5.888-2.56 5.888-5.888v-53.504c0-3.2-2.56-5.888-5.888-5.888-3.2 0-5.888 2.56-5.888 5.888v53.504c0 3.2 2.688 5.888 5.888 5.888zM549.632 815.232l9.344 52.736c0.512 3.2 3.584 5.376 6.784 4.736 3.2-0.512 5.376-3.584 4.736-6.784l-9.344-52.736c-0.512-3.2-3.584-5.376-6.784-4.736-3.2 0.512-5.248 3.584-4.736 6.784zM600.832 802.816l18.304 50.304c1.152 3.072 4.48 4.608 7.552 3.456 3.072-1.152 4.608-4.48 3.456-7.552L611.84 798.72c-1.152-3.072-4.48-4.608-7.552-3.456-3.072 1.152-4.608 4.48-3.456 7.552zM649.088 781.696l26.752 46.336c1.664 2.816 5.248 3.712 8.064 2.176 2.816-1.664 3.712-5.248 2.176-8.064l-26.88-46.336c-1.664-2.816-5.248-3.712-8.064-2.176-2.816 1.664-3.712 5.248-2.048 8.064zM692.864 752.384l34.432 40.96c2.048 2.432 5.76 2.816 8.192 0.768 2.432-2.048 2.816-5.76 0.768-8.192l-34.432-40.96c-2.048-2.432-5.76-2.816-8.192-0.768-2.56 2.048-2.816 5.76-0.768 8.192zM730.88 716.032l40.96 34.432c2.432 2.048 6.144 1.792 8.192-0.768 2.048-2.432 1.792-6.144-0.768-8.192l-40.96-34.432c-2.432-2.048-6.144-1.792-8.192 0.768-1.92 2.432-1.664 6.144 0.768 8.192zM762.112 673.664l46.336 26.752c2.816 1.664 6.4 0.64 8.064-2.176 1.664-2.816 0.64-6.4-2.176-7.936L768 663.552c-2.816-1.664-6.4-0.64-8.064 2.176-1.536 2.688-0.64 6.272 2.176 7.936zM785.536 626.432l50.304 18.304c3.072 1.152 6.4-0.512 7.552-3.456 1.152-3.072-0.512-6.4-3.456-7.552l-50.304-18.304c-3.072-1.152-6.4 0.512-7.552 3.456-1.152 3.072 0.384 6.4 3.456 7.552zM800.256 575.872l52.736 9.344c3.2 0.512 6.272-1.536 6.784-4.736 0.512-3.2-1.536-6.272-4.736-6.784l-52.736-9.344c-3.2-0.512-6.272 1.536-6.784 4.736-0.512 3.2 1.536 6.272 4.736 6.784zM800.256 517.76c0 3.2 2.56 5.888 5.888 5.888h53.504c3.2 0 5.888-2.56 5.888-5.888 0-3.2-2.56-5.888-5.888-5.888h-53.504c-3.328 0-5.888 2.56-5.888 5.888zM802.688 471.04l52.736-9.344c3.2-0.512 5.376-3.584 4.736-6.784-0.512-3.2-3.584-5.376-6.784-4.736l-52.736 9.344c-3.2 0.512-5.376 3.584-4.736 6.784 0.512 3.2 3.584 5.248 6.784 4.736zM790.272 419.84l50.304-18.304c3.072-1.152 4.608-4.48 3.456-7.552-1.152-3.072-4.48-4.608-7.552-3.456l-50.304 18.304c-3.072 1.152-4.608 4.48-3.456 7.552 1.152 2.944 4.48 4.608 7.552 3.456zM769.152 371.584l46.336-26.752c2.816-1.664 3.712-5.248 2.176-7.936-1.664-2.816-5.248-3.712-8.064-2.176l-46.336 26.752c-2.816 1.664-3.712 5.248-2.176 8.064 1.664 2.688 5.248 3.712 8.064 2.048zM739.84 327.808l40.96-34.432c2.432-2.048 2.816-5.76 0.768-8.192-2.048-2.432-5.76-2.816-8.192-0.768l-40.96 34.432c-2.432 2.048-2.816 5.76-0.768 8.192 2.048 2.56 5.76 2.816 8.192 0.768zM703.488 289.664l34.432-40.96c2.048-2.432 1.792-6.144-0.768-8.192-2.432-2.048-6.144-1.792-8.192 0.768l-34.432 40.96c-2.048 2.432-1.792 6.144 0.768 8.192 2.432 2.048 6.144 1.792 8.192-0.768zM661.12 258.56l26.752-46.336c1.664-2.816 0.64-6.4-2.176-7.936-2.816-1.664-6.4-0.64-8.064 2.176l-26.752 46.336c-1.664 2.816-0.64 6.4 2.176 7.936 2.816 1.536 6.4 0.64 8.064-2.176zM613.888 235.136l18.304-50.304c1.152-3.072-0.512-6.4-3.456-7.552-3.072-1.152-6.4 0.512-7.552 3.456L602.88 231.168c-1.152 3.072 0.512 6.4 3.456 7.552 3.072 1.024 6.4-0.512 7.552-3.584zM556.544 225.152c3.2 0.512 6.272-1.536 6.784-4.736l9.344-52.736c0.512-3.2-1.536-6.272-4.736-6.784-3.2-0.512-6.272 1.536-6.784 4.736l-9.344 52.736c-0.512 3.2 1.536 6.144 4.736 6.784zM273.536 290.432c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96l21.12 21.12zM237.824 333.824c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536s-1.28 6.912 1.536 8.832l24.448 17.152zM183.04 370.176l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 7.04 3.072 8.448zM194.688 423.68l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.152 6.912 4.48 7.808l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808zM183.168 478.72l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.456 2.304 6.656 5.76 6.912l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.384-3.456-2.176-6.528-5.76-6.912zM181.504 535.04l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.456 6.144 6.912 5.76l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.328-6.016-6.912-5.76zM191.36 590.72l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.352 5.376 7.808 4.48l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.328-4.352-5.376-7.808-4.48zM207.232 644.224l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.2 5.248 4.608 8.448 3.072l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.408-3.2-5.248-4.48-8.448-3.072zM233.984 693.888l-24.448 17.152c-2.944 2.048-3.584 6.016-1.536 8.832 2.048 2.944 6.016 3.584 8.832 1.536l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536zM310.912 775.552L293.76 800c-2.048 2.944-1.28 6.912 1.536 8.832 2.944 2.048 6.912 1.28 8.832-1.536l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.816-2.048-6.912-1.408-8.832 1.536zM349.184 840.704c3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.536-3.2 0.128-7.04-3.072-8.448-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.408 3.2-0.128 6.912 3.072 8.448zM407.808 862.72c3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c0.896-3.456-1.152-6.912-4.48-7.808-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.328 1.152 6.912 4.48 7.808zM469.376 874.112c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.584 2.304 6.656 5.76 6.912zM522.496 839.168l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.456-6.144-6.912-5.76-3.456 0.256-6.016 3.328-5.76 6.912zM578.176 830.976l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928c-0.896-3.456-4.352-5.376-7.808-4.48-3.328 0.896-5.376 4.48-4.48 7.808zM631.68 813.312l12.672 27.136c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.248 3.072-8.448l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.48 5.248-3.072 8.448zM681.344 786.688l17.152 24.448c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 1.92-3.584 5.888-1.536 8.832zM725.504 751.744l21.12 21.12c2.432 2.432 6.528 2.432 8.96 0 2.432-2.432 2.432-6.528 0-8.96l-21.12-21.12c-2.432-2.432-6.528-2.432-8.96 0-2.432 2.432-2.432 6.528 0 8.96zM763.008 709.76l24.448 17.152c2.944 2.048 6.912 1.28 8.832-1.536 2.048-2.944 1.28-6.912-1.536-8.832l-24.448-17.152c-2.944-2.048-6.912-1.28-8.832 1.536-2.048 2.816-1.408 6.784 1.536 8.832zM792.576 661.888l27.136 12.672c3.2 1.536 7.04 0.128 8.448-3.072 1.536-3.2 0.128-7.04-3.072-8.448l-27.136-12.672c-3.2-1.536-7.04-0.128-8.448 3.072-1.536 3.2-0.128 6.912 3.072 8.448zM813.44 609.536l28.928 7.68c3.456 0.896 6.912-1.152 7.808-4.48 0.896-3.456-1.152-6.912-4.48-7.808l-28.928-7.68c-3.456-0.896-6.912 1.152-7.808 4.48-0.896 3.456 1.024 6.912 4.48 7.808zM824.832 554.368l29.824 2.56c3.456 0.256 6.656-2.304 6.912-5.76 0.256-3.456-2.304-6.656-5.76-6.912l-29.824-2.56c-3.456-0.256-6.656 2.304-6.912 5.76-0.256 3.584 2.304 6.656 5.76 6.912zM826.624 498.176l29.824-2.56c3.456-0.256 6.144-3.456 5.76-6.912-0.256-3.456-3.456-6.144-6.912-5.76l-29.824 2.56c-3.456 0.256-6.144 3.456-5.76 6.912 0.256 3.456 3.328 6.016 6.912 5.76zM818.432 442.368l28.928-7.68c3.456-0.896 5.376-4.352 4.48-7.808-0.896-3.456-4.352-5.376-7.808-4.48l-28.928 7.68c-3.456 0.896-5.376 4.352-4.48 7.808 0.896 3.456 4.48 5.376 7.808 4.48zM800.768 388.992l27.136-12.672c3.2-1.536 4.608-5.248 3.072-8.448-1.536-3.2-5.248-4.608-8.448-3.072l-27.136 12.672c-3.2 1.536-4.608 5.248-3.072 8.448 1.536 3.072 5.248 4.48 8.448 3.072zM774.144 339.328l24.448-17.152c2.944-2.048 3.584-6.016 1.536-8.832-2.048-2.944-6.016-3.584-8.832-1.536L766.848 328.96c-2.944 2.048-3.584 6.016-1.536 8.832 1.92 2.816 5.888 3.584 8.832 1.536zM697.216 257.664l17.152-24.448c2.048-2.944 1.28-6.912-1.536-8.832-2.944-2.048-6.912-1.28-8.832 1.536l-17.152 24.448c-2.048 2.944-1.28 6.912 1.536 8.832 2.816 2.048 6.784 1.408 8.832-1.536zM658.944 192.512c-3.2-1.536-7.04-0.128-8.448 3.072l-12.672 27.136c-1.536 3.2-0.128 7.04 3.072 8.448 3.2 1.536 7.04 0.128 8.448-3.072l12.672-27.136c1.408-3.2 0-7.04-3.072-8.448zM600.192 170.496c-3.456-0.896-6.912 1.152-7.808 4.48l-7.68 28.928c-0.896 3.456 1.152 6.912 4.48 7.808 3.456 0.896 6.912-1.152 7.808-4.48l7.68-28.928c1.024-3.328-1.024-6.912-4.48-7.808zM534.912 201.6c3.456 0.256 6.656-2.304 6.912-5.76l2.56-29.824c0.256-3.456-2.304-6.656-5.76-6.912-3.456-0.256-6.656 2.304-6.912 5.76l-2.56 29.824c-0.256 3.456 2.304 6.528 5.76 6.912zM476.032 158.464c-3.456 0.256-6.144 3.456-5.76 6.912l2.56 29.824c0.256 3.456 3.456 6.144 6.912 5.76 3.456-0.256 6.144-3.456 5.76-6.912l-2.56-29.824c-0.256-3.456-3.328-6.016-6.912-5.76zM422.144 173.312c-0.896-3.456-4.352-5.376-7.808-4.48-3.456 0.896-5.376 4.352-4.48 7.808l7.68 28.928c0.896 3.456 4.352 5.376 7.808 4.48 3.456-0.896 5.376-4.352 4.48-7.808l-7.68-28.928zM376.448 219.776l-12.672-27.136c-1.536-3.2-5.248-4.608-8.448-3.072-3.2 1.536-4.608 5.248-3.072 8.448L364.8 225.28c1.536 3.2 5.248 4.608 8.448 3.072 3.2-1.536 4.608-5.376 3.2-8.576zM316.416 253.824c2.048 2.944 6.016 3.584 8.832 1.536 2.944-2.048 3.584-6.016 1.536-8.832l-17.152-24.448c-2.048-2.944-6.016-3.584-8.832-1.536-2.944 2.048-3.584 6.016-1.536 8.832l17.152 24.448z" fill="#FFFFFF" p-id="19071"></path></svg></div><div class="yqlink_content"><div class="yqlink_title">Daliyuer</div><div class="yqlink_desc">进一寸有进一寸的欢喜。</div></div></a><h2 id="打赏卡片标签-魔改"><a href="#打赏卡片标签-魔改" class="headerlink" title="打赏卡片标签(魔改)"></a>打赏卡片标签(魔改)</h2><p><strong>使用方法</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">&lt;!-- 使用html是为了高亮代码，不必在意 --&gt;</span><br><span class="line">&lt;!-- 参数如下： --&gt;</span><br><span class="line">&#123;% reward 名字,金额,时间，渠道,头像,链接,是否友链好友 %&#125;</span><br><span class="line">&lt;!-- 示例如下： --&gt;</span><br><span class="line">&#123;% reward ZeroLatency,66.66,2023-01-01,qq,990320751,https://blog.3ms.run,1 %&#125;</span><br><span class="line">&lt;!-- 你也可以什么都不填，将会全部使用默认值，如下： --&gt;</span><br><span class="line">&#123;% reward %&#125;</span><br><span class="line">&lt;!-- 你也可以省略部分内容，如下： --&gt;</span><br><span class="line">&#123;% reward ZeroLatency,88.88,2023-01-01,zfb %&#125;</span><br><span class="line">&lt;!-- 位置在后面的参数不填的话可以直接省略，但是如果中间的不想填必须留空，如下： --&gt;</span><br><span class="line">&lt;!-- 昵称和时间不填，以及渠道后面的全部省略 --&gt;</span><br><span class="line">&#123;% reward ,66.66,,qq %&#125;</span><br></pre></td></tr></table></figure><p><strong>参数</strong>：</p><table><thead><tr><th>参数</th><th>描述</th><th>默认值</th></tr></thead><tbody><tr><td>名字</td><td>这还需要描述？</td><td>匿名</td></tr><tr><td>金额</td><td>这也不需要描述吧</td><td>0.00</td></tr><tr><td>时间</td><td>直接填就行，不填则不显示</td><td>无</td></tr><tr><td>渠道</td><td>打赏渠道。可填：<code>qq</code>、<code>wx</code>、<code>zfb</code>，其他渠道留空即可</td><td><svg t="1672812669835" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2998" width="200" height="200"><path d="M512 512m-448 0a448 448 0 1 0 896 0 448 448 0 1 0-896 0Z" fill="#FFBD27" p-id="2999"></path><path d="M413.776 279.52l32.256 41.92h112.864l32.256-41.92 3.232-6.448v-3.232c0-6.448-3.232-9.664-9.68-12.896 0 0-45.152-9.664-83.84-9.664-38.72 0-83.856 9.664-83.856 9.664-16.128 6.448-3.232 22.576-3.232 22.576z m154.8 70.96H452.48C362.176 382.72 288 482.704 288 576.24c0 116.08 64.496 170.912 222.528 170.912 158.032 0 222.528-54.832 222.528-170.928 0-93.52-74.176-193.504-164.48-225.76z m22.576 238.64c6.448 0 12.896 6.448 12.896 12.912 0 6.448-6.448 12.896-12.896 12.896h-64.496v45.152c0 6.448-6.448 12.896-12.896 12.896-6.464 0-12.912-6.448-12.912-12.896v-41.92h-64.496c-6.448 0-12.896-6.464-12.896-12.912s6.448-12.896 12.896-12.896h64.496v-35.472h-64.496c-6.448 0-12.896-6.448-12.896-12.912 0-6.448 6.448-12.896 12.896-12.896h67.728v-3.216s-3.232 0-3.232-3.232l-51.6-61.28c-6.448-3.216-6.448-12.896 0-19.344s16.128-3.232 19.36 3.232l45.152 51.6 45.136-51.6c6.464-6.464 12.912-6.464 19.36-3.232 6.448 6.448 6.448 12.896 3.216 19.36l-51.6 61.28c0 3.2-3.216 3.2-6.448 3.2h67.728c6.448 0 12.896 6.464 12.896 12.912s-6.448 12.896-12.896 12.896h-64.496v35.472h64.496z" fill="#FFFFFF" p-id="3000"></path></svg></td></tr><tr><td>头像</td><td>图片链接，<code>可以直接填QQ号获取QQ头像</code></td><td><svg t="1672803307818" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13647" width="200" height="200"><path d="M512 0C229.236338 0 0 229.236338 0 512s229.236338 512 512 512 512-229.224912 512-512S794.775088 0 512 0z m-6.443844 190.801776c94.681097 0 171.710173 75.886551 171.710173 169.185192s-77.029076 169.208042-171.710173 169.208042-171.698748-75.909401-171.698749-169.185191S410.886484 190.801776 505.556156 190.801776zM793.141276 771.638944c0 61.536429-100.473702 61.536429-216.817084 61.536429H447.664383c-121.107714 0-216.794234 0-216.794234-61.536429v-12.670609c0-117.680137 97.240354-213.48091 216.794234-213.480909h128.659809c119.553879 0 216.817084 95.777922 216.817084 213.480909z" fill="#e5e5e5" p-id="13648"></path><path d="M576.324192 545.487426H447.664383c-119.553879 0-216.794234 95.755071-216.794234 213.480909v12.670609c0 61.536429 95.68652 61.536429 216.794234 61.536429h128.659809c116.343383 0 216.817084 0 216.817084-61.536429v-12.670609c0-117.702988-97.263205-213.48091-216.817084-213.480909zM505.556156 529.19501c94.681097 0 171.710173-75.875126 171.710173-169.185191S600.237253 190.801776 505.556156 190.801776s-171.698748 75.932252-171.698749 169.208043 77.029076 169.185192 171.698749 169.185191z" fill="#ffffff" p-id="13649"></path></svg></td></tr><tr><td>链接</td><td>打赏者的网站链接，设置之后卡片会变成a标签，可点击</td><td>无</td></tr><tr><td>是否友链</td><td><code>1</code>表示是，<code>0</code>或者不填表示不是</td><td>无</td></tr></tbody></table><p><strong>完整示例</strong></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% reward ZeroLatency,66.66,2023-01-01,qq,990320751,https://blog.3ms.run/,1 %&#125;</span><br></pre></td></tr></table></figure><a href="https://blog.3ms.run/"  class="reward_card">      <div class="isFriends">友链</div>      <img class="no-lightbox" src="https://q1.qlogo.cn/g?b=qq&nk=990320751&s=5">      <div class="reward_info">        <p class="reward_name">ZeroLatency</p>        <div class="reward_bottom">          <span class="reward_money"><svg t="1672813064588" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1062" width="200" height="200"><path d="M511.09761 957.257c-80.159 0-153.737-25.019-201.11-62.386-24.057 6.702-54.831 17.489-74.252 30.864-16.617 11.439-14.546 23.106-11.55 27.816 13.15 20.689 225.583 13.211 286.912 6.767v-3.061z" fill="#FAAD08" p-id="1063"></path><path d="M496.65061 957.257c80.157 0 153.737-25.019 201.11-62.386 24.057 6.702 54.83 17.489 74.253 30.864 16.616 11.439 14.543 23.106 11.55 27.816-13.15 20.689-225.584 13.211-286.914 6.767v-3.061z" fill="#FAAD08" p-id="1064"></path><path d="M497.12861 474.524c131.934-0.876 237.669-25.783 273.497-35.34 8.541-2.28 13.11-6.364 13.11-6.364 0.03-1.172 0.542-20.952 0.542-31.155C784.27761 229.833 701.12561 57.173 496.64061 57.162 292.15661 57.173 209.00061 229.832 209.00061 401.665c0 10.203 0.516 29.983 0.547 31.155 0 0 3.717 3.821 10.529 5.67 33.078 8.98 140.803 35.139 276.08 36.034h0.972z" fill="#000000" p-id="1065"></path><path d="M860.28261 619.782c-8.12-26.086-19.204-56.506-30.427-85.72 0 0-6.456-0.795-9.718 0.148-100.71 29.205-222.773 47.818-315.792 46.695h-0.962C410.88561 582.017 289.65061 563.617 189.27961 534.698 185.44461 533.595 177.87261 534.063 177.87261 534.063 166.64961 563.276 155.56661 593.696 147.44761 619.782 108.72961 744.168 121.27261 795.644 130.82461 796.798c20.496 2.474 79.78-93.637 79.78-93.637 0 97.66 88.324 247.617 290.576 248.996a718.01 718.01 0 0 1 5.367 0C708.80161 950.778 797.12261 800.822 797.12261 703.162c0 0 59.284 96.111 79.783 93.637 9.55-1.154 22.093-52.63-16.623-177.017" fill="#000000" p-id="1066"></path><path d="M434.38261 316.917c-27.9 1.24-51.745-30.106-53.24-69.956-1.518-39.877 19.858-73.207 47.764-74.454 27.875-1.224 51.703 30.109 53.218 69.974 1.527 39.877-19.853 73.2-47.742 74.436m206.67-69.956c-1.494 39.85-25.34 71.194-53.24 69.956-27.888-1.238-49.269-34.559-47.742-74.435 1.513-39.868 25.341-71.201 53.216-69.974 27.909 1.247 49.285 34.576 47.767 74.453" fill="#FFFFFF" p-id="1067"></path><path d="M683.94261 368.627c-7.323-17.609-81.062-37.227-172.353-37.227h-0.98c-91.29 0-165.031 19.618-172.352 37.227a6.244 6.244 0 0 0-0.535 2.505c0 1.269 0.393 2.414 1.006 3.386 6.168 9.765 88.054 58.018 171.882 58.018h0.98c83.827 0 165.71-48.25 171.881-58.016a6.352 6.352 0 0 0 1.002-3.395c0-0.897-0.2-1.736-0.531-2.498" fill="#FAAD08" p-id="1068"></path><path d="M467.63161 256.377c1.26 15.886-7.377 30-19.266 31.542-11.907 1.544-22.569-10.083-23.836-25.978-1.243-15.895 7.381-30.008 19.25-31.538 11.927-1.549 22.607 10.088 23.852 25.974m73.097 7.935c2.533-4.118 19.827-25.77 55.62-17.886 9.401 2.07 13.75 5.116 14.668 6.316 1.355 1.77 1.726 4.29 0.352 7.684-2.722 6.725-8.338 6.542-11.454 5.226-2.01-0.85-26.94-15.889-49.905 6.553-1.579 1.545-4.405 2.074-7.085 0.242-2.678-1.834-3.786-5.553-2.196-8.135" fill="#000000" p-id="1069"></path><path d="M504.33261 584.495h-0.967c-63.568 0.752-140.646-7.504-215.286-21.92-6.391 36.262-10.25 81.838-6.936 136.196 8.37 137.384 91.62 223.736 220.118 224.996H506.48461c128.498-1.26 211.748-87.612 220.12-224.996 3.314-54.362-0.547-99.938-6.94-136.203-74.654 14.423-151.745 22.684-215.332 21.927" fill="#FFFFFF" p-id="1070"></path><path d="M323.27461 577.016v137.468s64.957 12.705 130.031 3.91V591.59c-41.225-2.262-85.688-7.304-130.031-14.574" fill="#EB1C26" p-id="1071"></path><path d="M788.09761 432.536s-121.98 40.387-283.743 41.539h-0.962c-161.497-1.147-283.328-41.401-283.744-41.539l-40.854 106.952c102.186 32.31 228.837 53.135 324.598 51.926l0.96-0.002c95.768 1.216 222.4-19.61 324.6-51.924l-40.855-106.952z" fill="#EB1C26" p-id="1072"></path></svg>66.66<span style="font-size:13px">￥</span></span>          <span class="reward_time">2023-01-01</span>        </div>      </div>    </a><p>转载自：<a href="https://butterfly.js.org/posts/ceeb73f/">Butterfly 文檔(四) 標簽外挂 | Butterfly</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;标签外挂是 Hexo 独有的功能，并不是标准的 Markdown 格式。&lt;/p&gt;
&lt;p&gt;以下的写法，只适用于 Butterfly 主题，用在其它主题上不会有效果，甚至可能会报错。使用前请留意&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;code&gt;标</summary>
      
    
    
    
    <category term="博客相关" scheme="https://blog.3ms.run/categories/%E5%8D%9A%E5%AE%A2%E7%9B%B8%E5%85%B3/"/>
    
    
    <category term="Hexo" scheme="https://blog.3ms.run/tags/Hexo/"/>
    
    <category term="教程" scheme="https://blog.3ms.run/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo Blog" scheme="https://blog.3ms.run/tags/Hexo-Blog/"/>
    
    <category term="主题" scheme="https://blog.3ms.run/tags/%E4%B8%BB%E9%A2%98/"/>
    
  </entry>
  
  <entry>
    <title>国内外免费公共 DoT/DoH 加密 DNS 服务器地址大全</title>
    <link href="https://blog.3ms.run/archives/12986.html"/>
    <id>https://blog.3ms.run/archives/12986.html</id>
    <published>2025-03-10T21:01:24.000Z</published>
    <updated>2026-02-25T09:16:38.517Z</updated>
    
    <content type="html"><![CDATA[<blockquote><p>在当今数字化时代，网络安全已成为我们每个人关心的重点。域名系统（DNS）作为互联网的电话簿，其安全性至关重要。传统的DNS查询缺乏加密保护，容易遭受各种形式的网络攻击，如DNS劫持和DNS污染。为了解决这些问题，DoT（DNS over TLS）和DoH（DNS over HTTPS）应运而生，它们通过加密技术来确保DNS查询的安全性和隐私性。</p></blockquote><p>今天给大家分享一些国内知名免费公共DoT&#x2F;DoH加密DNS服务器。</p><h2 id="国内主流DNS服务器"><a href="#国内主流DNS服务器" class="headerlink" title="国内主流DNS服务器"></a>国内主流DNS服务器</h2><h3 id="1-腾讯-DNS-DNSPod"><a href="#1-腾讯-DNS-DNSPod" class="headerlink" title="1.腾讯 DNS (DNSPod)"></a>1.<strong>腾讯 DNS (DNSPod)</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoH地址(国密SM2)基于腾讯云政企国密解决方案</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://doh.pub/dns-query</code></li><li><code>https://1.12.12.12/dns-query</code></li><li><code>https://120.53.53.53/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>https://sm2.doh.pub/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dot.pub</code></li></ul></div><div class="tab-item-content"><ul><li><code>1.12.12.12</code></li><li><code>120.53.53.53</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="阿里云公共-DNS"><a href="#阿里云公共-DNS" class="headerlink" title="阿里云公共 DNS"></a><strong>阿里云公共 DNS</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://dns.alidns.com/dns-query</code></li><li><code>https://223.5.5.5/dns-query</code></li><li><code>https://223.6.6.6/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dns.alidns.com</code></li></ul></div><div class="tab-item-content"><ul><li><code>223.5.5.5</code></li><li><code>223.6.6.6</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="360-Secure-安全-DNS"><a href="#360-Secure-安全-DNS" class="headerlink" title="360 Secure(安全) DNS"></a><strong>360 Secure(安全) DNS</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://doh.360.cn/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dot.360.cn</code></li></ul></div><div class="tab-item-content"><ul><li><code>101.226.4.6</code></li><li><code>218.30.118.6</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="信风公共-DNS"><a href="#信风公共-DNS" class="headerlink" title="信风公共 DNS"></a>信风公共 DNS</h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://doh.114dns.com/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>tls.dns114.cn</code></li></ul></div><div class="tab-item-content"><p><code>114.11.114.114</code></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="TWNIC-DNS-Quad-101"><a href="#TWNIC-DNS-Quad-101" class="headerlink" title="TWNIC DNS Quad 101"></a>TWNIC DNS Quad 101</h3><p>由台湾网络资讯中心提供的免费公共 DNS 服务，以台湾地区为人熟悉的地标 台北 101 作为地址。</p><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://dns.twnic.tw/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dns.twnic.tw</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h2 id="国外主流DNS服务器"><a href="#国外主流DNS服务器" class="headerlink" title="国外主流DNS服务器"></a>国外主流DNS服务器</h2><h3 id="Google-Public-DNS"><a href="#Google-Public-DNS" class="headerlink" title="Google Public DNS"></a>Google Public DNS</h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://dns.google/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dns.google</code></li></ul></div><div class="tab-item-content"><ul><li><code>8.8.8.8</code></li><li><code>8.8.4.4</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="Cloudflare-DNS"><a href="#Cloudflare-DNS" class="headerlink" title="Cloudflare DNS"></a>Cloudflare DNS</h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button><button type="button" class="tab">安全版 (拦截恶意代码)</button><button type="button" class="tab">家庭版(拦截恶意代码和成人内容)</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://cloudflare-dns.com/dns-query</code></li><li><code>https://dns.cloudflare.com/dns-query</code></li><li><code>https://1.1.1.1/dns-query</code></li><li><code>https://1.0.0.1/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>cloudflare-dns.com</code></li><li><code>dns.cloudflare.com</code></li><li><code>one.one.one.one</code></li><li><code>1dot1dot1dot1.cloudflare-dns.com</code></li></ul></div><div class="tab-item-content"><ul><li><code>1.1.1.1</code></li><li><code>1.0.0.1</code></li></ul></div><div class="tab-item-content"><p><strong>DoH:</strong></p><ul><li><code>https://security.cloudflare-dns.com/dns-query</code></li></ul><p><strong>DoT：</strong></p><ul><li><code>security.cloudflare-dns.com</code></li></ul></div><div class="tab-item-content"><p><strong>DoH:</strong></p><ul><li><code>https://family.cloudflare-dns.com/dns-query</code></li></ul><p><strong>DoT:</strong></p><ul><li><code>family.cloudflare-dns.com</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="Quad9-DNS"><a href="#Quad9-DNS" class="headerlink" title="Quad9 DNS"></a><strong>Quad9 DNS</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://dns.quad9.net/dns-query</code></li><li><code>https://dns9.quad9.net/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dns.quad9.net</code></li><li><code>dns9.quad9.net</code></li></ul></div><div class="tab-item-content"><ul><li><code>9.9.9.9</code></li><li><code>149.112.112.112</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="AdGuard-DNS"><a href="#AdGuard-DNS" class="headerlink" title="AdGuard DNS"></a><strong>AdGuard DNS</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">IPv4地址</button><button type="button" class="tab">家庭保护服务器 (拦截成人内容)</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://dns.adguard.com/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dns.adguard-dns.com</code></li></ul></div><div class="tab-item-content"><ul><li><code>94.140.14.14</code></li><li><code>94.140.15.15</code></li></ul></div><div class="tab-item-content"><p><strong>DoT</strong>：</p><ul><li><code>family.adguard.com</code></li></ul><p><strong>DoH</strong>：</p><ul><li><code>https://family.adguard.com/dns-query</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="NextDNS"><a href="#NextDNS" class="headerlink" title="NextDNS"></a><strong>NextDNS</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://dns.nextdns.io</code></li></ul></div><div class="tab-item-content"><ul><li><code>dns.nextdns.io</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="DNS-SB"><a href="#DNS-SB" class="headerlink" title="DNS.SB"></a><strong>DNS.SB</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://doh.dns.sb/dns-query</code></li><li><code>https://doh.sb/dns-query</code></li><li><code>https://dns.sb/dns-query</code></li></ul></div><div class="tab-item-content"><ul><li><code>dot.sb</code></li><li><code>dns.sb</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="Cisco-OpenDNS-Cisco-Umbrella"><a href="#Cisco-OpenDNS-Cisco-Umbrella" class="headerlink" title="Cisco OpenDNS&#x2F;Cisco Umbrella"></a><strong>Cisco OpenDNS&#x2F;Cisco Umbrella</strong></h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">OpenDNS FamilyShield</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><a href="https://doh.opendns.com/dns-query">https://doh.opendns.com/dns-query</a></li><li><a href="https://dns.opendns.com/dns-query">https://dns.opendns.com/dns-query</a></li><li><a href="https://doh.umbrella.com/dns-query">https://doh.umbrella.com/dns-query</a></li><li><a href="https://dns.umbrella.com/dns-query">https://dns.umbrella.com/dns-query</a></li><li><a href="https://dns.sse.cisco.com/dns-query">https://dns.sse.cisco.com/dns-query</a></li></ul></div><div class="tab-item-content"><ul><li>dns.opendns.com</li><li>dns.umbrella.com</li><li>dns.sse.cisco.com</li></ul></div><div class="tab-item-content"><p><strong>OpenDNS 家庭盾版 DNS，官方介绍是 block adult content 阻止成人内容。</strong><br><strong>DoH:</strong></p><ul><li><code>https://familyshield.opendns.com/dns-query</code></li><li><code>https://doh.familyshield.opendns.com/dns-query</code></li><li><code>https://familyshield.sse.cisco.com/dns-query</code></li></ul><p><strong>DoT:</strong></p><ul><li><code>familyshield.opendns.com</code></li><li><code>familyshield.sse.cisco.com</code></li></ul></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div><h3 id="Yandex-DNS"><a href="#Yandex-DNS" class="headerlink" title="Yandex DNS"></a>Yandex DNS</h3><div class="tabs"><div class="nav-tabs"><button type="button" class="tab active">DoH地址</button><button type="button" class="tab">DoT地址</button><button type="button" class="tab">安全版（病毒和钓鱼防御）</button><button type="button" class="tab">家庭版（拦截成人内容）</button></div><div class="tab-contents"><div class="tab-item-content active"><ul><li><code>https://common.dot.dns.yandex.net</code></li><li><code>https://77.88.8.8</code></li><li><code>https://2a02:6b8::feed:0ff</code></li></ul></div><div class="tab-item-content"><ul><li><code>common.dot.dns.yandex.net</code></li><li><code>77.88.8.8</code></li><li><code>2a02:6b8::feed:0ff</code></li></ul></div><div class="tab-item-content"><p><strong><mark class="hl-label green">DoH地址</mark>:</strong> <code>https://safe.dot.dns.yandex.net</code></p><p><strong><mark class="hl-label red">DoH地址</mark>:</strong><code>safe.dot.dns.yandex.net</code></p></div><div class="tab-item-content"><p><strong><mark class="hl-label green">DoH地址</mark>:</strong> <code>https://family.dot.dns.yandex.net</code></p><p><strong><mark class="hl-label red">DoH地址</mark>:</strong><code>family.dot.dns.yandex.net</code></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div>]]></content>
    
    
      
      
    <summary type="html">&lt;blockquote&gt;
&lt;p&gt;在当今数字化时代，网络安全已成为我们每个人关心的重点。域名系统（DNS）作为互联网的电话簿，其安全性至关重要。传统的DNS查询缺乏加密保护，容易遭受各种形式的网络攻击，如DNS劫持和DNS污染。为了解决这些问题，DoT（DNS over TLS）和</summary>
      
    
    
    
    <category term="实用教程" scheme="https://blog.3ms.run/categories/%E5%AE%9E%E7%94%A8%E6%95%99%E7%A8%8B/"/>
    
    
    <category term="全球公共DNS" scheme="https://blog.3ms.run/tags/%E5%85%A8%E7%90%83%E5%85%AC%E5%85%B1DNS/"/>
    
    <category term="加密DNS" scheme="https://blog.3ms.run/tags/%E5%8A%A0%E5%AF%86DNS/"/>
    
    <category term="国内加密DNS" scheme="https://blog.3ms.run/tags/%E5%9B%BD%E5%86%85%E5%8A%A0%E5%AF%86DNS/"/>
    
    <category term="国外加密DNS" scheme="https://blog.3ms.run/tags/%E5%9B%BD%E5%A4%96%E5%8A%A0%E5%AF%86DNS/"/>
    
    <category term="国外DNS" scheme="https://blog.3ms.run/tags/%E5%9B%BD%E5%A4%96DNS/"/>
    
    <category term="国内DNS" scheme="https://blog.3ms.run/tags/%E5%9B%BD%E5%86%85DNS/"/>
    
    <category term="公共DNS" scheme="https://blog.3ms.run/tags/%E5%85%AC%E5%85%B1DNS/"/>
    
    <category term="安全DNS" scheme="https://blog.3ms.run/tags/%E5%AE%89%E5%85%A8DNS/"/>
    
    <category term="CloudflareDNS" scheme="https://blog.3ms.run/tags/CloudflareDNS/"/>
    
    <category term="GoogleDNS" scheme="https://blog.3ms.run/tags/GoogleDNS/"/>
    
    <category term="360DNS" scheme="https://blog.3ms.run/tags/360DNS/"/>
    
  </entry>
  
</feed>
