<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>安知鱼</title>
  <icon>https://www.gravatar.com/avatar/e04bb745ddb4503076f6b8f540d5c60a</icon>
  <subtitle>生活明朗 万物可爱</subtitle>
  <link href="https://blog.anheyu.com/atom.xml" rel="self"/>
  
  <link href="https://blog.anheyu.com/"/>
  <updated>2023-11-19T05:12:38.969Z</updated>
  <id>https://blog.anheyu.com/</id>
  
  <author>
    <name>安知鱼</name>
    <email>anzhiy-c@qq.com</email>
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>那些年用过的CSS奇妙用法之能用CSS就不用JS技巧系列</title>
    <link href="https://blog.anheyu.com/posts/340b.html"/>
    <id>https://blog.anheyu.com/posts/340b.html</id>
    <published>2023-08-27T03:22:54.000Z</published>
    <updated>2023-11-19T05:12:38.969Z</updated>
    
    <content type="html"><![CDATA[<h2 id="嵌套的圆角"><a href="#嵌套的圆角" class="headerlink" title="嵌套的圆角"></a>嵌套的圆角</h2><p>在遇到内外两层圆角时，可以通过 CSS 变量动态去计算内部的圆角，看起来会更加和谐</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf0f5bc891.gif!blogimg" alt="运行效果"></p><p><code>核心代码</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></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.parent</span> &#123;</span><br><span class="line">  <span class="attr">--anzhiyu-nested-radius</span>: <span class="built_in">calc</span>(<span class="built_in">var</span>(--radius) - <span class="built_in">var</span>(--padding));</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.nested</span> &#123;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="built_in">var</span>(--anzhiyu-nested-radius);</span><br><span class="line">&#125;</span><br><span class="line"></span><br></pre></td></tr></table></figure><p><a href="https://1024code.com/~anzhiyu/fu2ltht">《css嵌套的圆角》在线运行1024code</a></p><h2 id="视图转换动画-View-Transitions-API"><a href="#视图转换动画-View-Transitions-API" class="headerlink" title="视图转换动画 View Transitions API"></a>视图转换动画 View Transitions API</h2><p>我们先从一个简单的例子来认识一下。</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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;list&quot;</span> <span class="attr">id</span>=<span class="string">&quot;list&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>1<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>2<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>3<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>4<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>5<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>6<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>7<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>8<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>9<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span>&gt;</span>10<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>我们实现一个简单交互，点击每个元素，元素就会被删除</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">list.<span class="title function_">addEventListener</span>(<span class="string">&#x27;click&#x27;</span>, <span class="keyword">function</span>(<span class="params">ev</span>)&#123;</span><br><span class="line">  <span class="keyword">if</span> (ev.<span class="property">target</span>.<span class="property">className</span> === <span class="string">&#x27;item&#x27;</span>) &#123;</span><br><span class="line">    ev.<span class="property">target</span>.<span class="title function_">remove</span>()</span><br><span class="line">  &#125;</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><p>用 css修饰一下就变成了以下效果</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf222de769.gif!blogimg"></p><p>功能正常，就是有点太过生硬了</p><p>现在轮到 <code>View Transitions</code> 出场了！我们只需要在改变状态的地方添加<code>document.startViewTransition</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></pre></td><td class="code"><pre><span class="line">list.<span class="title function_">addEventListener</span>(<span class="string">&#x27;click&#x27;</span>, <span class="keyword">function</span>(<span class="params">ev</span>)&#123;</span><br><span class="line">  <span class="keyword">if</span> (ev.<span class="property">target</span>.<span class="property">className</span> === <span class="string">&#x27;item&#x27;</span>) &#123;</span><br><span class="line">    <span class="variable language_">document</span>.<span class="title function_">startViewTransition</span>(<span class="function">() =&gt;</span> &#123; <span class="comment">// 开始视图变换</span></span><br><span class="line">      ev.<span class="property">target</span>.<span class="title function_">remove</span>()</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 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></pre></td><td class="code"><pre><span class="line">list.<span class="title function_">addEventListener</span>(<span class="string">&#x27;click&#x27;</span>, <span class="keyword">function</span>(<span class="params">ev</span>)&#123;</span><br><span class="line">  <span class="keyword">if</span> (<span class="variable language_">document</span>.<span class="property">startViewTransition</span>) &#123; <span class="comment">// 如果支持就视图变换</span></span><br><span class="line">    <span class="variable language_">document</span>.<span class="title function_">startViewTransition</span>(<span class="function">() =&gt;</span> &#123; <span class="comment">// 开始视图变换</span></span><br><span class="line">      ev.<span class="property">target</span>.<span class="title function_">remove</span>()</span><br><span class="line">    &#125;);</span><br><span class="line">  &#125; <span class="keyword">else</span> &#123; <span class="comment">// 不支持就执行原来的逻辑</span></span><br><span class="line">    ev.<span class="property">target</span>.<span class="title function_">remove</span>()</span><br><span class="line">  &#125;</span><br><span class="line">&#125;)</span><br></pre></td></tr></table></figure><p>现在效果如下</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf29f43550.gif!blogimg" alt="加速startViewTransition监听后的效果"></p><p>删除前后现在有一个淡入淡出的效果了，也就是默认的动画效果，我们可以把这个动画时长设置大一点，如下</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></pre></td><td class="code"><pre><span class="line">::view-transition-<span class="title function_">old</span>(root), <span class="comment">/* 旧视图*/</span></span><br><span class="line">::view-transition-<span class="title function_">new</span>(<span class="params">root</span>) &#123; <span class="comment">/* 新视图*/</span></span><br><span class="line">  animation-<span class="attr">duration</span>: 2s;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这两个伪元素我们后面再做介绍，先看效果</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf33ada1fd.gif!blogimg" alt="延长动画时间"></p><p>是不是明显感觉过渡变慢了许多？</p><p>但是这种动画还是不够舒服，是一种整体的变化，看不出删除前后元素的位置变化。</p><p>接下来我们给每个元素指定一个标识，用来标记变化前后的状态，为了方便控制，可以借助 CSS 变量</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></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;list&quot;</span> <span class="attr">id</span>=<span class="string">&quot;list&quot;</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a1&quot;</span>&gt;</span>1<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a2&quot;</span>&gt;</span>2<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a3&quot;</span>&gt;</span>3<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a4&quot;</span>&gt;</span>4<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a5&quot;</span>&gt;</span>5<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a6&quot;</span>&gt;</span>6<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a7&quot;</span>&gt;</span>7<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a8&quot;</span>&gt;</span>8<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a9&quot;</span>&gt;</span>9<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line">  <span class="tag">&lt;<span class="name">div</span> <span class="attr">class</span>=<span class="string">&quot;item&quot;</span> <span class="attr">style</span>=<span class="string">&quot;--i: a10&quot;</span>&gt;</span>10<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>这里通过<code>view-transition-name</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></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.item</span>&#123;</span><br><span class="line">  view-<span class="attribute">transition</span>-name: <span class="built_in">var</span>(--i);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后可以得到这样的效果，每个元素在变化前后会自动找到之前的位置，并且平滑的移动过去，如下</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf3ac0fd66.gif!blogimg"></p><p>是不是非常丝滑？这就是 View Transitions 的魅力！</p><p>在动画执行的过程中，还会在页面根节点自动创建以下伪元素</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></pre></td><td class="code"><pre><span class="line">::view-transition</span><br><span class="line">└─ ::<span class="built_in">view-transition-group</span>(root)</span><br><span class="line">   └─ ::<span class="built_in">view-transition-image-pair</span>(root)</span><br><span class="line">      ├─ ::<span class="built_in">view-transition-old</span>(root)</span><br><span class="line">      └─ ::<span class="built_in">view-transition-new</span>(root)</span><br></pre></td></tr></table></figure><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf75c4b561.webp!blogimg" alt="控制台截图"></p><p>其中，::view-transition-old表示「旧视图」的状态，也就是变化之前的截图，::view-transition-new表示「新视图」的状态，也就是变化之后的截图。</p><p>默认情况下，整个页面root都会作为一个状态，也就是上面的::view-transition-group(root)，在切换前后会执行淡入淡出动画，如下</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>::<span class="built_in">view-transition-new</span>(root) &#123;</span><br><span class="line">  <span class="attribute">animation-name</span>: -ua-view-transition-fade-in; <span class="comment">/*淡入动画*/</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-pseudo">:root</span>::<span class="built_in">view-transition-old</span>(root) &#123;</span><br><span class="line">  <span class="attribute">animation-name</span>: -ua-view-transition-fade-out; <span class="comment">/*淡出动画*/</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这也是为什么在使用了<code>document.startViewTransition</code>后整个页面会有淡入淡出的效果了</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eaf33ada1fd.gif!blogimg"></p><p>详细的内容这里不再做过多赘述。</p><p><a href="https://1024code.com/~anzhiyu/ogecw6q">最佳实践:《View Transitions API》</a></p><p>另外还有几个有趣的案例</p><ol><li><a href="https://1024code.com/codecubes/od7ai0p">《css动画拖拽排序》</a><br>  <img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eafc0b81637.gif!blogimg"></li><li><a href="https://1024code.com/codecubes/flb8khh">《数字过渡动画》</a><br>  <img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eafc0adfe9f.gif!blogimg"></li><li><a href="https://simple-set-demos.glitch.me/6-expanding-image/">类似于 APP 的转场动画（多页面跳转）</a><br>  <img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eafc0bc4393.gif!blogimg"></li></ol><p>总的来说，原生的视图转换动画可以很轻松的实现两种状态的过渡，让 web 也能实现媲美原生 APP 的动画体验，下面再来回顾一下整个变化过程：</p><ol><li><p>调用<code>document.startViewTransition</code>，浏览器会捕捉当前页面的状态，类似于实时截图，或者“快照”</p></li><li><p>执行实际的 dom 变化，再次记录变化后的页面状态（截图）</p></li><li><p>触发两者的过渡动画，包括透明度、位移等变化，也可以自定义 CSS 动画</p></li><li><p>默认情况下是整个页面的淡入淡出变化</p></li><li><p><code>::view-transition-old</code>表示<code>「旧视图」</code>的状态，也就是变化之前的截图，<code>::view-transition-new</code>表示<code>「新视图」</code>的状态，也就是变化之后的截图。</p></li><li><p>如果需要指定具体元素的变化，可以给该元素指定<code>view-transition-name</code></p></li><li><p>前后变化不一定要同一元素，浏览器是根据<code>view-transition-name</code>寻找的</p></li><li><p>同一时间页面上不能出现两个相同view-transition-name的元素，不然视图变化会失效</p></li></ol><p>另外，视图转换动画应该作为一种「体验增强」的功能，而非必要功能，在使用动画时其实拖慢了页面打开或者更新的速度，并且在动画过程中，页面是完全“冻结”的，做不了任何事情，因此需要衡量好动画的时间，如果页面本身就很慢就更不要使用这些动画了。</p><p>参考链接<br>[1] View Transitions： <a href="https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API">https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API</a></p><p>[2] view-transition sort (juejin.cn)： <a href="https://code.juejin.cn/pen/7268263402853072931">https://code.juejin.cn/pen/7268263402853072931</a></p><p>[3] view-transition sort (codepen.io)： <a href="https://codepen.io/xboxyan/pen/BavBevP">https://codepen.io/xboxyan/pen/BavBevP</a></p><p>[4] view-transition-dialog (juejin.cn)： <a href="https://code.juejin.cn/pen/7268262983178911779">https://code.juejin.cn/pen/7268262983178911779</a></p><p>[5] view-transition-dialog (codepen.io)： <a href="https://codepen.io/xboxyan/pen/WNLeBgY">https://codepen.io/xboxyan/pen/WNLeBgY</a></p><p>[6] view transition theme change - (juejin.cn)： <a href="https://code.juejin.cn/pen/7268257573277532219">https://code.juejin.cn/pen/7268257573277532219</a></p><p>[7] view transition theme change (codepen.io)： <a href="https://codepen.io/xboxyan/pen/poqzmLY">https://codepen.io/xboxyan/pen/poqzmLY</a></p><h2 id="css属性占用"><a href="#css属性占用" class="headerlink" title="css属性占用"></a>css属性占用</h2><p>问题的原因，众所周知，CSS 中的transform是一个包含很多值的属性，例如</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">1.5</span>)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>但是，这并不是简写，而是就该这么写，这一点和background不一样</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">url</span>(<span class="string">&#x27;1xxx&#x27;</span>) <span class="number">10px</span> <span class="number">10px</span> / <span class="number">20px</span> <span class="number">20px</span> no-repeat; </span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/*等同于以下写法*/</span></span><br><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">&#x27;1xxx&#x27;</span>); </span><br><span class="line">  <span class="attribute">background-position</span>: <span class="number">10px</span> <span class="number">10px</span>;</span><br><span class="line">  <span class="attribute">background-size</span>: <span class="number">20px</span> <span class="number">20px</span>;</span><br><span class="line">  <span class="attribute">background-repeat</span>: no-repeat;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>分开写的好处在于，如果只需要改变某一部分就很容易覆盖</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span><span class="selector-class">.div1</span>&#123;</span><br><span class="line">  <span class="attribute">background-image</span>: <span class="built_in">url</span>(<span class="string">&#x27;2xxx&#x27;</span>); <span class="comment">/*只改变图片，不改变其他*/</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>回到前面，如果希望改变transform中的某一部分，就不太行了，必须把没改变的部分也写一遍，而且更改的部分也无法抽离出来作为一个公共的样式</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span><span class="selector-class">.scale</span>&#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">scale</span>(<span class="number">2</span>) <span class="comment">/*这样不行，会丢失translate*/</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/*必须写完整*/</span></span><br><span class="line"><span class="selector-tag">div</span><span class="selector-class">.scale</span>&#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">2</span>)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>那如何巧妙的解决这个问题呢？</p><ol><li><p>用其他方式来代替 <code>transform</code><br> 碰到这种情况，第一感觉可能就是放弃原有<code>transform</code>属性，用其他方式代替。</p><p> 比如<code>translate(-50%, -50%)</code>一般是为了实现元素居中效果，可以用<code>flex</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></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.parent</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 class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">margin</span>: auto; <span class="comment">/*通过margin:auto实现居中*/</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 再比如<code>translate(10px, 10px)</code>这样的偏移，可以用<code>left</code>或者<code>margin-left</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">position</span>: relative;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">10px</span>;</span><br><span class="line">  <span class="attribute">top</span>: <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 或者干脆再包裹一层父级，也能避免<code>transform被占用</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></pre></td><td class="code"><pre><span class="line">&lt;<span class="selector-tag">div</span> class=&quot;wrap&quot;&gt;</span><br><span class="line">  &lt;<span class="selector-tag">div</span> class=&quot;box&quot;&gt;</span><br><span class="line">    </span><br><span class="line">  &lt;/<span class="selector-tag">div</span>&gt;</span><br><span class="line">&lt;/<span class="selector-tag">div</span>&gt;</span><br></pre></td></tr></table></figure><p> 不过，这些方式都是规避方式，其实还有官方解决方案</p></li><li><p>transform 的单独赋值<br> 前面提到过<code>transform</code>并不是一个简写属性，所以没有办法像<code>background</code>那样对某一部分进行赋值。为了解决这个问题，从<code>Chrome 104</code>开始，浏览器终于正式支持单独赋值了</p><blockquote><p>有兴趣的可以参考这篇文章：<a href="https://juejin.cn/post/7152331836578856967">解放生产力！transform 支持单独赋值改变</a></p></blockquote><p> 就拿前面那个例子来说</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">1.5</span>)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 可以写成</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-tag">div</span>&#123;</span><br><span class="line">  translate: -<span class="number">50%</span> -<span class="number">50%</span>;</span><br><span class="line">  scale: <span class="number">1.5</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 这样如果需要改变某一部分，就只需要像普通属性一样覆盖就行了</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span><span class="selector-class">.scale</span>&#123;</span><br><span class="line">  scale: <span class="number">2</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 不过目前兼容性欠佳，谨慎使用！（适合内部项目尝鲜）</p></li><li><p>借助 CSS 变量拆分属性</p><p> 前面的transform 的单独赋值虽然很好，但是太新了，无法立刻在项目中使用。下面介绍一个兼容性更好，使用更放心的解决方案。</p><p> 还是上面这个例子</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">1.5</span>)</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 通过 CSS 变量，将transform拆分</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attr">--translate</span>: -<span class="number">50%</span>, -<span class="number">50%</span>;</span><br><span class="line">  <span class="attr">--scale</span>: <span class="number">1.5</span>;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(<span class="built_in">var</span>(--translate)) <span class="built_in">scale</span>(<span class="built_in">var</span>(--scale))</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 经过这样拆分以后，CSS 变量就成了独立属性，如果需要覆盖，只需要修改其中一个就行了，而无需关注–translate是什么样的，这样变化的部分就可以单独作为一个公共的样式了，如下</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></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.div1</span>&#123;</span><br><span class="line">  <span class="attr">--translate</span>: -<span class="number">50%</span>, -<span class="number">50%</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.div1</span>&#123;</span><br><span class="line">  <span class="attr">--translate</span>: <span class="number">10px</span>, <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">div</span><span class="selector-class">.scale</span>&#123;</span><br><span class="line">  <span class="attr">--scale</span>: <span class="number">2</span>; <span class="comment">/*无需关注其他transform，可以作为公共的样式*/</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 是不是非常清晰明了？下面是一个演示demo</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></pre></td><td class="code"><pre><span class="line"><span class="selector-attr">[type=<span class="string">&quot;checkbox&quot;</span>]</span><span class="selector-pseudo">:checked</span>+<span class="selector-tag">div</span>&#123;</span><br><span class="line">  <span class="attr">--scale</span>: <span class="number">1.5</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p> 效果如下<br> <img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64eb017d190f1.gif!blogimg"></p><p> 完整代码可以查看以下任意链接：<br> <a href="https://codepen.io/xboxyan/pen/BaVLMpv">CSS transform (codepen.io)</a><br> <a href="https://code.juejin.cn/pen/7161704312681758755">CSS transform - 码上掘金 (juejin.cn)</a><br> <a href="https://runjs.work/projects/4714accc300d441a">CSS transform (runjs.work)</a></p></li></ol><p>动是动了，但是没有过渡，太生硬了，那如何解决呢？</p><p>这就需要用到<code>@property</code>了，是干什么的呢？简单来讲，可以自定义属性，让<code>自定义变量像颜色一样进行过渡和动画</code>，换句话说，现在执行动画的是<code>--scale</code>这个属性，而不再是<code>transform</code>了</p><p>将这个自定义属性通过@property定义一下就行了，如下</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">@property</span> --scale &#123; </span><br><span class="line">  syntax: <span class="string">&#x27;&lt;number&gt;&#x27;</span>;</span><br><span class="line">  inherits: false;</span><br><span class="line">  initial-value: <span class="number">1</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>关于<code>@property的应用</code>，可以参考以下文章</p><p>@property: <a href="https://developer.mozilla.org/zh-CN/docs/Web/CSS/@property">https://developer.mozilla.org/zh-CN/docs/Web/CSS/@property</a></p><p>其实不至于transform，很多类似的都可以用到这个技巧，比如颜色</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">el&#123;</span><br><span class="line">  <span class="attr">--r</span>: <span class="number">255</span>;</span><br><span class="line">  <span class="attr">--g</span>: <span class="number">255</span>;</span><br><span class="line">  <span class="attr">--b</span>: <span class="number">255</span>;</span><br><span class="line">  <span class="attribute">color</span>: <span class="built_in">rgb</span>(<span class="built_in">var</span>(--r), <span class="built_in">var</span>(--g), <span class="built_in">var</span>(--b));</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>总结一下</p><ol><li>部分 CSS 属性比较复杂，比如transform，很容易被占用</li><li>通常的解决方式是规避，比如换一种居中方式，或者用left、top等代替</li><li>新出现的transform 的单独属性可以解决这个问题，目前还比较新，仅适合内部项目尝鲜</li><li>借助 CSS 变量可以拆分复杂的属性</li><li>借助 @property 让CSS自定义属性支持过渡动画</li><li>不仅仅是 transform，思维放开，复杂的属性都可以采取这样的思路</li></ol><h2 id="CSS-scroll-driven-animations"><a href="#CSS-scroll-driven-animations" class="headerlink" title="CSS scroll-driven animations"></a>CSS scroll-driven animations</h2><p>CSS 滚动驱动动画，在<code>Chrome 115</code>中被支持。</p><p><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_scroll-driven_animations">https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_scroll-driven_animations</a></p><p>可以参考这篇文章学习<a href="https://mp.weixin.qq.com/s/xpMXcFTz53S2E1ntlvtZ0A">CSS 滚动驱动动画终于正式支持了~</a></p><p>文章略长，建议收藏后反复查阅</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;p&gt;在遇到内外两层圆角时，可以通过 CSS 变量动态去计算内部的圆角，看起来会更加和谐&lt;/p&gt;
&lt;p&gt;&lt;img src=</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="前端" scheme="https://blog.anheyu.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="开发" scheme="https://blog.anheyu.com/tags/%E5%BC%80%E5%8F%91/"/>
    
    <category term="css3" scheme="https://blog.anheyu.com/tags/css3/"/>
    
  </entry>
  
  <entry>
    <title>什么是CDN？它解决了什么难题？国内CDN加Vercel，无服务器使用办法</title>
    <link href="https://blog.anheyu.com/posts/136a.html"/>
    <id>https://blog.anheyu.com/posts/136a.html</id>
    <published>2023-08-26T03:24:00.000Z</published>
    <updated>2023-09-02T07:05:57.204Z</updated>
    
    <content type="html"><![CDATA[<p>最近遇到了部分地区vercel即便绑定了自定义域名任然有部分用户无法访问被阻断的情况，于是就打算给vercel套一层国内CDN，既然用户无法访问vercel的ip，那么就让用户去访问国内 CDN的节点，然后再让节点去回源访问vercel即可。</p><p>该教程适用于无服务器的情况，如果有自己的服务器就没必要多此一举，而是可以直接使用国内CDN即可。注意大部分国内 CDN使用需要域名进行备案。</p><h2 id="什么是CDN"><a href="#什么是CDN" class="headerlink" title="什么是CDN?"></a>什么是CDN?</h2><p>CDN英文全称<code>Content Delivery Network</code>，中文翻译即为内容分发网络。它是建立并覆盖在承载网之上，由分布在不同区域的边缘节点服务器群组成的分布式网络。</p><p>简而言之就是，厂商在全国各地都有很多很多的服务器，每一个服务器我们称之为节点，很多的节点组成了CDN。</p><h2 id="CDN工作原理"><a href="#CDN工作原理" class="headerlink" title="CDN工作原理"></a>CDN工作原理</h2><p>CDN的工作原理就是将源站的资源缓存到位于全国各地的CDN节点上，用户请求资源时，就近返回节点上缓存的资源，而不需要每个用户的请求都回您的源站获取，避免网络拥塞、分担源站压力，保证用户访问资源的速度和体验。 </p><p>在用户与源站之间加了一层CDN，用户先访问 CDN的节点，CDN节点再去源站拿取内容，当用户第二次访问的时候就会直接返回节点上缓存的内容，由于节点离用户近，所以用户拿到资源的速度就会缩短，访问也就变快了。</p><p><strong>访问优先级</strong><br>通常情况下，中国内地的网络质量有以下特点：<br>用户访问同运营商的 IP 地址过程中的网络质量优于访问跨运营商的 IP 地址过程中的网络质量。<br>用户访问同省运营商的 IP 地址过程中的网络质量优于访问跨省运营商的 IP 地址过程中的网络质量。<br>用户访问跨省同运营商的 IP 地址过程中的网络质量优于访问同省跨运营商的 IP 地址过程中的网络质量。</p><h2 id="自定义域名解析"><a href="#自定义域名解析" class="headerlink" title="自定义域名解析"></a>自定义域名解析</h2><p>在域名服务商进行域名解析</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/27/64ead92ecac02.png!blogimg"></p><p>分两种情况，你要接入的国内CDN是否支持自定义host(目前测试腾讯云、多吉云都支持)</p><p><strong>国内CDN支持自定义host</strong></p><p><code>docs.anheyu.com</code> 境内地区 通过cname解析 到对应的国内CDN提供的cname域名<br><code>docs.anheyu.com</code> 境外地区 通过cname解析 到<code>cname.vercel-dns.com</code>，来通过vercel的校验</p><p><strong>国内CDN不支持自定义host</strong></p><p><code>docs.anheyu.com</code> 境内地区 通过cname解析 到对应的国内CDN提供的cname域名<br><code>docs.anheyu.com</code> 境外地区 通过cname解析 到<code>cname.vercel-dns.com</code>，来通过vercel的校验<br><code>vcl-docs.anheyu.com</code> 通过cname解析 到<code>cname-china.vercel-dns.com</code>，来通过vercel的校验</p><h2 id="vercel配置"><a href="#vercel配置" class="headerlink" title="vercel配置"></a>vercel配置</h2><p>我以文档域名 <code>docs.anheyu.com</code> 举例，将项目部署在vercel以后先绑定自定义域名</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/26/64e9ce5ed51a1.png!blogimg" alt="vercel绑定自定义域名"></p><p>如果你的国内CDN支持自定义host的话，只需要绑定一个自定义域名即可，如果你的国内CDN不支持自定义host的话，需要绑定两个自定义域名，此处我绑定了两个作为演示。</p><p>国内大厂CDN一般都支持自定义回源host</p><p>目前测试过<a href="https://www.dogecloud.com/?iuid=4945">多吉云</a>，<a href="https://cloud.tencent.com/">腾讯云</a>都是支持自定义回源host的</p><h2 id="配置国内CDN"><a href="#配置国内CDN" class="headerlink" title="配置国内CDN"></a>配置国内CDN</h2><p>以<a href="https://www.dogecloud.com/?iuid=4945">多吉云</a>为例(毕竟免费 20G，还能设置封顶策略)</p><p>进入域名管理添加域名</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/26/64e9cfe31e117.webp!blogimg" alt="进入域名管理"></p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/26/64e9d09b7ddeb.png" alt="添加加速域名"></p><p><strong>国内CDN支持自定义host</strong><br>回源域名填写 <code>cname-china.vercel.com</code><br>回源host选择 与加速域名一致 即为 <code>docs.anheyu.com</code></p><p>改动回源host的目的是为了让vercel那边知道你需要回源到的域名。</p><p><strong>国内CDN不支持自定义host</strong><br>如果你的国内CDN不支持选择回源host的话，你就需要使用到刚刚绑定的第二个自定义域名：<br>回源域名填写 <code>vcl-docs.anheyu.com</code><br>回源host就自动会和回源域名一致，就不用担心这个问题了，因为你直接回源到了一个国内能够被访问的域名<code>vcl-docs.anheyu.com</code>。</p><div class="note warning flat"><p>配置完了以后记得需要在国内 CDN这边上传自己的 ssl证书，否则会报ssl错误。</p></div><h2 id="写在最后"><a href="#写在最后" class="headerlink" title="写在最后"></a>写在最后</h2><blockquote><p>为什么不直接回源vercel自带的.app域名？</p></blockquote><p>因为vercel自带的.app域名目前被墙，国内CDN无法访问回源到vercel自带的.app域名，所以也就无法加速呈现出内容了。</p><p>如果还有其他问题欢迎一起探讨，目前主题文档使用的就是这种方式来解决的部分地区无法解决的问题。</p><blockquote><p>为什么不直接使用多吉云放服务器上加速？</p></blockquote><p>一开始就说了，因为文档压根就没有想过要放在自己服务器上，一来是为了防止被攻击，毕竟vercel免费，但是如果有自己的服务器的话，还是建议直接放服务器上面进行加速，速度会更加可观，钱也很可观。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;最近遇到了部分地区vercel即便绑定了自定义域名任然有部分用户无法访问被阻断的情况，于是就打算给vercel套一层国内CDN，既然用户无法访问vercel的ip，那么就让用户去访问国内 CDN的节点，然后再让节点去回源访问vercel即可。&lt;/p&gt;
&lt;p&gt;该教程适用于无服</summary>
      
    
    
    
    <category term="网络安全" scheme="https://blog.anheyu.com/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    
    <category term="CDN" scheme="https://blog.anheyu.com/tags/CDN/"/>
    
  </entry>
  
  <entry>
    <title>腾讯出品免费logo制作神器AI Logo,腾讯这次真的良心了</title>
    <link href="https://blog.anheyu.com/posts/8105.html"/>
    <id>https://blog.anheyu.com/posts/8105.html</id>
    <published>2023-08-19T02:42:00.000Z</published>
    <updated>2023-08-19T05:27:04.877Z</updated>
    
    <content type="html"><![CDATA[<p>今天我要向大家推荐一款由腾讯出品的免费Logo制作神器——AI Logo。这次腾讯真的很良心！您可以访问<a href="https://ailogo.qq.com/guide/brandname">AI Logo官方网站</a>开始体验。</p><h2 id="什么是AI-Logo？"><a href="#什么是AI-Logo？" class="headerlink" title="什么是AI Logo？"></a>什么是AI Logo？</h2><p>AI Logo是一款基于人工智能技术的Logo设计工具，旨在帮助用户快速创建独特、专业的Logo设计。它提供了丰富的设计元素、字体和图标，让您能够轻松制作出符合品牌形象的Logo，10秒创建您的LOGO！</p><h2 id="如何使用AI-Logo？"><a href="#如何使用AI-Logo？" class="headerlink" title="如何使用AI Logo？"></a>如何使用AI Logo？</h2><p>访问<a href="https://ailogo.qq.com/guide/brandname">AI Logo官方网站</a></p><ol><li><p>输入你的logo名字<br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/19/64e029fda6e0f.webp!blogimg"></p></li><li><p>选择行业分类，我这边选择一手元宇宙🤣<br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/19/64e029fdb0381.webp!blogimg"></p></li><li><p>选择联想关键词<br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/19/64e029fd933f7.webp!blogimg"></p></li><li><p>选择喜欢的主色<br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/19/64e029fd88618.webp!blogimg"></p></li><li><p>生成成功，可以直接选择进行下载<br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/19/64e029fd8dd9f.webp!blogimg"></p></li></ol><p>在设计界面上，可以选择使用智能生成的设计方案，或者自行选择设计元素进行定制。</p><p>根据需求，对Logo进行调整、修改和优化，直到满意为止。</p><p>完成Logo设计后，可以选择下载Logo文件，保存到本地。</p><p>值得注意的是生成后的图片，左上角都有标注是<code>商用许可</code>或<code>个人许可</code></p><h2 id="主要特点"><a href="#主要特点" class="headerlink" title="主要特点"></a>主要特点</h2><ol><li><p>免费使用<br>AI Logo是一款完全免费的Logo制作工具，无需支付任何费用即可使用其中的所有功能。这对于初创企业、个人创作者或需要频繁设计Logo的用户来说，无疑是一个非常好的选择。</p></li><li><p>简单易用<br>AI Logo的用户界面简洁明了，操作简单易上手。即使没有设计经验，也可以通过简单的拖拽、调整和选择来创建出令人满意的Logo设计。</p></li><li><p>丰富的设计元素<br>AI Logo提供了大量的设计元素选择，包括不同风格的图标、字体、形状和背景等。可以根据自己的品牌定位和需求，自由组合这些元素，创造出独一无二的Logo设计。</p></li><li><p>智能生成<br>AI Logo利用人工智能技术，能够根据提供的关键词和品牌信息，智能生成一系列与之相关的Logo设计方案。这节省了大量的时间和精力，可以更快地找到满意的设计。</p></li><li><p>定制化选项<br>除了智能生成的设计方案，AI Logo还提供了丰富的定制化选项。可以对已有的设计进行调整、修改和优化，以满足个性化的需求。</p></li></ol><h2 id="缺点"><a href="#缺点" class="headerlink" title="缺点"></a>缺点</h2><ol><li>目前无法做去除文字的logo，不过可以用ps解决</li><li>另外无法调节尺寸下载</li><li>无法按照商用或者个人使用进行搜索</li></ol><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>AI Logo作为腾讯出品的免费Logo制作神器，为用户提供了简单、快速、免费的Logo设计体验。终于出现了一个类似<a href="https://app.brandmark.io/v3/">Brandmark</a>的竞品，希望越做越好，后面不要改成什么金币、积分制作(💦)</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;今天我要向大家推荐一款由腾讯出品的免费Logo制作神器——AI Logo。这次腾讯真的很良心！您可以访问&lt;a href=&quot;https://ailogo.qq.com/guide/brandname&quot;&gt;AI Logo官方网站&lt;/a&gt;开始体验。&lt;/p&gt;
&lt;h2 id=&quot;什么是A</summary>
      
    
    
    
    <category term="平面设计" scheme="https://blog.anheyu.com/categories/%E5%B9%B3%E9%9D%A2%E8%AE%BE%E8%AE%A1/"/>
    
    
    <category term="AI" scheme="https://blog.anheyu.com/tags/AI/"/>
    
    <category term="绘图" scheme="https://blog.anheyu.com/tags/%E7%BB%98%E5%9B%BE/"/>
    
    <category term="Logo" scheme="https://blog.anheyu.com/tags/Logo/"/>
    
  </entry>
  
  <entry>
    <title>当AI加上PS后让我变的极为振奋(附mac安装ps beta25.0)教程</title>
    <link href="https://blog.anheyu.com/posts/4eb4.html"/>
    <id>https://blog.anheyu.com/posts/4eb4.html</id>
    <published>2023-08-18T03:24:00.000Z</published>
    <updated>2023-08-23T05:06:30.702Z</updated>
    
    <content type="html"><![CDATA[<p>在当今的数字时代，人工智能（AI）和图像处理软件如Adobe Photoshop（PS）已经成为创意设计和图像编辑的重要工具。当AI碰上PS，可以创造出令人惊叹的创意式生成作品。本教程将向您介绍如何在Mac上安装PS Beta 25.0，并展示一些创意式生成的示例。</p><h2 id="步骤一：安装PS-Beta-25-0"><a href="#步骤一：安装PS-Beta-25-0" class="headerlink" title="步骤一：安装PS Beta 25.0"></a>步骤一：安装PS Beta 25.0</h2><p>首先，访问<a href="https://www.adobe.com/cn/downloads.html">Adobe官方网站</a>并登录您的Adobe账号，如果没有账号就注册一个，注意一定要选择<code>美国区</code>注册。</p><p>下载 <a href="https://www.adobe.com/cn/downloads.html">Creative Cloud</a></p><p>导航到PS Beta页面，下载适用于Mac的PS Beta 25.0安装程序。</p><p>完成下载后，运行安装程序并按照提示进行安装。</p><p>安装完成后，打开PS Beta 25.0并登录您的Adobe账号。</p><p>找到Beta 应用程序中的Photoshop (Beta)，点击右侧的试用，等待下载完成，完成安装后打开可以直接使用，试用7天</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/18/64dee85c40ac5.webp!blogimg" alt="下载PS Beta"></p><h2 id="步骤二：了解AI与PS的结合"><a href="#步骤二：了解AI与PS的结合" class="headerlink" title="步骤二：了解AI与PS的结合"></a>步骤二：了解AI与PS的结合</h2><p>使用选区工具选中你的选区，然后直接输入你想生成的内容，即可得到一张从无到有的图片</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/18/64dee9502c79a.webp!blogimg"><br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/18/64dee9502d7f4.webp!blogimg"></p><p>生成完成以后，右侧一共提供了3种可以变换的选项，可以选择喜欢的或者继续生产新的内容</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/08/18/64dee9502733f.webp!blogimg"></p><p>以下我会列出部分目前能够完成的功能,AI技术在PS中的应用为创意设计带来了全新的可能性。</p><ol><li><p>AI辅助选择器<br>PS中的智能选择工具结合AI技术，可以更准确地选择图像中的对象。通过使用智能选择工具，您可以快速选择并提取图像中的特定对象，从而为后续编辑操作节省时间。</p></li><li><p>AI图像修复<br>AI技术可以帮助修复图像中的缺陷和损坏。PS中的内容感知填充工具结合AI算法，可以智能地填充图像中的缺失部分，使修复过程更加高效和准确。</p></li><li><p>AI图像生成<br>AI技术可以生成逼真的图像内容。通过使用PS中的AI生成工具，您可以快速生成风景、人物或其他对象的逼真图像，为您的创意设计提供更多素材选择。</p></li><li><p>支持中文<br>拥有良好的中文支持，并且不需要翻墙，这一点在国内使用尤为舒适，且生成速度也能接受。</p></li><li><p>艺术风格转换<br>使用AI技术和PS的滤镜功能，可以将一幅照片转换为特定艺术风格的图像。尝试将一张普通照片转换为梵高或毕加索的风格，观察AI如何改变图像的外观和氛围。</p></li><li><p>智能合成<br>利用AI技术和PS的图层功能，可以将多张照片合成为一个完整的场景。尝试将不同的照片元素（如天空、建筑、人物）合成在一起，创造出令人惊叹的视觉效果。</p></li><li><p>文字识别与编辑<br>借助AI技术和PS的文字识别功能，可以从图像中提取文字并进行编辑。尝试从一张图片中提取文字，然后对其进行修改、替换或添加效果，使文字与图像融为一体。</p></li></ol><h2 id="步骤三-永久无限制使用"><a href="#步骤三-永久无限制使用" class="headerlink" title="步骤三: 永久无限制使用"></a>步骤三: 永久无限制使用</h2><p>这里我提供一个补丁beta25.0 mac版本的补丁，官方的安装完以后直接运行补丁就能永久使用了。</p><p>提取码: <code>yuyu</code></p><div class="btns rounded center wide">            <a class="button no-text-decoration" href='https://www.123pan.com/s/E8H7Vv-1otov.html提取码:yuyu' title='Photoshop (Beta25.0) MAC补丁'><i class='anzhiyufont anzhiyu-icon-sign-out-alt'></i>Photoshop (Beta25.0) MAC补丁</a>          </div><h2 id="内容测试"><a href="#内容测试" class="headerlink" title="内容测试"></a>内容测试</h2><p>经过测试并不是所有内容都能生成，生成是经过了Adobe服务器的，所以不能生成瑟瑟内容，存在违规检测！<br><img src="https://img02.anheyu.com/adminuploads/1/2023/08/18/64deed0828967.webp!blogimg"></p><h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><p>AI与PS的结合为创意设计带来了无限的可能性。通过安装PS Beta 25.0并探索AI与PS的创意式生成功能，可以开拓创作的新领域，创造出令人振奋的作品。希望本教程对您有所帮助！</p><p>请注意，PS Beta版本可能存在一些实验性功能和限制，使用时请谨慎。如果您在使用过程中遇到任何问题，请参考Adobe官方文档或寻求相关支持。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在当今的数字时代，人工智能（AI）和图像处理软件如Adobe Photoshop（PS）已经成为创意设计和图像编辑的重要工具。当AI碰上PS，可以创造出令人惊叹的创意式生成作品。本教程将向您介绍如何在Mac上安装PS Beta 25.0，并展示一些创意式生成的示例。&lt;/p&gt;</summary>
      
    
    
    
    <category term="平面设计" scheme="https://blog.anheyu.com/categories/%E5%B9%B3%E9%9D%A2%E8%AE%BE%E8%AE%A1/"/>
    
    
    <category term="AI" scheme="https://blog.anheyu.com/tags/AI/"/>
    
    <category term="PS" scheme="https://blog.anheyu.com/tags/PS/"/>
    
    <category term="绘图" scheme="https://blog.anheyu.com/tags/%E7%BB%98%E5%9B%BE/"/>
    
  </entry>
  
  <entry>
    <title>CNAME解析至cf：分流解析cloudflare处理国外请求</title>
    <link href="https://blog.anheyu.com/posts/40fd.html"/>
    <id>https://blog.anheyu.com/posts/40fd.html</id>
    <published>2023-07-23T01:55:44.000Z</published>
    <updated>2023-08-15T11:08:45.377Z</updated>
    
    <content type="html"><![CDATA[<p>在受到过一次教训后，得出结论，完全解析至不可访问的界面并不是最优解，在受到小伙伴的提醒后发现，起码会让必应的搜索结果变的很奇怪。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd023c00790.png!blogimg"></p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd027486d12.png!blogimg"></p><p>那么，我得找到一个能在国外也访问我博客的办法，但是同时也要能狗抵御住一般的攻击，很快我想到了<a href="https://cloudflare-cn.com/">cloudflare</a></p><p>我们可以把境内的正常解析到我们的境内CDN上或者源站服务器上，将境外的接入到<a href="https://cloudflare-cn.com/">cloudflare</a></p><p>说干就干</p><h2 id="域名接入cloudflare"><a href="#域名接入cloudflare" class="headerlink" title="域名接入cloudflare"></a>域名接入cloudflare</h2><p>此处不再赘述如何创建cloudflare账号，在<a href="https://cloudflare-cn.com/">cloudflare官网</a>创建好账号后</p><ol><li>登录 &#x3D;&gt; 主页 &#x3D;&gt; 添加网站</li></ol><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0c9d6d6b3.webp!blogimg" alt="添加网站"></p><ol start="2"><li>输入你的域名</li></ol><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0cfdc733a.png!blogimg" alt="输入你的域名"></p><ol start="3"><li>选择Free计划</li></ol><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0d426c037.png!blogimg" alt="选择Free计划"></p><ol start="4"><li>cloudflare会扫描已有DNS记录，将已有的DNS记录添加进去，这一步很重要，防止出现服务中断，如果这一步没做好，可能会有部分站点后面没有解析导致出现网站不可访问的现象，将所有已经有的解析记录都在这一步加好。</li></ol><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0d8187168.png!blogimg"></p><ol start="5"><li>获取到cloudflare到NS服务器地址</li></ol><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0e56a1fb3.png!blogimg"></p><ol start="6"><li>登录你的域名厂商解析修改域名的DNS服务器，此处以腾讯云举例</li></ol><p>  打开 <a href="https://console.cloud.tencent.com/domain/all-domain">域名控制台</a> 点击<code>修改DNS服务器地址</code></p><p>  <img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0ee9a00b9.webp!blogimg"></p><p>  添加上刚刚在cloudflare获取到的DNS服务器地址，两个都加上，此时只是暂时改，为了通过✅cloudflare的监测，通过以后就可以改回来了。</p><p>  <img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd0f415a06b.png!blogimg"></p><ol start="7"><li>等待⌛️10分钟左右，cloudflare会发送一封邮件📧 说明DNS服务器修改成功，改成功以后就可以正式开始接入了，在左侧的DNS-&gt;记录可以找到你的所有记录，在这里可以把你的解析记录都加好，解析到你的服务器上，并且打开代理状态的小云朵☁️，亮起则代表，cloudflare正在代理你的流量，才能起到防护作用，否则只有解析作用。</li></ol><p>  <img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd10c04caeb.png!blogimg"><br>8. 左侧的DNS-&gt;记录中，最下面可以看到一开始你验证的时候的NS值，将这个NS值复制下来，然后到腾讯云进行境外解析，添加NS记录，记得需要两条，这样一个域名，在腾讯云就有三条解析记录，在cloudflare有一条。<br>  <img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd11f3a3485.png!blogimg"></p><ol start="9"><li>最后再在腾讯云将DNS服务器改回来dnspod</li></ol><p>  <img src="https://img02.anheyu.com/adminuploads/1/2023/07/23/64bd12a09754f.png!blogimg"></p><p>  就可以达到境内解析为国内CDN，境外解析为cloudflare防护。</p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>弊端1：不适用于根域名，只能子域名（二级域名等）使用NS解析过去<br>弊端2：依赖于dnspod的解析ip池判断，某些地区可能存在判断错误（移动尤为明显）</p><p>优势：免费的要什么自行车</p><p>总的来说还是很不错的，值得一试，另外也可以将境外的解析到奇安信CDN上，也能达到类似的效果。</p>]]></content>
    
    
    <summary type="html">如何分流解析cloudflare处理国外请求</summary>
    
    
    
    <category term="网络安全" scheme="https://blog.anheyu.com/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    
    <category term="网络安全" scheme="https://blog.anheyu.com/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
  </entry>
  
  <entry>
    <title>网络安全方向：10分钟2700w请求的攻击我是如何处理的</title>
    <link href="https://blog.anheyu.com/posts/dfb3.html"/>
    <id>https://blog.anheyu.com/posts/dfb3.html</id>
    <published>2023-07-16T01:55:44.000Z</published>
    <updated>2023-08-22T10:15:43.507Z</updated>
    
    <content type="html"><![CDATA[<p>昨天2023年7月16日，本站遇到了搭建博客以来最大的攻击，10分钟2700w的请求🙏，峰值达到了令人震惊的1400w！</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/16/64b374b85aef1.webp!blogimg"></p><p>从时间上来看，<code>18:40</code>到<code>18:50</code>，短短10分钟，几乎是一瞬间就被请求了https数2000万次，多吉云在<code>20:00</code>给我发送了请求数激增到<code>2000w</code>的短信</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/16/64b375bb765c8.webp!blogimg"></p><p>我立马反应过来，登录控制台一看，哦豁，由于之前换了域名，还没来的及设置<code>QPS 限制</code>，于是就被钻空子了</p><h2 id="什么是QPS-限制？"><a href="#什么是QPS-限制？" class="headerlink" title="什么是QPS 限制？"></a>什么是QPS 限制？</h2><p>超出 QPS 限制的请求会直接返回错误，设置较低频次限制可能会影响正常用户的使用，请根据业务情况合理设置阈值。<br>被 QPS 限制拦截的请求不会产生 HTTPS 请求数计费。但需要特别注意的是，当请求被“域名防盗链”规则优先拦截后，无论是否超过 QPS 限制，都将进行 HTTPS 请求数计费。</p><p>比如我设置为<code>120次/s</code>，那么一个ip在1s内只能请求当前域名120次，将QPS设置在一个合理的范围内将能够很大程度上的保护你的站点，设置过低将降低正常用户的访问。</p><h2 id="日志查看"><a href="#日志查看" class="headerlink" title="日志查看"></a>日志查看</h2><p>设置好QPS以后，我痛定思痛，将多吉云提供的将近3G的日志下载了下来</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/16/64b3ec3092400.png!blogimg"></p><p>下载下来vscode打开一看，好家伙，上百万行数据，随便搜索了一下，无一例外，全是国外ip</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/16/64b3ed84d0e1f.png!blogimg"></p><h2 id="痛定思痛"><a href="#痛定思痛" class="headerlink" title="痛定思痛"></a>痛定思痛</h2><p>首先一定要设置好QPS和每日上限，我目前每日上限设置为5G，QPS为20&#x2F;s</p><p>经过仔细观察可以发现，几乎所有的攻击都来自海外，所以我们需要屏蔽海外的流量，首先<code>Nginx防火墙</code>，从Nginx下手其实并不是最优解，因为即便是在Nginx将所有的海外ip都封禁了，但是由于我有使用CDN，也就是说，流量还是会<code>先经过CDN</code>再来到<code>Nginx防火墙</code>，依然被刷掉了CDN的https次数，所以我们应该另外寻找办法</p><p>首先我们可以想到在机房层面屏蔽海外ip和udp，这是最优解，但是总是调整或者经常联系机房对我这个社恐来说是不现实的，于是我看上了第二种办法。</p><p>那就是从解析层面处理，使用<a href="https://www.dnspod.cn/">DNSPod</a>解析是支持境内与境内分开解析的，将境内解析到国内CDN以后，再将境外解析到127.0.0.1即可解决问题。</p><p>但是解析到127.0.0.1以后使用境外ip是完全打不开了，所以我做了一个单页面用来提示境外访问使用境内网络环境访问。</p><p>项目地址: <a href="https://github.com/anzhiyu-c/OverseasProhibition">https://github.com/anzhiyu-c/OverseasProhibition</a></p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/16/64b3f1de49bf3.webp"></p><p>然后使用cname这个单页网站解析到vercel</p><p>直接在vercl导入github项目后绑定自定义域名</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/16/64b3f26ad541c.webp!blogimg"></p><p>至此算是做了我能想到的所有努力，欢迎大家补充。</p>]]></content>
    
    
    <summary type="html">10分钟2700w请求的攻击我是如何处理的</summary>
    
    
    
    <category term="网络安全" scheme="https://blog.anheyu.com/categories/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
    
    <category term="网络安全" scheme="https://blog.anheyu.com/tags/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/"/>
    
  </entry>
  
  <entry>
    <title>通义万相上手体验</title>
    <link href="https://blog.anheyu.com/posts/2594.html"/>
    <id>https://blog.anheyu.com/posts/2594.html</id>
    <published>2023-07-09T03:45:00.000Z</published>
    <updated>2023-09-09T03:59:35.695Z</updated>
    
    <content type="html"><![CDATA[<p>前两天通过了<a href="https://wanxiang.aliyun.com/">通义万相</a>的适用体验，一番试用下来，感触最深的便是，当今AI横行，唯有融入并去接受他们才能适应时代。</p><p>在我的使用场景下，一般是生成封面图，或者一些唯美超现实主义的图片，相比<code>midjourney</code>绘制的图，二者对我而言<strong>都一样</strong>。因为二者都能达到我的使用要求。</p><h2 id="通义万相"><a href="#通义万相" class="headerlink" title="通义万相"></a>通义万相</h2><p>作为阿里推出的一款大模型AI绘画，每日免费使用50次，一般的用户基本都能满足，这点让我极其舒适，也就不必再去续费<code>midjourney</code>了（偷笑😏），能够使用中文绘制。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/09/64aa54516b47d.webp!blogimg"></p><p>可选的绘制比例有<code>1:1</code>,<code>16:9</code>,<code>9:16</code></p><p>绘制时间一般在<code>1分钟以内</code>，算是比较快的了，可能和描述的多少有关。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/09/64aa545164658.webp!blogimg"></p><p>有时候它也会无法绘制（会返还灵感值），猜测使用英文绘制会更好，也许中文支持并没有那么高。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/09/64aa54516ffe4.webp!blogimg"></p><p>绘制后会产生4张图片，也能够继续选择风格继续生成。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/09/64aa54518f442.webp!blogimg"></p><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>总而言之，能用，但是如果抱有很高的期待估计不行，国产AI，任重道远。</p><blockquote><p>以下评价由chatGPT生成<br>  通义万相，是一个奇妙而令人陶醉的体验。当你进入这个神奇的场所时，你将被环绕在美学与艺术的氛围中，仿佛穿越到了一个超现实的世界。<br>  在通义万相中，每一个细节都充满了独特的魅力。你会发现自己被无尽的创意和惊喜所包围，每一步都带来一种新奇的体验。这里是一个融合了音乐、视觉艺术和互动装置的综合体，它将唤起你内心深处的感官共鸣。<br>  当你触摸艺术品的时候，你会感受到一种奇妙的交互体验。声音和图像交织在一起，创造出一种前所未有的感官盛宴。每一次呼吸、每一次动作都会与艺术融为一体，让你感受到无比的连结和共振。<br>  通义万相是一个无边界的创意空间，它鼓励你尽情释放内心的想象力。你可以探索各种艺术形式，沉浸在色彩斑斓的光影中，感受音乐的魅力，与装置艺术互动。这里没有束缚，只有自由和无限的可能性。<br>  在通义万相中，你将发现自己重新与内心对话，发现被埋藏的感官和情感。这是一个让你逃离现实束缚、融入艺术的仙境。在这里，时间似乎慢下来，你可以尽情感受每一刻的美好，让自己沉浸在艺术的海洋中。<br>  通义万相的体验感受难以言喻，因为它触及了我们深藏的灵魂。它让我们重新审视世界，从不同的角度看待生活。在这里，你会被艺术的魔力所吸引，被创造力的火花所点燃，成为那个不受拘束的自己。<br>  加入通义万相，让自己沉浸在艺术的世界中，感受创造力的奇迹。这将是一次前所未有的体验，让你的心灵得到滋养，灵感得以释放，并在美与想象的交汇处找到真正的自我。来吧，让我们一起探索通义万相，开启一段令人难忘的艺术之旅。</p></blockquote>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;前两天通过了&lt;a href=&quot;https://wanxiang.aliyun.com/&quot;&gt;通义万相&lt;/a&gt;的适用体验，一番试用下来，感触最深的便是，当今AI横行，唯有融入并去接受他们才能适应时代。&lt;/p&gt;
&lt;p&gt;在我的使用场景下，一般是生成封面图，或者一些唯美超现实主义的图</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="AI" scheme="https://blog.anheyu.com/tags/AI/"/>
    
    <category term="绘图" scheme="https://blog.anheyu.com/tags/%E7%BB%98%E5%9B%BE/"/>
    
  </entry>
  
  <entry>
    <title>html 属性Accesskey详细解析</title>
    <link href="https://blog.anheyu.com/posts/e140.html"/>
    <id>https://blog.anheyu.com/posts/e140.html</id>
    <published>2023-07-01T03:45:00.000Z</published>
    <updated>2023-09-02T04:32:17.698Z</updated>
    
    <content type="html"><![CDATA[<p><code>accesskey</code>是一个在国内很冷门的属性，一般只有做无障碍才需要使用到它，目前我发现的国内网站有使用的一个是<a href="https://www.taobao.com/">淘宝</a>，另一个是<a href="https://www.jd.com/">京东</a>，此处点名表扬👍，现在也有越来越多的网站在使用这个属性，并且国内的很多网站都开始支持起了无障碍，目前 微博，京东，淘宝等都支持无障碍通道模式。</p><p>我们来仔细看看京东和淘宝是怎么做的，不难发现它们都是在同一个地方使用了这个属性，那就是搜索🔍!</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="3">    <span class="gallery-data">[{"url":"https://img02.anheyu.com/adminuploads/1/2023/07/01/64a01fd29c767.webp!blogimg","alt":""},{"url":"https://img02.anheyu.com/adminuploads/1/2023/07/01/64a020547c995.webp!blogimg","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><h2 id="简介ℹ️"><a href="#简介ℹ️" class="headerlink" title="简介ℹ️"></a>简介ℹ️</h2><p>在HTML4.0.1的时候，HTML accesskey属性请可以作用在以下元素上：<code>&lt;a&gt;</code>, <code>&lt;area&gt;</code>, <code>&lt;button&gt;</code>, <code>&lt;input&gt;</code>, <code>&lt;label&gt;</code>, <code>&lt;legend&gt;</code>以及<code>&lt;textarea&gt;</code>元素。然后到了HTML5规范的时候，<code>accesskey</code>属性可以作用在任意的元素上，变成了“全局属性”，但是由于它糟糕的浏览器支持⬆️，依然只建议在这些元素上使用。</p><h2 id="基本使用"><a href="#基本使用" class="headerlink" title="基本使用"></a>基本使用</h2><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">accesskey</span>=<span class="string">&quot;s&quot;</span> <span class="attr">href</span>=<span class="string">&quot;&quot;</span>&gt;</span>自定义快捷访问搜索<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><p>这里的属性值 <code>s</code> 对应的就是键盘上的<code>字母s</code>，如果是<code>accesskey=&quot;1&quot;</code>则<code>1</code>对应的就是键盘上的<code>数字1</code>。</p><p>需要注意的是，虽然说<code>accesskey</code>属性值和键盘相对应，但并不是说直接按下这个键，就能快捷访问。浏览器是通过快捷键组合访问的形式进行页面元素的快速访问的，下面是一张交互图。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/07/01/64a0231d0059e.png!blogimg"></p><p>MDN文档显示<code>Opera浏览器</code>是：<code>Shift + Esc</code> 打开可访问的快捷键定义列表，此时可以按下对应的 key 进行访问。但是根据自己的测试，<code>Shift + Esc</code> 打开的是浏览器的任务管理器，和<code>Chrome浏览器</code>一致。我想，MDN文档对Opera的描述应该是Opera还没有采用Blink内核之前的行为吧，所以现在应该是和<code>Chrome</code>一致了。</p><p><code>IE浏览器</code>和<code>Chrome浏览器</code>的组合键是一样的，但是其交互行为却和其他浏览器不一样，举个例子：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">accesskey</span>=<span class="string">&quot;s&quot;</span> <span class="attr">href</span>=<span class="string">&quot;&quot;</span>&gt;</span>自定义快捷访问搜索链接<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><p>在windows操作系统下，按下<kbd>ctrl</kbd> + <kbd>s</kbd>，IE浏览器只是让<code>&lt;a&gt;元素</code>获得焦点，但是其他所有浏览器都是直接触发click行为。在我看来，IE浏览器的这种行为是不友好的，对于普通的控件元素而言，还可以获得焦点后回车访问，但是，对于类似<code>&lt;div&gt;这类元素</code>，<code>accesskey属性</code>几乎是没有任何意义的，因为根本无法通过键盘触发<code>&lt;div&gt;</code>点击行为。而<code>Chrome等浏览器</code>就没有这个问题，如下HTML：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">accesskey</span>=<span class="string">&quot;s&quot;</span> <span class="attr">href</span>=<span class="string">&quot;&quot;</span>&gt;</span>测试自定义快捷访问搜索链接（点我或者使用快捷键可以让我变成红色触发click事件）<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><p>如果你是mac系统，你可以按下<kbd>ctrl</kbd> + <kbd>option</kbd> + <kbd>s</kbd>，上面这段话就会变成红色，win系统可以按下<kbd>alt</kbd> + <kbd>s</kbd></p><h2 id="隐藏的元素能否可以触发accesskey快捷访问？"><a href="#隐藏的元素能否可以触发accesskey快捷访问？" class="headerlink" title="隐藏的元素能否可以触发accesskey快捷访问？"></a>隐藏的元素能否可以触发accesskey快捷访问？</h2><p>一个元素，如果CSS display属性的计算值是none，是无法通过Tab键进行索引聚焦的。那设置的<code>accesskey快捷访问</code>是否可以访问呢？</p><p>根据我的测试，Chrome浏览器和Firefox浏览器是可以的，元素即使隐藏，只要设置了<code>accesskey快捷访问</code>，按下对应组合键的时候就能触发click行为。例如：</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&quot;&quot;</span> <span class="attr">accesskey</span>=<span class="string">&quot;s&quot;</span> <span class="attr">hidden</span>&gt;</span>链接<span class="tag">&lt;/<span class="name">a</span>&gt;</span></span><br></pre></td></tr></table></figure><p>在windows操作系统Chrome浏览器下，按下<kbd>Alt</kbd> + <kbd>a</kbd>，页面会直接刷新。<br>在mac操作系统Chrome浏览器下，按下<kbd>ctrl</kbd> + <kbd>option</kbd> + <kbd>a</kbd>，页面会直接刷新。</p><p>包括对于最新的Edge浏览器（IE11）也会被直接刷新！这就很神奇了，我们可以利用这一点做很多事情，嘿嘿</p><h2 id="多个元素使用相同的accesskey属性值会怎样？"><a href="#多个元素使用相同的accesskey属性值会怎样？" class="headerlink" title="多个元素使用相同的accesskey属性值会怎样？"></a>多个元素使用相同的accesskey属性值会怎样？</h2><p>如下测试代码：</p><figure class="highlight html"><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"><span class="tag">&lt;<span class="name">div</span> <span class="attr">accesskey</span>=<span class="string">&quot;b&quot;</span> <span class="attr">tabindex</span>=<span class="string">&quot;0&quot;</span> <span class="attr">onClick</span>=<span class="string">&quot;this.style.color=&#x27;red&#x27;;&quot;</span>&gt;</span>测试1<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br><span class="line"><span class="tag">&lt;<span class="name">div</span> <span class="attr">accesskey</span>=<span class="string">&quot;b&quot;</span> <span class="attr">tabindex</span>=<span class="string">&quot;0&quot;</span> <span class="attr">onClick</span>=<span class="string">&quot;this.style.color=&#x27;red&#x27;;&quot;</span>&gt;</span>测试2<span class="tag">&lt;/<span class="name">div</span>&gt;</span></span><br></pre></td></tr></table></figure><p>在<code>Chrome浏览器</code>和<code>Edge浏览器(IE11)</code>下，上面一行<div>的accesskey属性设置会被忽略，作用的是后来居上的元素，从此处看来，Edge已经彻底向Chrome靠齐了，前端人振奋！</p><p>但是在<code>Safair浏览器</code>上就是只有第一个测试1会变为红色，下面一行的不会触发。</p><h2 id="糟糕的浏览器支持"><a href="#糟糕的浏览器支持" class="headerlink" title="糟糕的浏览器支持"></a>糟糕的浏览器支持</h2><p>为什么🧐说它是糟糕的浏览器支持呢，首先我们来看看它的支持程度</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://img02.anheyu.com/adminuploads/1/2023/07/01/64a0220ac6038.png!blogimg","alt":""},{"url":"https://img02.anheyu.com/adminuploads/1/2023/07/01/64a0220ac6087.png!blogimg","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>从<a href="https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/accesskey">mdn</a>查询的和从<a href="https://caniuse.com/?search=accesskey">caniuse</a>查询的都看起来很不错，几乎是在有浏览器存在的时代就已经有了这个属性，说明它从很久很久以前就已经有了，可能比你我的年龄都大，看起来好像不是那么“糟糕”，那么为什么要说它是“糟糕”的呢，原因就是它产生的实在是太早了，导致众多浏览器都不给面子，各家都有自己的想法，实现方式不一样且没有被统一规范，没有统一的实践。</p><p>从上面<a href="https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/accesskey">mdn</a>查询的和从<a href="https://caniuse.com/?search=accesskey">caniuse</a>看到的交互图我们可以发现，每个浏览器与平台系统都有自己的看法，谁也不服谁🫤，这使得开发者无所适从，需要适配去尝试每一个浏览器是一件很麻烦的事情，所以它是糟糕的浏览器支持。</p><h2 id="是否要使用"><a href="#是否要使用" class="headerlink" title="是否要使用?"></a>是否要使用?</h2><p>当然要用啊！简简单单加一个HTML属性，又不要你做任何其他多余的事情，就可以让浏览器支持快捷访问，举手之劳，何乐而不为呢？几乎所有的网站都有导航，导航都是公用的，是不是可以从<code>accesskey=&quot;s&quot;</code>开始依次设置下；很多网站都有搜索功能，是不是可以像京东一样，在<code>&lt;input&gt;</code>输入框HTML上设置<code>accesskey=&quot;/&quot;</code>。如果大家都这么设置和处理，久而久之，就会形成约定俗成的行业规范标准，对用户而言其实非常好的一件事情。就好像回车支持表单提交一样的，一旦大家都这么做了，用户就很容易形成习惯，一种更方便快捷高效访问使用网站的习惯，此时如果你的网站不支持，对于多年浸染网络的用户就觉得你这个网站体验做的不好。</p><h2 id="使用后存在的问题"><a href="#使用后存在的问题" class="headerlink" title="使用后存在的问题"></a>使用后存在的问题</h2><p>理想虽美好，但若想真正实现还比较难，原因就在于：</p><ol><li>首先组合键访问的方式还是比较啰嗦的，尤其Firefox以及Mac OS X系统下，要同时按下3个键才行，有这么多找键按键的时间，我鼠标早就点过去了；</li><li>其次，用户如何知道你的网站做了快捷键支持呢？</li><li><code>accesskey 值</code>可能与系统或浏览器键盘快捷键或辅助技术功能相冲突。对于一个操作系统来说，辅助技术和浏览器组合可能无法与其他操作系统协同工作。</li><li>某些 <code>accesskey 值</code>可能不会出现在某些键盘上，特别是在国际化是一个问题的时候。</li></ol><h2 id="如何安全并优雅的使用"><a href="#如何安全并优雅的使用" class="headerlink" title="如何安全并优雅的使用"></a>如何安全并优雅的使用</h2><p>说实话，没有什么好的解决办法，目前我找到的解决办法有以下两种，本站均已使用。</p><ol><li>尽量少的使用<code>accesskey</code>，仅仅在公共且重要的位置给予使用</li><li>使用javascrpt增强<code>accesskey</code>，增强它的表现能力，主要增强点为<code>浏览器兼容</code>,<code>快捷键提醒</code>,<code>快速触发聚焦</code></li></ol><p>完成这两点以后，就可以像本站一样</p><p>按下<kbd>shift</kbd> + <kbd>?</kbd> 查看accesskey快捷键</p><p>直接按下<kbd>s</kbd> 然后回车，就可以搜索🔍，直接按下<kbd>h</kbd> 然后回车，就可以回到首页。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;code&gt;accesskey&lt;/code&gt;是一个在国内很冷门的属性，一般只有做无障碍才需要使用到它，目前我发现的国内网站有使用的一个是&lt;a href=&quot;https://www.taobao.com/&quot;&gt;淘宝&lt;/a&gt;，另一个是&lt;a href=&quot;https://www.jd.</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="前端" scheme="https://blog.anheyu.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="开发" scheme="https://blog.anheyu.com/tags/%E5%BC%80%E5%8F%91/"/>
    
  </entry>
  
  <entry>
    <title>全新卡片式外链标签引入</title>
    <link href="https://blog.anheyu.com/posts/39a9.html"/>
    <id>https://blog.anheyu.com/posts/39a9.html</id>
    <published>2023-06-30T07:55:44.000Z</published>
    <updated>2023-08-01T09:02:26.291Z</updated>
    
    <content type="html"><![CDATA[<h2 id="携带跳转链接的卡片"><a href="#携带跳转链接的卡片" class="headerlink" title="携带跳转链接的卡片"></a>携带跳转链接的卡片</h2><figure class="highlight md"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">&#123;% intCard link img tip cardTitle logo title subTitle %&#125;</span><br></pre></td></tr></table></figure><p>必填项<code>link</code>，<code>img</code>，<code>tip</code></p>    <div class="introduction-card" style="">      <div class="introduction-card-top" style="">        <div class="int-card-info">          <div class="int-tip">新品主题</div>          <div class="int-cardTitle">全新简洁apple风格卡片主题</div>        </div>        <img src="https://img02.anheyu.com/adminuploads/1/2023/03/27/64215d46a1ca6.webp" class="no-lightbox" alt="introduction"/>      </div>            <div class="introduction-card-bottom">        <div class="left">          <img src="/img/512.png" class="no-lightbox" alt="introduction"/>          <div class="info">            <div class="title">安知鱼主题</div>            <div class="subTitle">生活明朗，万物可爱</div>          </div>        </div>        <div class="right">          <a href="https://blog.anheyu.com/" tableindex="-1" class="no-text-decoration">前往</a>        </div>      </div>        </div>  <h2 id="不携带跳转链接的卡片"><a href="#不携带跳转链接的卡片" class="headerlink" title="不携带跳转链接的卡片"></a>不携带跳转链接的卡片</h2><p>不填写<code>logo</code> <code>title</code> <code>subTitle</code></p>    <div class="introduction-card" style="height: 416px;">      <div class="introduction-card-top" style="height: 100%;border-radius:15px;">        <div class="int-card-info">          <div class="int-tip">新品主题</div>          <div class="int-cardTitle">全新简洁apple风格卡片主题</div>        </div>        <img src="https://img02.anheyu.com/adminuploads/1/2023/03/27/64215d46a1ca6.webp" class="no-lightbox" alt="introduction"/>      </div>          </div>  ]]></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;figure class=&quot;highlight md&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td c</summary>
      
    
    
    
    
    <category term="教程" scheme="https://blog.anheyu.com/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo" scheme="https://blog.anheyu.com/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>音乐meting自建api</title>
    <link href="https://blog.anheyu.com/posts/a76e.html"/>
    <id>https://blog.anheyu.com/posts/a76e.html</id>
    <published>2023-06-08T04:55:44.000Z</published>
    <updated>2023-08-01T09:03:01.318Z</updated>
    
    <content type="html"><![CDATA[<p>不少小伙伴发现最近安知鱼主题的音乐胶囊配置无效或者音乐馆没有界面出来，原因其实是因为官方的meting api因为某种原因挂掉了。<br>既然知道了问题所在，就很好解决了，<a href="https://blog.anheyu.com/docs/">安知鱼主题</a>的配置文件CDN选项自带有<code>meting_api</code>配置，我们可以自己搭建meting api以提高访问性和稳定性，或者使用其他人提供出来的免费API，只不过稳定性可能会没有那么高。</p><h2 id="自建API"><a href="#自建API" class="headerlink" title="自建API"></a>自建API</h2><p>项目地址<a href="https://github.com/injahow/meting-api">meting-api</a></p><p>部署方式此处提供宝塔部署方法，新建一个站点，然后将项目代码下载下来，<code>上传到站点目录</code>并<code>解压</code></p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/06/08/648191697446e.png!blogimg"><br><img src="https://img02.anheyu.com/adminuploads/1/2023/06/08/6481916ee374e.png!blogimg"></p><p>然后在当前目录执行命令安装依赖</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">composer install</span><br></pre></td></tr></table></figure><p>在根目录会有<code>index.php</code>，可以在这里调整参数设置API路径缓存及时间等等，详细见原项目README.md，博主全默认配置，注意配置完后可能会存在跨域的情况，可以修改<code>index.php</code>前面加上允许跨站的两行代码，修复这个情况，虽然本来就有这个，但是不知道为什么写在后面就会跨域，写在前面就不会再有这种情况了。</p><figure class="highlight php"><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="meta">&lt;?php</span></span><br><span class="line"></span><br><span class="line"><span class="comment">// 允许跨站</span></span><br><span class="line"><span class="title function_ invoke__">header</span>(<span class="string">&#x27;Access-Control-Allow-Origin: *&#x27;</span>);</span><br><span class="line"><span class="title function_ invoke__">header</span>(<span class="string">&#x27;Access-Control-Allow-Methods: GET&#x27;</span>);</span><br><span class="line"></span><br><span class="line"><span class="comment">// 设置API路径</span></span><br><span class="line"><span class="title function_ invoke__">define</span>(<span class="string">&#x27;API_URI&#x27;</span>, <span class="title function_ invoke__">api_uri</span>());</span><br><span class="line"><span class="comment">// 设置中文歌词</span></span><br><span class="line"><span class="title function_ invoke__">define</span>(<span class="string">&#x27;TLYRIC&#x27;</span>, <span class="literal">true</span>);</span><br><span class="line"><span class="comment">// 设置歌单文件缓存及时间</span></span><br><span class="line"><span class="title function_ invoke__">define</span>(<span class="string">&#x27;CACHE&#x27;</span>, <span class="literal">true</span>);</span><br><span class="line"><span class="title function_ invoke__">define</span>(<span class="string">&#x27;CACHE_TIME&#x27;</span>, <span class="number">86400</span>);</span><br><span class="line"><span class="comment">// 设置短期缓存-需要安装apcu</span></span><br><span class="line"><span class="title function_ invoke__">define</span>(<span class="string">&#x27;APCU_CACHE&#x27;</span>, <span class="literal">false</span>);</span><br></pre></td></tr></table></figure><p>当你出现这个则代表部署成功</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/06/08/648194353dca8.png!blogimg"></p><p>如果你是<a href="https://docs.anheyu.com/">安知鱼主题</a>，你只需要在主题配置文件的最下方修改<code>CDN.option.meting_api</code></p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">meting_api:</span> <span class="string">https://meting.qjqq.cn/?server=:server&amp;type=:type&amp;id=:id&amp;auth=:auth&amp;r=:r</span></span><br></pre></td></tr></table></figure><p><img src="https://img02.anheyu.com/adminuploads/1/2023/06/08/648194ac69b4f.webp!blogimg"></p><h2 id="进阶"><a href="#进阶" class="headerlink" title="进阶"></a>进阶</h2><p>自建API以后会发现提供的cover图非常小只有<code>120*120</code>，导致在音乐馆页面的封面图很模糊，可以通过修改<code>src/Meting.php</code>的<code>824行左右</code>代码，将所有调用<code>pic方法</code>的<code>$size</code>都变成<code>300*300</code></p><figure class="highlight php"><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"><span class="keyword">public</span> <span class="function"><span class="keyword">function</span> <span class="title">pic</span>(<span class="params"><span class="variable">$id</span>, <span class="variable">$size</span> = <span class="number">300</span></span>)</span></span><br><span class="line"><span class="function"></span>&#123;</span><br><span class="line">    <span class="keyword">switch</span> (<span class="variable language_">$this</span>-&gt;server) &#123;</span><br><span class="line">        <span class="keyword">case</span> <span class="string">&#x27;netease&#x27;</span>:</span><br><span class="line">        <span class="variable">$size</span> = <span class="number">300</span>;</span><br><span class="line">        <span class="variable">$url</span> = <span class="string">&#x27;https://p3.music.126.net/&#x27;</span>.<span class="variable language_">$this</span>-&gt;<span class="title function_ invoke__">netease_encryptId</span>(<span class="variable">$id</span>).<span class="string">&#x27;/&#x27;</span>.<span class="variable">$id</span>.<span class="string">&#x27;.jpg?param=&#x27;</span>.<span class="variable">$size</span>.<span class="string">&#x27;y&#x27;</span>.<span class="variable">$size</span>;</span><br><span class="line">        <span class="keyword">break</span>;</span><br></pre></td></tr></table></figure><p>弊端就是图片会变大一点点，各有取舍。</p><h2 id="开放API"><a href="#开放API" class="headerlink" title="开放API"></a>开放API</h2><p>在官方的meting api挂掉以后涌现了一大批优秀的公益api</p><ul><li><code>https://api.injahow.cn/meting/</code></li><li><code>https://meting.qjqq.cn/</code></li></ul><p>在安知鱼主题中只需在<code>CDN.option.meting_api</code> 填入下面中的任何一个即可</p><ul><li><code>https://api.injahow.cn/meting/?server=:server&amp;type=:type&amp;id=:id&amp;auth=:auth&amp;r=:r</code></li><li><code>https://meting.qjqq.cn/?server=:server&amp;type=:type&amp;id=:id&amp;auth=:auth&amp;r=:r</code></li></ul>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;不少小伙伴发现最近安知鱼主题的音乐胶囊配置无效或者音乐馆没有界面出来，原因其实是因为官方的meting api因为某种原因挂掉了。&lt;br&gt;既然知道了问题所在，就很好解决了，&lt;a href=&quot;https://blog.anheyu.com/docs/&quot;&gt;安知鱼主题&lt;/a&gt;的配</summary>
      
    
    
    
    
    <category term="教程" scheme="https://blog.anheyu.com/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="音乐" scheme="https://blog.anheyu.com/tags/%E9%9F%B3%E4%B9%90/"/>
    
    <category term="meting" scheme="https://blog.anheyu.com/tags/meting/"/>
    
  </entry>
  
  <entry>
    <title>安知鱼主题标签 Tag Plugins</title>
    <link href="https://blog.anheyu.com/posts/d50a.html"/>
    <id>https://blog.anheyu.com/posts/d50a.html</id>
    <published>2023-06-01T07:55:44.000Z</published>
    <updated>2023-09-02T13:44:12.287Z</updated>
    
    <content type="html"><![CDATA[<div class="note blue anzhiyufont anzhiyu-icon-bullhorn simple"><p><code>AnZhiYu主题</code>中大部分标签移植于<a href="https://akilar.top/">店长</a>的<a href="https://www.npmjs.com/package/hexo-butterfly-tag-plugins-plus">hexo-butterfly-tag-plugins-plus</a>，转载请注明来自<a href="https://blog.anheyu.com/posts/d50a.html">安知鱼</a></p></div><h2 id="段落文本-p"><a href="#段落文本-p" class="headerlink" title="段落文本 p"></a>段落文本 p</h2><div class="tabs" id="p"><ul class="nav-tabs"><button type="button" class="tab " data-href="p-1">标签语法</button><button type="button" class="tab " data-href="p-2">配置参数</button><button type="button" class="tab  active" data-href="p-3">样式预览</button><button type="button" class="tab " data-href="p-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="p-1"><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;% p 样式参数(参数以空格划分), 文本内容 %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="p-2"><ol><li>字体: logo, code</li><li>颜色: <span class='p red'>red</span>,<span class='p yellow'>yellow</span>,<span class='p green'>green</span>,<span class='p cyan'>cyan</span>,<span class='p blue'>blue</span>,<span class='p gray'>gray</span></li><li>大小: small, h4, h3, h2, h1, large, huge, ultra</li><li>对齐方向: left, center, right</li></ol></div><div class="tab-item-content active" id="p-3"><ul><li>彩色文字<br>在一段话中方便插入各种颜色的标签，包括：<p class='p red'>红色</p>、<p class='p yellow'>黄色</p>、<p class='p green'>绿色</p>、<p class='p cyan'>青色</p>、<p class='p blue'>蓝色</p>、<p class='p gray'>灰色</p>。</li><li>超大号文字<br>文档「开始」页面中的标题部分就是超大号文字。<p class='p center logo large'>Volantis</p><p class='p center small'>A Wonderful Theme for Hexo</p></li></ul></div><div class="tab-item-content" id="p-4"><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="bullet">-</span> 彩色文字</span><br><span class="line">  在一段话中方便插入各种颜色的标签，包括：&#123;% p red, 红色 %&#125;、&#123;% p yellow, 黄色 %&#125;、&#123;% p green, 绿色 %&#125;、&#123;% p cyan, 青色 %&#125;、&#123;% p blue, 蓝色 %&#125;、&#123;% p gray, 灰色 %&#125;。</span><br><span class="line"><span class="bullet">-</span> 超大号文字</span><br><span class="line">  文档「开始」页面中的标题部分就是超大号文字。</span><br><span class="line">  &#123;% p center logo large, Volantis %&#125;</span><br><span class="line">  &#123;% p center small, A Wonderful Theme for Hexo %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="行内文本-span"><a href="#行内文本-span" class="headerlink" title="行内文本 span"></a>行内文本 span</h2><div class="tabs" id="span"><ul class="nav-tabs"><button type="button" class="tab " data-href="span-1">标签语法</button><button type="button" class="tab " data-href="span-2">配置参数</button><button type="button" class="tab  active" data-href="span-3">样式预览</button><button type="button" class="tab " data-href="span-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="span-1"><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;% span 样式参数(参数以空格划分), 文本内容 %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="span-2"><ol><li>字体: logo, code</li><li>颜色: <span class='p red'>red</span>,<span class='p yellow'>yellow</span>,<span class='p green'>green</span>,<span class='p cyan'>cyan</span>,<span class='p blue'>blue</span>,<span class='p gray'>gray</span></li><li>大小: small, h4, h3, h2, h1, large, huge, ultra</li><li>对齐方向: left, center, right</li></ol></div><div class="tab-item-content active" id="span-3"><ul><li>彩色文字<br>在一段话中方便插入各种颜色的标签，包括：<span class='p red'>红色</span>、<span class='p yellow'>黄色</span>、<span class='p green'>绿色</span>、<span class='p cyan'>青色</span>、<span class='p blue'>蓝色</span>、<span class='p gray'>灰色</span>。</li><li>超大号文字<br>文档「开始」页面中的标题部分就是超大号文字。<br><span class='p center logo large'>Volantis</span><br><span class='p center small'>A Wonderful Theme for Hexo</span></li></ul></div><div class="tab-item-content" id="span-4"><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="bullet">-</span> 彩色文字</span><br><span class="line">  在一段话中方便插入各种颜色的标签，包括：&#123;% span red, 红色 %&#125;、&#123;% span yellow, 黄色 %&#125;、&#123;% span green, 绿色 %&#125;、&#123;% span cyan, 青色 %&#125;、&#123;% span blue, 蓝色 %&#125;、&#123;% span gray, 灰色 %&#125;。</span><br><span class="line"><span class="bullet">-</span> 超大号文字</span><br><span class="line">  文档「开始」页面中的标题部分就是超大号文字。</span><br><span class="line">  &#123;% span center logo large, Volantis %&#125;</span><br><span class="line">  &#123;% span center small, A Wonderful Theme for Hexo %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="行内文本样式-text"><a href="#行内文本样式-text" class="headerlink" title="行内文本样式 text"></a>行内文本样式 text</h2><div class="tabs" id="text"><ul class="nav-tabs"><button type="button" class="tab " data-href="text-1">标签语法</button><button type="button" class="tab  active" data-href="text-2">样式预览</button><button type="button" class="tab " data-href="text-3">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="text-1"><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;% u 文本内容 %&#125;</span><br><span class="line">&#123;% emp 文本内容 %&#125;</span><br><span class="line">&#123;% wavy 文本内容 %&#125;</span><br><span class="line">&#123;% del 文本内容 %&#125;</span><br><span class="line">&#123;% kbd 文本内容 %&#125;</span><br><span class="line">&#123;% psw 文本内容 %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content active" id="text-2"><ol><li>带 <u>下划线</u> 的文本</li><li>带 <emp>着重号</emp> 的文本</li><li>带 <wavy>波浪线</wavy> 的文本</li><li>带 <del>删除线</del> 的文本</li><li>键盘样式的文本 <kbd>command</kbd> + <kbd>D</kbd></li><li>密码样式的文本：<psw>这里没有验证码</psw></li></ol></div><div class="tab-item-content" id="text-3"><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="bullet">1.</span> 带 &#123;% u 下划线 %&#125; 的文本</span><br><span class="line"><span class="bullet">2.</span> 带 &#123;% emp 着重号 %&#125; 的文本</span><br><span class="line"><span class="bullet">3.</span> 带 &#123;% wavy 波浪线 %&#125; 的文本</span><br><span class="line"><span class="bullet">4.</span> 带 &#123;% del 删除线 %&#125; 的文本</span><br><span class="line"><span class="bullet">5.</span> 键盘样式的文本 &#123;% kbd command %&#125; + &#123;% kbd D %&#125;</span><br><span class="line"><span class="bullet">6.</span> 密码样式的文本：&#123;% psw 这里没有验证码 %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="分栏-tab"><a href="#分栏-tab" class="headerlink" title="分栏 tab"></a>分栏 tab</h2><div class="note blue anzhiyufont anzhiyu-icon-bullhorn simple"><p>分栏支持内置阿里图标，如果开启了 <code>fontawesome</code>可以使用 fontawesome 的图标，否则只能使用默内置阿里图标</p></div><div class="tabs" id="folding"><ul class="nav-tabs"><button type="button" class="tab " data-href="folding-1">标签语法</button><button type="button" class="tab " data-href="folding-2">配置参数</button><button type="button" class="tab  active" data-href="folding-3">样式预览</button><button type="button" class="tab " data-href="folding-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="folding-1"><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;% 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></pre></td></tr></table></figure></div><div class="tab-item-content" id="folding-2"><ol><li>Unique name :<ul><li>选项卡块标签的唯一名称，不带逗号。</li><li>将在#id 中用作每个标签及其索引号的前缀。</li><li>如果名称中包含空格，则对于生成#id，所有空格将由破折号代替。</li><li>仅当前帖子&#x2F;页面的 URL 必须是唯一的！</li></ul></li><li>[index]:<ul><li>活动选项卡的索引号。</li><li>如果未指定，将选择第一个标签（1）。</li><li>如果 index 为-1，则不会选择任何选项卡。</li><li>可选参数。</li></ul></li><li>[Tab caption]:<ul><li>当前选项卡的标题。</li><li>如果未指定标题，则带有制表符索引后缀的唯一名称将用作制表符的标题。</li><li>如果未指定标题，但指定了图标，则标题将为空。</li><li>可选参数。</li></ul></li><li>[@icon]: - FontAwesome 图标名称（全名，看起来像“ fas fa-font”） - 可以指定带空格或不带空格； - 例如’Tab caption @icon’ 和 ‘Tab caption@icon’. - 可选参数。</li></ol></div><div class="tab-item-content active" id="folding-3"><div class="note primary flat"><p>Demo 1 - 预设选择第一个【默认】</p></div><div class="tabs" id="test1"><ul class="nav-tabs"><button type="button" class="tab  active" data-href="test1-1">test1 1</button><button type="button" class="tab " data-href="test1-2">test1 2</button><button type="button" class="tab " data-href="test1-3">test1 3</button></ul><div class="tab-contents"><div class="tab-item-content active" id="test1-1"><p><strong>This is Tab 1.</strong></p></div><div class="tab-item-content" id="test1-2"><p><strong>This is Tab 2.</strong></p></div><div class="tab-item-content" id="test1-3"><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="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><div class="note primary flat"><p>Demo 2 - 预设选择 tabs</p></div><div class="tabs" id="test2"><ul class="nav-tabs"><button type="button" class="tab " data-href="test2-1">test2 1</button><button type="button" class="tab " data-href="test2-2">test2 2</button><button type="button" class="tab  active" data-href="test2-3">test2 3</button></ul><div class="tab-contents"><div class="tab-item-content" id="test2-1"><p><strong>This is Tab 1.</strong></p></div><div class="tab-item-content" id="test2-2"><p><strong>This is Tab 2.</strong></p></div><div class="tab-item-content active" id="test2-3"><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="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><div class="note primary flat"><p>Demo 3 - 没有预设值</p></div><div class="tabs" id="test3"><ul class="nav-tabs no-default"><button type="button" class="tab " data-href="test3-1">test3 1</button><button type="button" class="tab " data-href="test3-2">test3 2</button><button type="button" class="tab " data-href="test3-3">test3 3</button></ul><div class="tab-contents"><div class="tab-item-content" id="test3-1"><p><strong>This is Tab 1.</strong></p></div><div class="tab-item-content" id="test3-2"><p><strong>This is Tab 2.</strong></p></div><div class="tab-item-content" id="test3-3"><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="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><div class="note primary flat"><p>Demo 4 - 自定义 Tab 名 + 只有 icon + icon 和 Tab 名</p></div><div class="tabs" id="test4"><ul class="nav-tabs"><button type="button" class="tab  active" data-href="test4-1">第一个Tab</button><button type="button" class="tab " data-href="test4-2"><i class="anzhiyufont anzhiyu-icon-oranges" style="text-align: center;"></i></button><button type="button" class="tab " data-href="test4-3"><i class="anzhiyufont anzhiyu-icon-oranges"></i>炸弹</button></ul><div class="tab-contents"><div class="tab-item-content active" id="test4-1"><p><strong>tab 名字为第一个 Tab</strong></p></div><div class="tab-item-content" id="test4-2"><p><strong>只有图标 没有 Tab 名字</strong></p></div><div class="tab-item-content" id="test4-3"><p><strong>名字+icon</strong></p></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div></div><div class="tab-item-content" id="folding-4"><div class="note primary flat"><p>Demo 1 - 预设选择第一个【默认】</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></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></pre></td></tr></table></figure><div class="note primary flat"><p>Demo 2 - 预设选择 tabs</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></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></pre></td></tr></table></figure><div class="note primary flat"><p>Demo 3 - 没有预设值</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></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></pre></td></tr></table></figure><div class="note primary flat"><p>Demo 4 - 自定义 Tab 名 + 只有 icon + icon 和 Tab 名</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></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></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="按钮-btns"><a href="#按钮-btns" class="headerlink" title="按钮 btns"></a>按钮 btns</h2><div class="tabs" id="btns"><ul class="nav-tabs"><button type="button" class="tab " data-href="btns-1">标签语法</button><button type="button" class="tab " data-href="btns-2">参数配置</button><button type="button" class="tab  active" data-href="btns-3">样式预览</button><button type="button" class="tab " data-href="btns-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="btns-1"><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;% btns 样式参数 %&#125;</span><br><span class="line">&#123;% cell 标题, 链接, 图片或者图标 %&#125;</span><br><span class="line">&#123;% cell 标题, 链接, 图片或者图标 %&#125;</span><br><span class="line">&#123;% endbtns %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="btns-2"><ol><li>圆角样式：rounded, circle</li><li>增加文字样式：可以在容器内增加 <code>&lt;b&gt;标题&lt;/b&gt; </code>和<code> &lt;p&gt;描述文字&lt;/p&gt;</code></li><li>布局方式：<br>默认为自动宽度，适合视野内只有一两个的情况。</li></ol><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">wide</td><td align="left">宽一点的按钮</td></tr><tr><td align="left">fill</td><td align="left">填充布局，自动铺满至少一行，多了会换行</td></tr><tr><td align="left">center</td><td align="left">居中，按钮之间是固定间距</td></tr><tr><td align="left">around</td><td align="left">居中分散</td></tr><tr><td align="left">grid2</td><td align="left">等宽最多 2 列，屏幕变窄会适当减少列数</td></tr><tr><td align="left">grid3</td><td align="left">等宽最多 3 列，屏幕变窄会适当减少列数</td></tr><tr><td align="left">grid4</td><td align="left">等宽最多 4 列，屏幕变窄会适当减少列数</td></tr><tr><td align="left">grid5</td><td align="left">等宽最多 5 列，屏幕变窄会适当减少列数</td></tr></tbody></table></div><div class="tab-item-content active" id="btns-3"><ol><li>如果需要显示类似「团队成员」之类的一组含有头像的链接：</li></ol><div class="btns circle grid5">            <a class="button no-text-decoration" href='https://xaoxuu.com' title='xaoxuu'><img src='https://bu.dusays.com/2023/06/01/64787e6a5816d.png'>xaoxuu</a><a class="button no-text-decoration" href='https://xaoxuu.com' title='xaoxuu'><img src='https://bu.dusays.com/2023/06/01/64787e6a5816d.png'>xaoxuu</a><a class="button no-text-decoration" href='https://xaoxuu.com' title='xaoxuu'><img src='https://bu.dusays.com/2023/06/01/64787e6a5816d.png'>xaoxuu</a><a class="button no-text-decoration" href='https://xaoxuu.com' title='xaoxuu'><img src='https://bu.dusays.com/2023/06/01/64787e6a5816d.png'>xaoxuu</a><a class="button no-text-decoration" href='https://xaoxuu.com' title='xaoxuu'><img src='https://bu.dusays.com/2023/06/01/64787e6a5816d.png'>xaoxuu</a>          </div><ol start="2"><li>或者含有图标的按钮：</li></ol><div class="btns rounded grid5">            <a class="button no-text-decoration" href='/' title='下载源码'><i class='anzhiyufont anzhiyu-icon-bolt'></i>下载源码</a><a class="button no-text-decoration" href='/' title='查看文档'><i class='anzhiyufont anzhiyu-icon-book'></i>查看文档</a>          </div><ol start="3"><li>圆形图标 + 标题 + 描述 + 图片 + 网格 5 列 + 居中</li></ol><div class="btns circle center grid5">            <a href='https://apps.apple.com/cn/app/heart-mate-pro-hrm-utility/id1463348922?ls=1' class="no-text-decoration"><i class='anzhiyufont anzhiyu-icon-heartbeat'></i><b>心率管家</b><p class='p red'>专业版</p><img src='https://cdn1.tianli0.top/gh/xaoxuu/cdn-assets/qrcode/heartmate_pro.png'></a><a href='https://apps.apple.com/cn/app/heart-mate-lite-hrm-utility/id1475747930?ls=1' class="no-text-decoration"><i class='anzhiyufont anzhiyu-icon-heartbeat'></i><b>心率管家</b><p class='p green'>免费版</p><img src='https://cdn1.tianli0.top/gh/xaoxuu/cdn-assets/qrcode/heartmate_lite.png'></a>          </div></div><div class="tab-item-content" id="btns-4"><ol><li>如果需要显示类似「团队成员」之类的一组含有头像的链接：</li></ol><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></pre></td><td class="code"><pre><span class="line">&#123;% btns circle grid5 %&#125;</span><br><span class="line">&#123;% cell xaoxuu, https://xaoxuu.com, https://bu.dusays.com/2023/06/01/64787e6a5816d.png %&#125;</span><br><span class="line">&#123;% cell xaoxuu, https://xaoxuu.com, https://bu.dusays.com/2023/06/01/64787e6a5816d.png %&#125;</span><br><span class="line">&#123;% cell xaoxuu, https://xaoxuu.com, https://bu.dusays.com/2023/06/01/64787e6a5816d.png %&#125;</span><br><span class="line">&#123;% cell xaoxuu, https://xaoxuu.com, https://bu.dusays.com/2023/06/01/64787e6a5816d.png %&#125;</span><br><span class="line">&#123;% cell xaoxuu, https://xaoxuu.com, https://bu.dusays.com/2023/06/01/64787e6a5816d.png %&#125;</span><br><span class="line">&#123;% endbtns %&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li>或者含有图标的按钮：</li></ol><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;% btns rounded grid5 %&#125;</span><br><span class="line">&#123;% cell 下载源码, /, anzhiyufont anzhiyu-icon-bolt %&#125;</span><br><span class="line">&#123;% cell 查看文档, /, anzhiyufont anzhiyu-icon-book %&#125;</span><br><span class="line">&#123;% endbtns %&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li>圆形图标 + 标题 + 描述 + 图片 + 网格 5 列 + 居中</li></ol><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;% btns circle center grid5 %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&#x27;https://apps.apple.com/cn/app/heart-mate-pro-hrm-utility/id1463348922?ls=1&#x27;</span> <span class="attr">class</span>=<span class="string">&quot;no-text-decoration&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&#x27;anzhiyufont anzhiyu-icon-heartbeat&#x27;</span>&gt;</span></span><span class="language-xml"><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">b</span>&gt;</span></span>心率管家<span class="language-xml"><span class="tag">&lt;/<span class="name">b</span>&gt;</span></span></span><br><span class="line">&#123;% p red, 专业版 %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&#x27;https://bu.dusays.com/2023/06/01/64787e2a1347c.png&#x27;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">a</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">a</span> <span class="attr">href</span>=<span class="string">&#x27;https://apps.apple.com/cn/app/heart-mate-lite-hrm-utility/id1475747930?ls=1&#x27;</span> <span class="attr">class</span>=<span class="string">&quot;no-text-decoration&quot;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">i</span> <span class="attr">class</span>=<span class="string">&#x27;anzhiyufont anzhiyu-icon-heartbeat&#x27;</span>&gt;</span></span><span class="language-xml"><span class="tag">&lt;/<span class="name">i</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">b</span>&gt;</span></span>心率管家<span class="language-xml"><span class="tag">&lt;/<span class="name">b</span>&gt;</span></span></span><br><span class="line">&#123;% p green, 免费版 %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&#x27;https://bu.dusays.com/2023/06/01/64787e515e261.png&#x27;</span>&gt;</span></span></span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">a</span>&gt;</span></span></span><br><span class="line">&#123;% endbtns %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="按钮-btn"><a href="#按钮-btn" class="headerlink" title="按钮 btn"></a>按钮 btn</h2><div class="tabs" id="btn"><ul class="nav-tabs"><button type="button" class="tab " data-href="btn-1">标签语法</button><button type="button" class="tab " data-href="btn-2">参数配置</button><button type="button" class="tab  active" data-href="btn-3">样式预览</button><button type="button" class="tab " data-href="btn-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="btn-1"><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></pre></td><td class="code"><pre><span class="line">&#123;% btn [url],[text],[icon],[color] [style] [layout] [position] [size] %&#125;</span><br><span class="line"></span><br><span class="line">[url] : 链接</span><br><span class="line">[text] : 按钮文字</span><br><span class="line">[icon] : [可选] 图标</span><br><span class="line">[color] : [可选] 按钮背景顔色(默认 style 时）</span><br><span class="line">按钮字体和边框顔色(outline 时)</span><br><span class="line">default/blue/pink/red/purple/orange/green</span><br><span class="line">[style] : [可选] 按钮样式 默认实心</span><br><span class="line">outline/留空</span><br><span class="line">[layout] : [可选] 按钮佈局 默认为 line</span><br><span class="line">block/留空</span><br><span class="line">[position] : [可选] 按钮位置 前提是设置了 layout 为 block 默认为左边</span><br><span class="line">center/right/留空</span><br><span class="line">[size] : [可选] 按钮大小</span><br><span class="line">larger/留空</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="btn-2"><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">url</td><td align="left">链接</td></tr><tr><td align="left">text</td><td align="left">按钮文字</td></tr><tr><td align="left">icon</td><td align="left">[可选] 图标，如果开启了 <code>fontawesome</code>可以使用 fontawesome 的图标，否则只能使用默内置图标</td></tr><tr><td align="left">color</td><td align="left">[可选] 按钮背景顔色(默认 style 时）按钮字体和边框顔色(outline 时)default&#x2F;blue&#x2F;pink&#x2F;red&#x2F;purple&#x2F;orange&#x2F;green</td></tr><tr><td align="left">style</td><td align="left">[可选] 按钮样式 默认实心数，outline&#x2F;留空</td></tr><tr><td align="left">layout</td><td align="left">[可选] 按钮佈局 默认为 line block&#x2F;留空</td></tr><tr><td align="left">position</td><td align="left">[可选] 按钮位置 前提是设置了 layout 为 block 默认为左边 center&#x2F;right&#x2F;留空数</td></tr><tr><td align="left">size</td><td align="left">[可选] 按钮大小 larger&#x2F;留空</td></tr></tbody></table></div><div class="tab-item-content active" id="btn-3"><ol><li>一组按钮</li></ol><p>This is my website, click the button <a class="btn-anzhiyu " href="https://blog.anheyu.com/"   title="AnZhiYu"><span>AnZhiYu</span></a><br>This is my website, click the button <a class="btn-anzhiyu " href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><br>This is my website, click the button <a class="btn-anzhiyu outline" href="https://blog.anheyu.com/"   title="AnZhiYu"><span>AnZhiYu</span></a><br>This is my website, click the button <a class="btn-anzhiyu outline" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><br>This is my website, click the button <a class="btn-anzhiyu larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a></p><ol start="2"><li>调整位置&#x2F;大小</li></ol><p><a class="btn-anzhiyu block" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><br><a class="btn-anzhiyu block center larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><br><a class="btn-anzhiyu block right outline larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a></p><ol start="3"><li>more than one button in center</li></ol><span><a class="btn-anzhiyu larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu blue larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu pink larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu red larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu purple larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu orange larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu green larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a></span><ol start="4"><li>居中按钮</li></ol><div class="btn-center"><a class="btn-anzhiyu outline larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu outline blue larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu outline pink larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu outline red larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu outline purple larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu outline orange larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a><a class="btn-anzhiyu outline green larger" href="https://blog.anheyu.com/"   title="AnZhiYu"><i class="anzhiyufont anzhiyu-icon-circle-arrow-right"></i><span>AnZhiYu</span></a></div></div><div class="tab-item-content" id="btn-4"><ol><li>一组按钮</li></ol><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">This is my website, click the button &#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu %&#125;</span><br><span class="line">This is my website, click the button &#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right %&#125;</span><br><span class="line">This is my website, click the button &#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,,outline %&#125;</span><br><span class="line">This is my website, click the button &#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline %&#125;</span><br><span class="line">This is my website, click the button &#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,larger %&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li>调整位置&#x2F;大小</li></ol><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;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,block %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,block center larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,block right outline larger %&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li>more than one button in center</li></ol><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"><span class="language-xml"><span class="tag">&lt;<span class="name">span</span>&gt;</span></span></span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,blue larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,pink larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,red larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,purple larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,orange larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,green larger %&#125;</span><br><span class="line"><span class="language-xml"><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span></span><br></pre></td></tr></table></figure><ol start="4"><li>居中按钮</li></ol><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"><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.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline blue larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline pink larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline red larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline purple larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-right,outline orange larger %&#125;</span><br><span class="line">&#123;% btn &#x27;https://blog.anheyu.com/&#x27;,AnZhiYu,anzhiyufont anzhiyu-icon-circle-arrow-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></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="网站卡片-sites"><a href="#网站卡片-sites" class="headerlink" title="网站卡片 sites"></a>网站卡片 sites</h2><div class="tabs" id="site"><ul class="nav-tabs"><button type="button" class="tab " data-href="site-1">标签语法</button><button type="button" class="tab  active" data-href="site-2">样式预览</button><button type="button" class="tab " data-href="site-3">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="site-1"><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;% sitegroup %&#125;</span><br><span class="line">&#123;% site 标题, url=链接, screenshot=截图链接, avatar=头像链接（可选）, description=描述（可选） %&#125;</span><br><span class="line">&#123;% site 标题, url=链接, screenshot=截图链接, avatar=头像链接（可选）, description=描述（可选） %&#125;</span><br><span class="line">&#123;% endsitegroup %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content active" id="site-2"><div class="site-card-group"><a class="site-card" href="https://xaoxuu.com" data-title=简约风格><div class="wrapper cover"><img class="cover fadeIn" src="https://bu.dusays.com/2023/06/01/6478965ce6557.webp"/></div><div class="info"><img class="flink-avatar" src="https://cdn1.tianli0.top/gh/xaoxuu/cdn-assets/avatar/avatar.png"/><span class="site-title">xaoxuu</span></div></a><a class="site-card" href="https://colsrch.top" data-title=这是一段关于这个网站的描述文字><div class="wrapper cover"><img class="cover fadeIn" src="https://i.loli.net/2020/08/22/dFRWXm52OVu8qfK.png"/></div><div class="info"><img class="flink-avatar" src="https://cdn1.tianli0.top/gh/Colsrch/images/Colsrch/avatar.jpg"/><span class="site-title">Colsrch</span></div></a><a class="site-card" href="https://linhk1606.github.io" data-title=这是一段关于这个网站的描述文字><div class="wrapper cover"><img class="cover fadeIn" src="https://bu.dusays.com/2023/06/01/6478963584621.png"/></div><div class="info"><img class="flink-avatar" src="https://bu.dusays.com/2023/06/01/6478968743368.png"/><span class="site-title">Linhk1606</span></div></a></div></div><div class="tab-item-content" id="site-3"><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;% sitegroup %&#125;</span><br><span class="line">&#123;% site xaoxuu, url=https://xaoxuu.com, screenshot=https://bu.dusays.com/2023/06/01/6478965ce6557.webp, avatar=https://cdn1.tianli0.top/gh/xaoxuu/cdn-assets/avatar/avatar.png, description=简约风格 %&#125;</span><br><span class="line">&#123;% site Colsrch, url=https://colsrch.top, screenshot=https://i.loli.net/2020/08/22/dFRWXm52OVu8qfK.png, avatar=https://cdn1.tianli0.top/gh/Colsrch/images/Colsrch/avatar.jpg, description=这是一段关于这个网站的描述文字 %&#125;</span><br><span class="line">&#123;% site Linhk1606, url=https://linhk1606.github.io, screenshot=https://bu.dusays.com/2023/06/01/6478963584621.png, avatar=https://bu.dusays.com/2023/06/01/6478968743368.png, description=这是一段关于这个网站的描述文字 %&#125;</span><br><span class="line">&#123;% endsitegroup %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="单张图片-image"><a href="#单张图片-image" class="headerlink" title="单张图片 image"></a>单张图片 image</h2><div class="tabs" id="image"><ul class="nav-tabs"><button type="button" class="tab " data-href="image-1">标签语法</button><button type="button" class="tab " data-href="image-2">参数配置</button><button type="button" class="tab  active" data-href="image-3">样式预览</button><button type="button" class="tab " data-href="image-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="image-1"><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;% image 链接, width=宽度（可选）, height=高度（可选）, alt=描述（可选）, bg=占位颜色（可选） %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="image-2"><ol><li>图片宽度高度：width&#x3D;300px, height&#x3D;32px</li><li>图片描述：alt&#x3D;图片描述（butterfly 需要在主题配置文件中开启图片描述）</li><li>占位背景色：bg&#x3D;#f2f2f2</li></ol></div><div class="tab-item-content active" id="image-3"><ol start="4"><li>添加描述：</li></ol><div class="img-wrap"><div class="img-bg"><img class="img" src="https://bu.dusays.com/2023/06/01/6478937d7de6f.webp" alt="每天下课回宿舍的路，没有什么故事。"/></div><span class="image-caption">每天下课回宿舍的路，没有什么故事。</span></div><ol start="2"><li>指定宽度：</li></ol><div class="img-wrap"><div class="img-bg"><img class="img" src="https://bu.dusays.com/2023/06/01/6478937d7de6f.webp" style="width:400px;"/></div></div><ol start="3"><li>指定宽度并添加描述：</li></ol><div class="img-wrap"><div class="img-bg"><img class="img" src="https://bu.dusays.com/2023/06/01/6478937d7de6f.webp" alt="每天下课回宿舍的路，没有什么故事。" style="width:400px;"/></div><span class="image-caption">每天下课回宿舍的路，没有什么故事。</span></div><ol start="4"><li>设置占位背景色：</li></ol><div class="img-wrap"><div class="img-bg" style="background:#1D0C04"><img class="img" src="https://bu.dusays.com/2023/06/01/6478937d7de6f.webp" alt="优化不同宽度浏览的观感" style="width:400px;"/></div><span class="image-caption">优化不同宽度浏览的观感</span></div></div><div class="tab-item-content" id="image-4"><ol><li>添加描述：</li></ol><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;% image https://bu.dusays.com/2023/06/01/6478937d7de6f.webp, alt=每天下课回宿舍的路，没有什么故事。 %&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li>指定宽度：</li></ol><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;% image https://bu.dusays.com/2023/06/01/6478937d7de6f.webp, width=400px %&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li>指定宽度并添加描述：</li></ol><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;% image https://bu.dusays.com/2023/06/01/6478937d7de6f.webp, width=400px, alt=每天下课回宿舍的路，没有什么故事。 %&#125;</span><br></pre></td></tr></table></figure><ol start="4"><li>设置占位背景色：</li></ol><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;% image https://bu.dusays.com/2023/06/01/6478937d7de6f.webp, width=400px, bg=#1D0C04, alt=优化不同宽度浏览的观感 %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="inlineImg-行内图片"><a href="#inlineImg-行内图片" class="headerlink" title="inlineImg 行内图片"></a>inlineImg 行内图片</h2><div class="tabs" id="inlineimg"><ul class="nav-tabs"><button type="button" class="tab " data-href="inlineimg-1">标签语法</button><button type="button" class="tab " data-href="inlineimg-2">参数配置</button><button type="button" class="tab  active" data-href="inlineimg-3">样式预览</button><button type="button" class="tab " data-href="inlineimg-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="inlineimg-1"><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;% inlineImg [src] [height] %&#125;</span><br><span class="line"></span><br><span class="line">[src] : 图片链接</span><br><span class="line">[height] ： 图片高度限制【可选】</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="inlineimg-2"><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">src</td><td align="left">图片链接</td></tr><tr><td align="left">height</td><td align="left">图片高度限制【可选】</td></tr></tbody></table></div><div class="tab-item-content active" id="inlineimg-3"><p>你看我长得漂亮不</p><p><img src="https://bu.dusays.com/2023/06/01/64787ded2ca1c.webp"></p><p>我觉得很漂亮 <img class="inline-img" src="https://bu.dusays.com/2023/06/01/64787da5251b3.png" style="height:150px"/></p></div><div class="tab-item-content" id="inlineimg-4"><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"></span><br><span class="line">![](https://i.loli.net/2021/03/19/2P6ivUGsdaEXSFI.png)</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></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="行内图片-inlineimage"><a href="#行内图片-inlineimage" class="headerlink" title="行内图片 inlineimage"></a>行内图片 inlineimage</h2><div class="tabs" id="inlineimage"><ul class="nav-tabs"><button type="button" class="tab " data-href="inlineimage-1">标签语法</button><button type="button" class="tab " data-href="inlineimage-2">参数配置</button><button type="button" class="tab  active" data-href="inlineimage-3">样式预览</button><button type="button" class="tab " data-href="inlineimage-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="inlineimage-1"><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;% inlineimage 图片链接, height=高度（可选） %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="inlineimage-2"><ol><li>高度：height&#x3D;20px</li></ol></div><div class="tab-item-content active" id="inlineimage-3"><p>这是 <img no-lazy class="inline" src="https://bu.dusays.com/2023/06/01/647895232e5d5.webp" style="height:1.5em"/> 一段话。</p><p>这又是 <img no-lazy class="inline" src="https://bu.dusays.com/2022/05/19/6285328a83ca7.gif" style="height:40px;"/> 一段话。</p></div><div class="tab-item-content" id="inlineimage-4"><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;% inlineimage https://bu.dusays.com/2023/06/01/647895232e5d5.webp %&#125; 一段话。</span><br><span class="line"></span><br><span class="line">这又是 &#123;% inlineimage https://bu.dusays.com/2022/05/19/6285328a83ca7.gif, height=40px %&#125; 一段话。</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="label-标签"><a href="#label-标签" class="headerlink" title="label 标签"></a>label 标签</h2><div class="tabs" id="label"><ul class="nav-tabs"><button type="button" class="tab " data-href="label-1">标签语法</button><button type="button" class="tab " data-href="label-2">参数配置</button><button type="button" class="tab  active" data-href="label-3">样式预览</button><button type="button" class="tab " data-href="label-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="label-1"><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></div><div class="tab-item-content" id="label-2"><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">text</td><td align="left">文字</td></tr><tr><td align="left">color</td><td align="left">【可选】背景颜色，默认为 default，default&#x2F;blue&#x2F;pink&#x2F;red&#x2F;purple&#x2F;orange&#x2F;green</td></tr></tbody></table></div><div class="tab-item-content active" id="label-3"><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></div><div class="tab-item-content" id="label-4"><figure class="highlight plaintext"><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></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="timeline"><a href="#timeline" class="headerlink" title="timeline"></a>timeline</h2><div class="tabs" id="timeline"><ul class="nav-tabs"><button type="button" class="tab " data-href="timeline-1">标签语法</button><button type="button" class="tab " data-href="timeline-2">参数配置</button><button type="button" class="tab  active" data-href="timeline-3">样式预览</button><button type="button" class="tab " data-href="timeline-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="timeline-1"><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></div><div class="tab-item-content" id="timeline-2"><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">title</td><td align="left">标题&#x2F;时间线</td></tr><tr><td align="left">color</td><td align="left">timeline 颜色，default(留空) &#x2F; blue &#x2F; pink &#x2F; red &#x2F; purple &#x2F; orange &#x2F; green</td></tr></tbody></table></div><div class="tab-item-content active" id="timeline-3"><ol><li><p>默认颜色</p><div class="timeline undefined"><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></li><li><p>blue</p><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></li><li><p>pink</p><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></li><li><p>red</p><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></li><li><p>purple</p><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></li><li><p>orange</p><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-02</p></div></div><div class='timeline-item-content'><p>这是测试页面</p></div></div></div></li><li><p>green</p><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></li></ol></div><div class="tab-item-content" id="timeline-4"><ol><li>默认颜色</li></ol><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">&#123;% timeline 2022 %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li>blue</li></ol><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">&#123;% timeline 2022,blue %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li>pink</li></ol><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">&#123;% timeline 2022,pink %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><ol start="4"><li>red</li></ol><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">&#123;% timeline 2022,red %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><ol start="5"><li>purple</li></ol><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">&#123;% timeline 2022,purple %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><ol start="6"><li>orange</li></ol><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">&#123;% timeline 2022,orange %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure><ol start="7"><li>green</li></ol><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">&#123;% timeline 2022,green %&#125;</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">&lt;!-- endtimeline --&gt;</span><br><span class="line"></span><br><span class="line">&#123;% endtimeline %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="flink-友链标签"><a href="#flink-友链标签" class="headerlink" title="flink 友链标签"></a>flink 友链标签</h2><div class="note blue anzhiyufont anzhiyu-icon-bullhorn simple"><p>可在任何界面插入类似<code>友情链接</code>列表效果，内容格式与友情链接界面一样，支持 <code>yml 格式</code>,注意<code>yml数据</code>具有格式要求，请注意格式对齐，防止被编辑器格式化导致格式错误从而报错。</p></div><div class="tabs" id="btn"><ul class="nav-tabs"><button type="button" class="tab " data-href="btn-1">标签语法</button><button type="button" class="tab " data-href="btn-2">参数配置</button><button type="button" class="tab  active" data-href="btn-3">样式预览</button><button type="button" class="tab " data-href="btn-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="btn-1"><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></div><div class="tab-item-content" id="btn-2"><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">class_name</td><td align="left">h2标题</td></tr><tr><td align="left">flink_style</td><td align="left">【可选】友链样式，默认为 flexcard，flexcard&#x2F;anzhiyu</td></tr><tr><td align="left">link_list</td><td align="left">【可选】友链样式，默认为 flexcard，flexcard&#x2F;anzhiyu</td></tr></tbody></table></div><div class="tab-item-content active" id="btn-3"><div class="flink"><div class="flink-name">推荐博客</div> <div class="flink-list"><div class="flexcard-flink-list">              <a href="https://blog.anheyu.com/" title="安知鱼" target="_blank" class="flink-list-card cf-friends-link">                <div class="wrapper cover">                    <img class="no-lightbox cover fadeIn" src="https://npm.elemecdn.com/anzhiyu-theme-static@1.1.6/img/blog.anheyu.com.jpg" onerror='this.onerror=null;this.src="/img/friend_404.gif"' alt="安知鱼" />                </div>                <div class="info">                  <img class="no-lightbox cf-friends-avatar flink-avatar" src="https://npm.elemecdn.com/anzhiyu-blog-static@1.0.4/img/avatar.jpg" onerror='this.onerror=null;this.src="/img/friend_404.gif"' alt="安知鱼"/>                  <span class="flink-sitename cf-friends-name">安知鱼</span>                </div>              </a></div></div><div class="flink-name">网站</div><div class="flink-desc">值得推荐的网站</div> <div class="flink-list"><div class="anzhiyu-flink-list">            <div class="flink-list-item">              <a href="https://www.youtube.com/" title="Youtube" class="cf-friends-link" target="_blank">                <div class="flink-item-icon">                  <img class="no-lightbox cf-friends-avatar" src="https://i.loli.net/2020/05/14/9ZkGg8v3azHJfM1.png" onerror='this.onerror=null;this.src="/img/friend_404.gif"' alt="Youtube" />                </div>                <div class="flink-item-info">                  <div class="flink-item-name">Youtube</div>                  <div class="flink-item-desc" title="视频网站">视频网站</div>                </div>              </a>            </div>            <div class="flink-list-item">              <a href="https://www.weibo.com/" title="Weibo" class="cf-friends-link" target="_blank">                <div class="flink-item-icon">                  <img class="no-lightbox cf-friends-avatar" src="https://i.loli.net/2020/05/14/TLJBum386vcnI1P.png" onerror='this.onerror=null;this.src="/img/friend_404.gif"' alt="Weibo" />                </div>                <div class="flink-item-info">                  <div class="flink-item-name">Weibo</div>                  <div class="flink-item-desc" title="中国最大社交分享平台">中国最大社交分享平台</div>                </div>              </a>            </div>            <div class="flink-list-item">              <a href="https://twitter.com/" title="Twitter" class="cf-friends-link" target="_blank">                <div class="flink-item-icon">                  <img class="no-lightbox cf-friends-avatar" src="https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png" onerror='this.onerror=null;this.src="/img/friend_404.gif"' alt="Twitter" />                </div>                <div class="flink-item-info">                  <div class="flink-item-name">Twitter</div>                  <div class="flink-item-desc" title="社交分享平台">社交分享平台</div>                </div>              </a>            </div></div></div></div></div><div class="tab-item-content" id="btn-4"><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></pre></td><td class="code"><pre><span class="line"></span><br><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">  flink_</span>style: flexcard</span><br><span class="line">  link<span class="emphasis">_list:</span></span><br><span class="line"><span class="emphasis">    - name: 安知鱼</span></span><br><span class="line"><span class="emphasis">      link: https://blog.anheyu.com/</span></span><br><span class="line"><span class="emphasis">      avatar: https://npm.elemecdn.com/anzhiyu-blog-static@1.0.4/img/avatar.jpg</span></span><br><span class="line"><span class="emphasis">      descr: 生活明朗，万物可爱</span></span><br><span class="line"><span class="emphasis">      siteshot: https://npm.elemecdn.com/anzhiyu-theme-static@1.1.6/img/blog.anheyu.com.jpg</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">  flink_</span>style: anzhiyu</span><br><span class="line">  link<span class="emphasis">_list:</span></span><br><span class="line"><span class="emphasis">    - name: Youtube</span></span><br><span class="line"><span class="emphasis">      link: https://www.youtube.com/</span></span><br><span class="line"><span class="emphasis">      avatar: https://i.loli.net/2020/05/14/9ZkGg8v3azHJfM1.png</span></span><br><span class="line"><span class="emphasis">      descr: 视频网站</span></span><br><span class="line"><span class="emphasis">    - name: Weibo</span></span><br><span class="line"><span class="emphasis">      link: https://www.weibo.com/</span></span><br><span class="line"><span class="emphasis">      avatar: https://i.loli.net/2020/05/14/TLJBum386vcnI1P.png</span></span><br><span class="line"><span class="emphasis">      descr: 中国最大社交分享平台</span></span><br><span class="line"><span class="emphasis">    - name: Twitter</span></span><br><span class="line"><span class="emphasis">      link: https://twitter.com/</span></span><br><span class="line"><span class="emphasis">      avatar: https://i.loli.net/2020/05/14/5VyHPQqR6LWF39a.png</span></span><br><span class="line"><span class="emphasis">      descr: 社交分享平台</span></span><br><span class="line"><span class="emphasis">&#123;% endflink %&#125;</span></span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="mermaid-图"><a href="#mermaid-图" class="headerlink" title="mermaid 图"></a>mermaid 图</h2><div class="note blue anzhiyufont anzhiyu-icon-bullhorn simple"><p>使用<code>mermaid标签</code>可以绘制Flowchart（流程图）、Sequence diagram（时序图 ）、Class Diagram（类别图）、State Diagram（状态图）、Gantt（甘特图）和Pie Chart（圆形图），具体可以查看<a href="https://mermaid.js.org/#/">mermaid文档</a></p></div><p>修改 <code>主题配置文件</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><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># mermaid</span></span><br><span class="line"><span class="comment"># see 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">true</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><div class="tabs" id="mermaid"><ul class="nav-tabs"><button type="button" class="tab " data-href="mermaid-1">标签语法</button><button type="button" class="tab  active" data-href="mermaid-2">样式预览</button><button type="button" class="tab " data-href="mermaid-3">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="mermaid-1"><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></div><div class="tab-item-content active" id="mermaid-2"><p><img src="https://bu.dusays.com/2023/06/01/647889d3a16f8.png" alt="mermaid"></p></div><div class="tab-item-content" id="mermaid-3"><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></pre></td><td class="code"><pre><span class="line">&#123;% mermaid %&#125;</span><br><span class="line">pie</span><br><span class="line">    title Key elements in Product X</span><br><span class="line">    &quot;Calcium&quot; : 42.96</span><br><span class="line">    &quot;Potassium&quot; : 50.05</span><br><span class="line">    &quot;Magnesium&quot; : 10.01</span><br><span class="line">    &quot;Iron&quot; :  5</span><br><span class="line">&#123;% endmermaid %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="复选列表-checkbox"><a href="#复选列表-checkbox" class="headerlink" title="复选列表 checkbox"></a>复选列表 checkbox</h2><div class="tabs" id="checkbox"><ul class="nav-tabs"><button type="button" class="tab " data-href="checkbox-1">标签语法</button><button type="button" class="tab " data-href="checkbox-2">配置参数</button><button type="button" class="tab  active" data-href="checkbox-3">样式预览</button><button type="button" class="tab " data-href="checkbox-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="checkbox-1"><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;% checkbox 样式参数（可选）, 文本（支持简单md） %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="checkbox-2"><ol><li>样式: plus, minus, times</li><li>颜色: <span class='p red'>red</span>,<span class='p yellow'>yellow</span>,<span class='p green'>green</span>,<span class='p cyan'>cyan</span>,<span class='p blue'>blue</span>,<span class='p gray'>gray</span></li><li>选中状态: checked</li></ol></div><div class="tab-item-content active" id="checkbox-3"><div class='checkbox'><input type="checkbox" />            <p>纯文本测试</p>            </div>   <div class='checkbox checked'><input type="checkbox" checked="checked"/>            <p>支持简单的 <a href="https://guides.github.com/features/mastering-markdown/">markdown</a> 语法</p>            </div>   <div class='checkbox red'><input type="checkbox" />            <p>支持自定义颜色</p>            </div>   <div class='checkbox green checked'><input type="checkbox" checked="checked"/>            <p>绿色 + 默认选中</p>            </div>   <div class='checkbox yellow checked'><input type="checkbox" checked="checked"/>            <p>黄色 + 默认选中</p>            </div>   <div class='checkbox cyan checked'><input type="checkbox" checked="checked"/>            <p>青色 + 默认选中</p>            </div>   <div class='checkbox blue checked'><input type="checkbox" checked="checked"/>            <p>蓝色 + 默认选中</p>            </div>   <div class='checkbox plus green checked'><input type="checkbox" checked="checked"/>            <p>增加</p>            </div>   <div class='checkbox minus yellow checked'><input type="checkbox" checked="checked"/>            <p>减少</p>            </div>   <div class='checkbox times red checked'><input type="checkbox" checked="checked"/>            <p>叉</p>            </div></div><div class="tab-item-content" id="checkbox-4"><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;% checkbox 纯文本测试 %&#125;</span><br><span class="line">&#123;% checkbox checked, 支持简单的 [<span class="string">markdown</span>](<span class="link">https://guides.github.com/features/mastering-markdown/</span>) 语法 %&#125;</span><br><span class="line">&#123;% checkbox red, 支持自定义颜色 %&#125;</span><br><span class="line">&#123;% checkbox green checked, 绿色 + 默认选中 %&#125;</span><br><span class="line">&#123;% checkbox yellow checked, 黄色 + 默认选中 %&#125;</span><br><span class="line">&#123;% checkbox cyan checked, 青色 + 默认选中 %&#125;</span><br><span class="line">&#123;% checkbox blue checked, 蓝色 + 默认选中 %&#125;</span><br><span class="line">&#123;% checkbox plus green checked, 增加 %&#125;</span><br><span class="line">&#123;% checkbox minus yellow checked, 减少 %&#125;</span><br><span class="line">&#123;% checkbox times red checked, 叉 %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="dogeplayer-多吉云播放器"><a href="#dogeplayer-多吉云播放器" class="headerlink" title="dogeplayer 多吉云播放器"></a>dogeplayer 多吉云播放器</h2><div class="note blue anzhiyufont anzhiyu-icon-bullhorn simple"><p>快捷引入<a href="https://console.dogecloud.com/vod/overview">多吉云视频</a></p></div><div class="tabs" id="label"><ul class="nav-tabs"><button type="button" class="tab " data-href="label-1">标签语法</button><button type="button" class="tab " data-href="label-2">参数配置</button><button type="button" class="tab  active" data-href="label-3">样式预览</button><button type="button" class="tab " data-href="label-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="label-1"><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;% dogeplayer 4945 ebb742fd1f0b5a7b %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="label-2"><p>获取<code>userId</code>与<code>vcode</code></p><p><img src="https://bu.dusays.com/2023/06/01/64788b5bad729.webp"></p><table><thead><tr><th align="left">参数</th><th align="left">含义</th></tr></thead><tbody><tr><td align="left">userId</td><td align="left">多吉云userId</td></tr><tr><td align="left">vcode</td><td align="left">视频vcode</td></tr></tbody></table></div><div class="tab-item-content active" id="label-3"><p><img src="https://bu.dusays.com/2023/06/01/64788c12883b8.webp"></p></div><div class="tab-item-content" id="label-4"><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;% dogeplayer 4945 ebb742fd1f0b5a7b %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="折叠框-folding"><a href="#折叠框-folding" class="headerlink" title="折叠框 folding"></a>折叠框 folding</h2><div class="note blue anzhiyufont anzhiyu-icon-bullhorn disabled"><p>折叠框folding</p></div><div class="tabs" id="folding"><ul class="nav-tabs"><button type="button" class="tab " data-href="folding-1">标签语法</button><button type="button" class="tab " data-href="folding-2">配置参数</button><button type="button" class="tab  active" data-href="folding-3">样式预览</button><button type="button" class="tab " data-href="folding-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="folding-1"><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;% folding 参数（可选）, 标题 %&#125;</span><br><span class="line">![](<span class="link">https://bu.dusays.com/2023/06/01/64788d71c832d.webp</span>)</span><br><span class="line">&#123;% endfolding %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="folding-2"><ol><li>颜色：blue, cyan, green, yellow, red</li><li>状态：状态填写 open 代表默认打开。</li></ol></div><div class="tab-item-content active" id="folding-3"><details class="folding-tag" ><summary> 查看图片测试 </summary>              <div class='content'>              <p><img src="https://bu.dusays.com/2023/06/01/64788d71c832d.webp"></p>              </div>            </details><details class="folding-tag" cyan open><summary> 查看默认打开的折叠框 </summary>              <div class='content'>              <p>这是一个默认打开的折叠框。</p>              </div>            </details><details class="folding-tag" green><summary> 查看代码测试 </summary>              <div class='content'>              <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">![](<span class="link">https://bu.dusays.com/2023/06/01/64788d71c832d.webp</span>)</span><br></pre></td></tr></table></figure>              </div>            </details><details class="folding-tag" yellow><summary> 查看列表测试 </summary>              <div class='content'>              <ul><li>haha</li><li>hehe</li></ul>              </div>            </details><details class="folding-tag" red><summary> 查看嵌套测试 </summary>              <div class='content'>              <details class="folding-tag" ><summary> 查看嵌套测试2 </summary>              <div class='content'>              <details class="folding-tag" ><summary> 查看嵌套测试3 </summary>              <div class='content'>              <p>hahaha <span><img src='https://bu.dusays.com/2023/06/01/64788cd5a356b.png' style='height:24px'></span></p>              </div>            </details>              </div>            </details>              </div>            </details></div><div class="tab-item-content" id="folding-4"><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></pre></td><td class="code"><pre><span class="line">&#123;% folding 查看图片测试 %&#125;</span><br><span class="line"></span><br><span class="line">![](<span class="link">https://bu.dusays.com/2023/06/01/64788d71c832d.webp</span>)</span><br><span class="line"></span><br><span class="line">&#123;% endfolding %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% folding cyan open, 查看默认打开的折叠框 %&#125;</span><br><span class="line"></span><br><span class="line">这是一个默认打开的折叠框。</span><br><span class="line"></span><br><span class="line">&#123;% endfolding %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% folding green, 查看代码测试 %&#125;</span><br><span class="line">假装这里有代码块（代码块没法嵌套代码块）</span><br><span class="line">&#123;% endfolding %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% folding yellow, 查看列表测试 %&#125;</span><br><span class="line"></span><br><span class="line"><span class="bullet">-</span> haha</span><br><span class="line"><span class="bullet">-</span> hehe</span><br><span class="line"></span><br><span class="line">&#123;% endfolding %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% folding red, 查看嵌套测试 %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% folding, 查看嵌套测试2 %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% folding 查看嵌套测试3 %&#125;</span><br><span class="line"></span><br><span class="line">hahaha <span class="language-xml"><span class="tag">&lt;<span class="name">span</span>&gt;</span></span><span class="language-xml"><span class="tag">&lt;<span class="name">img</span> <span class="attr">src</span>=<span class="string">&#x27;https://bu.dusays.com/2023/06/01/64788cd5a356b.png&#x27;</span> <span class="attr">style</span>=<span class="string">&#x27;height:24px&#x27;</span>&gt;</span></span><span class="language-xml"><span class="tag">&lt;/<span class="name">span</span>&gt;</span></span></span><br><span class="line"></span><br><span class="line">&#123;% endfolding %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% endfolding %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% endfolding %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="Gallery-相册图库"><a href="#Gallery-相册图库" class="headerlink" title="Gallery 相册图库"></a>Gallery 相册图库</h2><p>一个图库集合。</p><div class="tabs" id="gallery"><ul class="nav-tabs"><button type="button" class="tab " data-href="gallery-1">标签语法</button><button type="button" class="tab " data-href="gallery-2">参数配置</button><button type="button" class="tab  active" data-href="gallery-3">样式预览</button><button type="button" class="tab " data-href="gallery-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="gallery-1"><ol><li><p>gallerygroup 相册图库</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></li><li><p>gallery 相册</p></li></ol><div class="tabs" id="gallery相册"><ul class="nav-tabs"><button type="button" class="tab  active" data-href="gallery相册-1">本地</button><button type="button" class="tab " data-href="gallery相册-2">远程</button></ul><div class="tab-contents"><div class="tab-item-content active" id="gallery相册-1"><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">&#123;% gallery %&#125;</span><br><span class="line">markdown 图片格式</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% gallery true,220,10 %&#125;</span><br><span class="line">markdown 图片格式</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% gallery true,,10 %&#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>lazyload</td><td>【可选】点击按钮加载更多图片，填写 true&#x2F;false。默认为 <code>false</code>。</td></tr><tr><td>rowHeight</td><td>【可选】图片显示的高度，如果需要一行显示更多的图片，可设置更小的数字。默认为 <code>220</code>。</td></tr><tr><td>limit</td><td>【可选】每次加载多少张照片。默认为 <code>10</code>。</td></tr></tbody></table></div><div class="tab-item-content" id="gallery相册-2"><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],[lazyload],[rowHeight],[limit] %&#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>lazyload</td><td>【可选】点击按钮加载更多图片，填写 true&#x2F;false。默认为 <code>false</code>。</td></tr><tr><td>rowHeight</td><td>【可选】图片显示的高度，如果需要一行显示更多的图片，可设置更小的数字。默认为 <code>220</code>。</td></tr><tr><td>limit</td><td>【可选】每次加载多少张照片。默认为 <code>10</code>。</td></tr></tbody></table><blockquote><p>远程链接 Json 的例子</p></blockquote><p>有三个参数，<code>url</code>是必须存在的，<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></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://cdn1.tianli0.top/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://cdn1.tianli0.top/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://cdn1.tianli0.top/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://cdn1.tianli0.top/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></pre></td></tr></table></figure><blockquote><p>示例</p></blockquote><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;% 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></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div></div><div class="tab-item-content" id="gallery-2"><ul><li><p>gallerygroup 相册图库</p><table><thead><tr><th align="left">参数名</th><th align="left">释义</th></tr></thead><tbody><tr><td align="left">name</td><td align="left">图库名字</td></tr><tr><td align="left">description</td><td align="left">图库描述</td></tr><tr><td align="left">link</td><td align="left">链接到对应相册的地址</td></tr><tr><td align="left">img-url</td><td align="left">图库封面</td></tr></tbody></table></li></ul><div class="note info flat"><p>思维拓展一下，相册图库的实质其实就是个快捷方式，可以自定义添加描述、封面、链接。那么我们未必要把它当做一个相册，完全可以作为一个链接卡片，链接到视频、QQ、友链都是不错的选择。</p></div><ul><li>gallery 相册<br>区别于旧版的 Gallery 相册,新的 Gallery 相册会自动根据图片长度进行排版，书写也更加方便，与 markdown 格式一样。可根据需要插入到相应的 md。无需再自己配置长宽。<strong>建议在粘贴时故意使用长短、大小、横竖不一的图片</strong>，会有更好的效果。（尺寸完全相同的图片只会平铺输出，效果很糟糕）</li></ul><div class="tabs" id="gallery相册参数"><ul class="nav-tabs"><button type="button" class="tab  active" data-href="gallery相册参数-1">本地</button><button type="button" class="tab " data-href="gallery相册参数-2">远程</button></ul><div class="tab-contents"><div class="tab-item-content active" id="gallery相册参数-1"><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">&#123;% gallery %&#125;</span><br><span class="line">markdown 图片格式</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% gallery true,220,10 %&#125;</span><br><span class="line">markdown 图片格式</span><br><span class="line">&#123;% endgallery %&#125;</span><br><span class="line"></span><br><span class="line">&#123;% gallery true,,10 %&#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>lazyload</td><td>【可选】点击按钮加载更多图片，填写 true&#x2F;false。默认为 <code>false</code>。</td></tr><tr><td>rowHeight</td><td>【可选】图片显示的高度，如果需要一行显示更多的图片，可设置更小的数字。默认为 <code>220</code>。</td></tr><tr><td>limit</td><td>【可选】每次加载多少张照片。默认为 <code>10</code>。</td></tr></tbody></table></div><div class="tab-item-content" id="gallery相册参数-2"><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],[lazyload],[rowHeight],[limit] %&#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>lazyload</td><td>【可选】点击按钮加载更多图片，填写 true&#x2F;false。默认为 <code>false</code>。</td></tr><tr><td>rowHeight</td><td>【可选】图片显示的高度，如果需要一行显示更多的图片，可设置更小的数字。默认为 <code>220</code>。</td></tr><tr><td>limit</td><td>【可选】每次加载多少张照片。默认为 <code>10</code>。</td></tr></tbody></table><blockquote><p>远程链接 Json 的例子</p></blockquote><p>有三个参数，<code>url</code>是必须存在的，<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></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://cdn1.tianli0.top/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://cdn1.tianli0.top/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://cdn1.tianli0.top/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://cdn1.tianli0.top/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></pre></td></tr></table></figure><blockquote><p>示例</p></blockquote><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;% 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></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div></div><div class="tab-item-content active" id="gallery-3"><ul><li>gallerygroup 相册图库</li></ul><div class="gallery-group-main">  <figure class="gallery-group">  <img class="gallery-group-img no-lightbox" src='https://bu.dusays.com/2023/06/01/64788f24d05bd.webp' alt="Group Image Gallery">  <figcaption>  <div class="gallery-group-name">MC</div>  <p>在Rikkaの六花服务器里留下的足迹</p>  <a href='/wordScenery/'></a>  </figcaption>  </figure>    <figure class="gallery-group">  <img class="gallery-group-img no-lightbox" src='https://bu.dusays.com/2023/06/01/64788f456fc3d.webp' alt="Group Image Gallery">  <figcaption>  <div class="gallery-group-name">Gundam</div>  <p>哦咧哇gundam哒！</p>  <a href='/thousand/'></a>  </figcaption>  </figure>    <figure class="gallery-group">  <img class="gallery-group-img no-lightbox" src='https://bu.dusays.com/2023/06/01/64788f83e5fa1.webp' alt="Group Image Gallery">  <figcaption>  <div class="gallery-group-name">I-am-Akilar</div>  <p>某种意义上也算自拍吧</p>  <a href='/wallpaper/'></a>  </figcaption>  </figure>  </div><ul><li>gallery 相册</li></ul><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="220" data-limit="2">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/06/01/647896b15759c.jpg","alt":""},{"url":"https://bu.dusays.com/2023/06/01/647896cabde59.jpg","alt":""},{"url":"https://bu.dusays.com/2023/06/01/647896eb0f3ea.jpg","alt":""},{"url":"https://bu.dusays.com/2023/06/01/647896ed810b3.jpg","alt":""},{"url":"https://i.loli.net/2019/12/25/6nepIJ1xTgufatZ.jpg","alt":""},{"url":"https://i.loli.net/2019/12/25/E7Jvr4eIPwUNmzq.jpg","alt":""},{"url":"https://i.loli.net/2019/12/25/mh19anwBSWIkGlH.jpg","alt":""},{"url":"https://i.loli.net/2019/12/25/2tu9JC8ewpBFagv.jpg","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div></div><div class="tab-item-content" id="gallery-4"><div class="note info flat"><p>对于很多同学提问的<code>gallerygroup</code>和<code>gallery</code>相册页的链接问题。这里说下我个人的使用习惯。<br>一般使用相册图库的话，可以在导航栏加一个 gallery 的 page(<strong>使用指令<code>hexo new page gallery</code>添加</strong>)，里面放相册图库作为封面。然后在<code>[Blogroot]/source/gallery/</code>下面建立相应的文件夹，例如若按照这里的示例，若欲使用<code>/gallery/MC/</code>路径访问 MC 相册，则需要新建<code>[Blogroot]/source/gallery/MC/index.md</code>，并在里面填入<code>gallery</code>相册内容。</p><p>注意 ⚠️：本站相册集为单独优化，可参考<a href="https://blog.anheyu.com/posts/220c.html">配置相册页面</a>。</p></div><ol><li><p>gallerygroup 相册图库</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 MC 在Rikkaの六花服务器里留下的足迹 &#x27;/wordScenery/&#x27; https://bu.dusays.com/2023/06/01/64788f24d05bd.webp %&#125;</span><br><span class="line"> &#123;% galleryGroup Gundam 哦咧哇gundam哒！ &#x27;/thousand/&#x27; https://bu.dusays.com/2023/06/01/64788f456fc3d.webp %&#125;</span><br><span class="line"> &#123;% galleryGroup I-am-Akilar 某种意义上也算自拍吧 &#x27;/wallpaper/&#x27; https://bu.dusays.com/2023/06/01/64788f83e5fa1.webp %&#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></li><li><p>gallery 相册</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;% gallery true,,2 %&#125;</span><br><span class="line">![](<span class="link">https://bu.dusays.com/2023/06/01/647896b15759c.jpg</span>)</span><br><span class="line">![](<span class="link">https://bu.dusays.com/2023/06/01/647896cabde59.jpg</span>)</span><br><span class="line">![](<span class="link">https://bu.dusays.com/2023/06/01/647896eb0f3ea.jpg</span>)</span><br><span class="line">![](<span class="link">https://bu.dusays.com/2023/06/01/647890012b1ec.webp</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></li></ol></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-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 blue anzhiyufont anzhiyu-icon-bullhorn flat"><p>如果你想把一些文字、内容隐藏起来，并提供按钮让用户点击显示。可以使用这个标签外挂。<br>请注意，tag-hide内的标签外挂content内都不建议有h1 - h6 等标题。因为Toc会把隐藏内容标题也显示出来，而且当滚动屏幕时，如果隐藏内容没有显示出来，会导致Toc的滚动出现异常。</p></div><div class="tabs" id="tag-hide"><ul class="nav-tabs"><button type="button" class="tab  active" data-href="tag-hide-1">inline</button><button type="button" class="tab " data-href="tag-hide-2">Block</button><button type="button" class="tab " data-href="tag-hide-3">Toggle</button></ul><div class="tab-contents"><div class="tab-item-content active" id="tag-hide-1"><p><code>inline</code> 在文本里面添加按钮隐藏内容，只限文字</p><p>( content不能包含英文逗号，可用<code>&amp;sbquo;</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><ul><li><p>content: 文本内容</p></li><li><p>display: 按钮显示的文字(可选)</p></li><li><p>bg: 按钮的背景颜色(可选)</p></li><li><p>color: 按钮文字的颜色(可选)</p></li></ul><blockquote><p>Demo</p></blockquote><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">查看答案<br>  </button><span class="hide-content">因为西装裤(C装酷)</span></span></p><p>门里站着一个人? <span class="hide-inline"><button type="button" class="hide-button" style="">Click<br>  </button><span class="hide-content">闪</span></span></p></div><div class="tab-item-content" id="tag-hide-2"><p><code>block</code>独立的block隐藏内容，可以隐藏很多内容，包括图片，代码块等等</p><p>( display 不能包含英文逗号，可用<code>&amp;sbquo;</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><ul><li><p>content: 文本内容</p></li><li><p>display: 按钮显示的文字(可选)</p></li><li><p>bg: 按钮的背景颜色(可选)</p></li><li><p>color: 按钮文字的颜色(可选)</p></li></ul><blockquote><p>Demo</p></blockquote><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">查看答案</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><div class="tab-item-content" id="tag-hide-3"><p>如果你需要展示的内容太多，可以把它隐藏在收缩框里，需要时再把它展开。</p><p>( display 不能包含英文逗号，可用<code>&amp;sbquo;</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><blockquote><p>Demo</p></blockquote><details class="toggle" ><summary class="toggle-button" style="">AnZhiYu主题安装方法</summary><div class="toggle-content"><p>在你的博客根目录里</p><p>git clone -b master <a href="https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git">https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git</a> themes&#x2F;anzhiyu</p><p>如果想要安装比较新的dev分支，可以</p><p>git clone -b dev <a href="https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git">https://github.com/anzhiyu-c/hexo-theme-anzhiyu.git</a> themes&#x2F;anzhiyu</p></div></details></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="链接卡片-link"><a href="#链接卡片-link" class="headerlink" title="链接卡片 link"></a>链接卡片 link</h2><div class="tabs" id="link"><ul class="nav-tabs"><button type="button" class="tab " data-href="link-1">标签语法</button><button type="button" class="tab  active" data-href="link-2">样式预览</button><button type="button" class="tab " data-href="link-3">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="link-1"><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 标题, 站点描述, 链接, 图片链接（可选） %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content active" id="link-2"><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://github.com/owen0o0/getFavicon">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">获取网站的Favicon图标并显示在你的网页上</div>            <div class="tag-link-sitename">owen0o0</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div></div><div class="tab-item-content" id="link-3"><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 获取网站的Favicon图标并显示在你的网页上,owen0o0,https://github.com/owen0o0/getFavicon %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="单选列表-radio"><a href="#单选列表-radio" class="headerlink" title="单选列表 radio"></a>单选列表 radio</h2><div class="tabs" id="radio"><ul class="nav-tabs"><button type="button" class="tab " data-href="radio-1">标签语法</button><button type="button" class="tab " data-href="radio-2">配置参数</button><button type="button" class="tab  active" data-href="radio-3">样式预览</button><button type="button" class="tab " data-href="radio-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="radio-1"><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;% radio 样式参数（可选）, 文本（支持简单md） %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="radio-2"><ol><li>颜色: <span class='p red'>red</span>,<span class='p yellow'>yellow</span>,<span class='p green'>green</span>,<span class='p cyan'>cyan</span>,<span class='p blue'>blue</span>,<span class='p gray'>gray</span></li><li>选中状态: checked</li></ol></div><div class="tab-item-content active" id="radio-3"><div class='checkbox'><input type="radio" />            <p>纯文本测试</p>            </div>   <div class='checkbox checked'><input type="radio" checked="checked"/>            <p>支持简单的 <a href="https://guides.github.com/features/mastering-markdown/">markdown</a> 语法</p>            </div>   <div class='checkbox red'><input type="radio" />            <p>支持自定义颜色</p>            </div>   <div class='checkbox green'><input type="radio" />            <p>绿色</p>            </div>   <div class='checkbox yellow'><input type="radio" />            <p>黄色</p>            </div>   <div class='checkbox cyan'><input type="radio" />            <p>青色</p>            </div>   <div class='checkbox blue'><input type="radio" />            <p>蓝色</p>            </div></div><div class="tab-item-content" id="radio-4"><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></pre></td><td class="code"><pre><span class="line">&#123;% radio 纯文本测试 %&#125;</span><br><span class="line">&#123;% radio checked, 支持简单的 [<span class="string">markdown</span>](<span class="link">https://guides.github.com/features/mastering-markdown/</span>) 语法 %&#125;</span><br><span class="line">&#123;% radio red, 支持自定义颜色 %&#125;</span><br><span class="line">&#123;% radio green, 绿色 %&#125;</span><br><span class="line">&#123;% radio yellow, 黄色 %&#125;</span><br><span class="line">&#123;% radio cyan, 青色 %&#125;</span><br><span class="line">&#123;% radio blue, 蓝色 %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="上标标签-tip"><a href="#上标标签-tip" class="headerlink" title="上标标签 tip"></a>上标标签 tip</h2><div class="tip cogs"><p>主要样式参考自<a href="https://www.antmoe.com/posts/3b43914f/">小康的 butterfly 渐变背景标签</a></p></div><div class="tabs" id="tip"><ul class="nav-tabs"><button type="button" class="tab " data-href="tip-1">标签语法</button><button type="button" class="tab " data-href="tip-2">配置参数</button><button type="button" class="tab  active" data-href="tip-3">样式预览</button><button type="button" class="tab " data-href="tip-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="tip-1"><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;% tip [参数，可选] %&#125;文本内容&#123;% endtip %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="tip-2"><ol><li>样式: success,error,warning,bolt,ban,home,sync,cogs,key,bell</li><li>自定义图标: 支持 fontawesome。</li></ol></div><div class="tab-item-content active" id="tip-3"><div class="tip "><p>default</p></div><div class="tip info"><p>info</p></div><div class="tip success"><p>success</p></div><div class="tip error"><p>error</p></div><div class="tip warning"><p>warning</p></div><div class="tip bolt"><p>bolt</p></div><div class="tip ban"><p>ban</p></div><div class="tip home"><p>home</p></div><div class="tip sync"><p>sync</p></div><div class="tip cogs"><p>cogs</p></div><div class="tip key"><p>key</p></div><div class="tip bell"><p>bell</p></div><div class="tip fa-atom"><p>自定义 font awesome 图标</p></div></div><div class="tab-item-content" id="tip-4"><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></pre></td><td class="code"><pre><span class="line">&#123;% tip %&#125;default&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip info %&#125;info&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip success %&#125;success&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip error %&#125;error&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip warning %&#125;warning&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip bolt %&#125;bolt&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip ban %&#125;ban&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip home %&#125;home&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip sync %&#125;sync&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip cogs %&#125;cogs&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip key %&#125;key&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip bell %&#125;bell&#123;% endtip %&#125;</span><br><span class="line">&#123;% tip fa-atom %&#125;自定义 font awesome 图标&#123;% endtip %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="Note-Bootstrap-Callout"><a href="#Note-Bootstrap-Callout" class="headerlink" title="Note (Bootstrap Callout)"></a>Note (Bootstrap Callout)</h2><div class="tabs" id="note"><ul class="nav-tabs"><button type="button" class="tab " data-href="note-1">通用配置</button><button type="button" class="tab " data-href="note-2">语法格式</button><button type="button" class="tab " data-href="note-3">配置参数</button><button type="button" class="tab  active" data-href="note-4">样式预览</button><button type="button" class="tab " data-href="note-5">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="note-1"><p>修改主题配置文件</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><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="attr">note:</span></span><br><span class="line">  <span class="comment"># Note tag style values:</span></span><br><span class="line">  <span class="comment">#  - simple    bs-callout old alert style. Default.</span></span><br><span class="line">  <span class="comment">#  - modern    bs-callout new (v2-v3) alert style.</span></span><br><span class="line">  <span class="comment">#  - flat      flat callout style with background, like on Mozilla or StackOverflow.</span></span><br><span class="line">  <span class="comment">#  - disabled  disable all CSS styles import of note tag.</span></span><br><span class="line">  <span class="attr">style:</span> <span class="string">simple</span></span><br><span class="line">  <span class="attr">icons:</span> <span class="literal">false</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"># Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6).</span></span><br><span class="line">  <span class="comment"># Offset also applied to label tag variables. This option can work with disabled note tag.</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>Note</code>标签外挂有两种用法。<code>icons</code>和<code>light_bg_offset</code>只对方法一生效。</p><p><code>fontawesome</code>图标需开启主题配置文件中<code>icons.fontawesome</code></p></div><div class="tab-item-content" id="note-2"><p><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;% note [class] [no-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><p><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;% 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></div><div class="tab-item-content" id="note-3"><p><code>方法一</code></p><table><thead><tr><th align="left">参数</th><th align="left">用法</th></tr></thead><tbody><tr><td align="left">class</td><td align="left">【可选】标识，不同的标识有不同的配色<br>（ default &#x2F; primary &#x2F; success &#x2F; info &#x2F; warning &#x2F; danger ）</td></tr><tr><td align="left">no-icon</td><td align="left">【可选】不显示 icon</td></tr><tr><td align="left">style</td><td align="left">【可选】可以覆盖配置中的 style<br>（simple&#x2F;modern&#x2F;flat&#x2F;disabled）</td></tr></tbody></table><p><code>方法二</code></p><table><thead><tr><th align="left">参数</th><th align="left">用法</th></tr></thead><tbody><tr><td align="left">class</td><td align="left">【可选】标识，不同的标识有不同的配色<br>（ default &#x2F; blue &#x2F; pink &#x2F; red &#x2F; purple &#x2F; orange &#x2F; green ）</td></tr><tr><td align="left">no-icon</td><td align="left">【可选】可配置自定义 icon (支持 fontawesome 图标和主题内置的阿里图标,<code>fontawesome</code>图标需开启主题配置文件中<code>icons.fontawesome</code>, 也可以配置 no-icon )</td></tr><tr><td align="left">style</td><td align="left">【可选】可以覆盖配置中的 style<br>（simple&#x2F;modern&#x2F;flat&#x2F;disabled）</td></tr></tbody></table></div><div class="tab-item-content active" id="note-4"><p><code>方法一</code></p><ol><li><code>simple</code>样式</li></ol><div class="note simple"><p>默认 提示块标签</p></div><div class="note default simple"><p>default 提示块标签</p></div><div class="note primary simple"><p>primary 提示块标签</p></div><div class="note success simple"><p>success 提示块标签</p></div><div class="note info simple"><p>info 提示块标签</p></div><div class="note warning simple"><p>warning 提示块标签</p></div><div class="note danger simple"><p>danger 提示块标签</p></div><ol start="2"><li><code>modern</code>样式</li></ol><div class="note modern"><p>默认 提示块标签</p></div><div class="note default modern"><p>default 提示块标签</p></div><div class="note primary modern"><p>primary 提示块标签</p></div><div class="note success modern"><p>success 提示块标签</p></div><div class="note info modern"><p>info 提示块标签</p></div><div class="note warning modern"><p>warning 提示块标签</p></div><div class="note danger modern"><p>danger 提示块标签</p></div><ol start="3"><li><code>flat</code>样式</li></ol><div class="note flat"><p>默认 提示块标签</p></div><div class="note default flat"><p>default 提示块标签</p></div><div class="note primary flat"><p>primary 提示块标签</p></div><div class="note success flat"><p>success 提示块标签</p></div><div class="note info flat"><p>info 提示块标签</p></div><div class="note warning flat"><p>warning 提示块标签</p></div><div class="note danger flat"><p>danger 提示块标签</p></div><ol start="4"><li><code>disabled</code>样式</li></ol><div class="note disabled"><p>默认 提示块标签</p></div><div class="note default disabled"><p>default 提示块标签</p></div><div class="note primary disabled"><p>primary 提示块标签</p></div><div class="note success disabled"><p>success 提示块标签</p></div><div class="note info disabled"><p>info 提示块标签</p></div><div class="note warning disabled"><p>warning 提示块标签</p></div><div class="note danger disabled"><p>danger 提示块标签</p></div><ol start="5"><li><code>no-icon</code>样式</li></ol><div class="note no-icon flat"><p>默认 提示块标签</p></div><div class="note default no-icon flat"><p>default 提示块标签</p></div><div class="note primary no-icon flat"><p>primary 提示块标签</p></div><div class="note success no-icon flat"><p>success 提示块标签</p></div><div class="note info no-icon flat"><p>info 提示块标签</p></div><div class="note warning no-icon flat"><p>warning 提示块标签</p></div><div class="note danger no-icon flat"><p>danger 提示块标签</p></div><p><code>方法二</code></p><p>图标支持 <code>fontawesome</code> 和 <code>主题内置的阿里图标</code>，使用方法为加上对应的类名，<code>fontawesome</code>图标需开启主题配置文件中<code>icons.fontawesome</code>，默认未开启 fontawesome</p><ol><li>simple 样式</li></ol><p><code>主题内置阿里图标</code></p><div class="note anzhiyufont anzhiyu-icon-rocket simple"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue anzhiyufont anzhiyu-icon-bullhorn simple"><p>2022 年快到了….</p></div><div class="note pink anzhiyufont anzhiyu-icon-instagram simple"><p>小心开车 安全至上</p></div><div class="note red anzhiyufont anzhiyu-icon-fan simple"><p>这是三片呢？还是四片？</p></div><div class="note orange anzhiyufont anzhiyu-icon-dengpao simple"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple anzhiyufont anzhiyu-icon-sanmingzhi simple"><p>剪刀石头布</p></div><div class="note green anzhiyufont anzhiyu-icon-ic_train simple"><p>前端最讨厌的浏览器</p></div><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</code>后可见</p><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>2022 年快到了….</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-fan simple"><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><ol start="2"><li>modern 样式</li></ol><p><code>主题内置阿里图标</code></p><div class="note anzhiyufont anzhiyu-icon-rocket modern"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue anzhiyufont anzhiyu-icon-bullhorn modern"><p>2022 年快到了….</p></div><div class="note pink anzhiyufont anzhiyu-icon-instagram modern"><p>小心开车 安全至上</p></div><div class="note red anzhiyufont anzhiyu-icon-fan modern"><p>这是三片呢？还是四片？</p></div><div class="note orange anzhiyufont anzhiyu-icon-dengpao modern"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple anzhiyufont anzhiyu-icon-sanmingzhi modern"><p>剪刀石头布</p></div><div class="note green anzhiyufont anzhiyu-icon-ic_train modern"><p>前端最讨厌的浏览器</p></div><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</code>后可见</p><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-fan modern"><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><ol start="3"><li>flat 样式</li></ol><p><code>主题内置阿里图标</code></p><div class="note anzhiyufont anzhiyu-icon-rocket flat"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue anzhiyufont anzhiyu-icon-bullhorn flat"><p>2022 年快到了….</p></div><div class="note pink anzhiyufont anzhiyu-icon-instagram flat"><p>小心开车 安全至上</p></div><div class="note red anzhiyufont anzhiyu-icon-fan flat"><p>这是三片呢？还是四片？</p></div><div class="note orange anzhiyufont anzhiyu-icon-dengpao flat"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple anzhiyufont anzhiyu-icon-sanmingzhi flat"><p>剪刀石头布</p></div><div class="note green anzhiyufont anzhiyu-icon-ic_train flat"><p>前端最讨厌的浏览器</p></div><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</code>后可见</p><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-fan flat"><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><ol start="4"><li>disabled 样式</li></ol><p><code>主题内置阿里图标</code></p><div class="note anzhiyufont anzhiyu-icon-rocket disabled"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note blue anzhiyufont anzhiyu-icon-bullhorn disabled"><p>2022 年快到了….</p></div><div class="note pink anzhiyufont anzhiyu-icon-instagram disabled"><p>小心开车 安全至上</p></div><div class="note red anzhiyufont anzhiyu-icon-fan disabled"><p>这是三片呢？还是四片？</p></div><div class="note orange anzhiyufont anzhiyu-icon-dengpao disabled"><p>你是刷 Visa 还是 UnionPay</p></div><div class="note purple anzhiyufont anzhiyu-icon-sanmingzhi disabled"><p>剪刀石头布</p></div><div class="note green anzhiyufont anzhiyu-icon-ic_train disabled"><p>前端最讨厌的浏览器</p></div><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</code>后可见</p><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-fan disabled"><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><ol start="5"><li>no-icon 样式</li></ol><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 class="tab-item-content" id="note-5"><p><code>方法一</code></p><ol><li><code>simple</code>样式</li></ol><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></pre></td><td class="code"><pre><span class="line">&#123;% note simple %&#125;默认 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note default simple %&#125;default 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note primary simple %&#125;primary 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note success simple %&#125;success 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note info simple %&#125;info 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note warning simple %&#125;warning 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note danger simple %&#125;danger 提示块标签&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><ol start="2"><li><code>modern</code>样式</li></ol><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></pre></td><td class="code"><pre><span class="line">&#123;% note modern %&#125;默认 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note default modern %&#125;default 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note primary modern %&#125;primary 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note success modern %&#125;success 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note info modern %&#125;info 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note warning modern %&#125;warning 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note danger modern %&#125;danger 提示块标签&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li><code>flat</code>样式</li></ol><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></pre></td><td class="code"><pre><span class="line">&#123;% note flat %&#125;默认 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note default flat %&#125;default 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note primary flat %&#125;primary 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note success flat %&#125;success 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note info flat %&#125;info 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note warning flat %&#125;warning 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note danger flat %&#125;danger 提示块标签&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><ol start="4"><li><code>disabled</code>样式</li></ol><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></pre></td><td class="code"><pre><span class="line">&#123;% note disabled %&#125;默认 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note default disabled %&#125;default 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note primary disabled %&#125;primary 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note success disabled %&#125;success 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note info disabled %&#125;info 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note warning disabled %&#125;warning 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note danger disabled %&#125;danger 提示块标签&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><ol start="5"><li><code>no-icon</code>样式</li></ol><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></pre></td><td class="code"><pre><span class="line">&#123;% note no-icon %&#125;默认 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note default no-icon %&#125;default 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note primary no-icon %&#125;primary 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note success no-icon %&#125;success 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note info no-icon %&#125;info 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note warning no-icon %&#125;warning 提示块标签&#123;% endnote %&#125;</span><br><span class="line">&#123;% note danger no-icon %&#125;danger 提示块标签&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure><p><code>方法二</code></p><p>图标支持 <code>fontawesome</code> 和 <code>主题内置的阿里图标</code>，使用方法为加上对应的类名，<code>fontawesome</code>图标需开启主题配置文件中<code>icons.fontawesome</code>，默认未开启 fontawesome</p><ol><li><p>simple 样式<br><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><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">&#123;% note &#x27;anzhiyufont anzhiyu-icon-rocket&#x27; simple %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;anzhiyufont anzhiyu-icon-bullhorn&#x27; simple %&#125;2022 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;anzhiyufont anzhiyu-icon-instagram&#x27; simple %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;anzhiyufont anzhiyu-icon-fan&#x27; simple%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;anzhiyufont anzhiyu-icon-dengpao&#x27; simple %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;anzhiyufont anzhiyu-icon-sanmingzhi&#x27; simple %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;anzhiyufont anzhiyu-icon-ic<span class="emphasis">_train&#x27; simple %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span></span><br></pre></td></tr></table></figure><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</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><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">&#123;% note &#x27;fab fa-cc-visa&#x27; simple %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; simple %&#125;2022 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; simple %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;icon-fan&#x27; simple%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; simple %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; simple %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; simple %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure></li><li><p>modern 样式<br><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><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">&#123;% note &#x27;anzhiyufont anzhiyu-icon-rocket&#x27; modern %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;anzhiyufont anzhiyu-icon-bullhorn&#x27; modern %&#125;2022 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;anzhiyufont anzhiyu-icon-instagram&#x27; modern %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;anzhiyufont anzhiyu-icon-fan&#x27; modern%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;anzhiyufont anzhiyu-icon-dengpao&#x27; modern %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;anzhiyufont anzhiyu-icon-sanmingzhi&#x27; modern %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;anzhiyufont anzhiyu-icon-ic<span class="emphasis">_train&#x27; modern %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span></span><br></pre></td></tr></table></figure><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</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><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">&#123;% note &#x27;fab fa-cc-visa&#x27; modern %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; modern %&#125;2021 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; modern %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;icon-fan&#x27; modern%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; modern %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; modern %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; modern %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure></li><li><p>flat 样式<br><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><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">&#123;% note &#x27;anzhiyufont anzhiyu-icon-rocket&#x27; flat %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;anzhiyufont anzhiyu-icon-bullhorn&#x27; flat %&#125;2022 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;anzhiyufont anzhiyu-icon-instagram&#x27; flat %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;anzhiyufont anzhiyu-icon-fan&#x27; flat%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;anzhiyufont anzhiyu-icon-dengpao&#x27; flat %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;anzhiyufont anzhiyu-icon-sanmingzhi&#x27; flat %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;anzhiyufont anzhiyu-icon-ic<span class="emphasis">_train&#x27; flat %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span></span><br></pre></td></tr></table></figure><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</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><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">&#123;% note &#x27;fab fa-cc-visa&#x27; flat %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; flat %&#125;2021 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; flat %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;icon-fan&#x27; flat%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; flat %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; flat %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; flat %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure></li><li><p>disabled 样式<br><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><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">&#123;% note &#x27;anzhiyufont anzhiyu-icon-rocket&#x27; disabled %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;anzhiyufont anzhiyu-icon-bullhorn&#x27; disabled %&#125;2022 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;anzhiyufont anzhiyu-icon-instagram&#x27; disabled %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;anzhiyufont anzhiyu-icon-fan&#x27; disabled%&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;anzhiyufont anzhiyu-icon-dengpao&#x27; disabled %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;anzhiyufont anzhiyu-icon-sanmingzhi&#x27; disabled %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;anzhiyufont anzhiyu-icon-ic<span class="emphasis">_train&#x27; disabled %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span></span><br></pre></td></tr></table></figure><p><code>fontawesome 图标</code>，开启主题配置文件中的<code>icons.fontawesome</code>为<code>true</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><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">&#123;% note &#x27;fab fa-cc-visa&#x27; disabled %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue &#x27;fas fa-bullhorn&#x27; disabled %&#125;2021 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink &#x27;fas fa-car-crash&#x27; disabled %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red &#x27;icon-fan&#x27; disabled %&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange &#x27;fas fa-battery-half&#x27; disabled %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple &#x27;far fa-hand-scissors&#x27; disabled %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green &#x27;fab fa-internet-explorer&#x27; disabled %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure></li><li><p>no-icon 样式</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></pre></td><td class="code"><pre><span class="line">&#123;% note no-icon %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note blue no-icon %&#125;2021 年快到了....&#123;% endnote %&#125;</span><br><span class="line">&#123;% note pink no-icon %&#125;小心开车 安全至上&#123;% endnote %&#125;</span><br><span class="line">&#123;% note red no-icon %&#125;这是三片呢？还是四片？&#123;% endnote %&#125;</span><br><span class="line">&#123;% note orange no-icon %&#125;你是刷 Visa 还是 UnionPay&#123;% endnote %&#125;</span><br><span class="line">&#123;% note purple no-icon %&#125;剪刀石头布&#123;% endnote %&#125;</span><br><span class="line">&#123;% note green no-icon %&#125;前端最讨厌的浏览器&#123;% endnote %&#125;</span><br></pre></td></tr></table></figure></li></ol></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="音频-audio"><a href="#音频-audio" class="headerlink" title="音频 audio"></a>音频 audio</h2><div class="tabs" id="audio"><ul class="nav-tabs"><button type="button" class="tab " data-href="audio-1">标签语法</button><button type="button" class="tab  active" data-href="audio-2">样式预览</button><button type="button" class="tab " data-href="audio-3">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="audio-1"><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;% audio 音频链接 %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content active" id="audio-2"><div class="audio"><audio controls preload><source src='https://npm.elemecdn.com/anzhiyu-music@1.0.4/%E9%9D%92%E8%8A%B1%E7%93%B7/%E9%9D%92%E8%8A%B1%E7%93%B7.mp3' type='audio/mp3'>Your browser does not support the audio tag.</audio></div></div><div class="tab-item-content" id="audio-3"><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;% audio https://npm.elemecdn.com/anzhiyu-music@1.0.4/%E9%9D%92%E8%8A%B1%E7%93%B7/%E9%9D%92%E8%8A%B1%E7%93%B7.mp3 %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div><h2 id="视频-video"><a href="#视频-video" class="headerlink" title="视频 video"></a>视频 video</h2><div class="tabs" id="video"><ul class="nav-tabs"><button type="button" class="tab " data-href="video-1">标签语法</button><button type="button" class="tab " data-href="video-2">参数配置</button><button type="button" class="tab  active" data-href="video-3">样式预览</button><button type="button" class="tab " data-href="video-4">示例源码</button></ul><div class="tab-contents"><div class="tab-item-content" id="video-1"><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;% video 视频链接 %&#125;</span><br></pre></td></tr></table></figure></div><div class="tab-item-content" id="video-2"><ol><li>对其方向：left, center, right</li><li>列数：逗号后面直接写列数，支持 1 ～ 4 列。</li></ol></div><div class="tab-item-content active" id="video-3"><ol start="3"><li>100%宽度</li></ol><p><img src="https://bu.dusays.com/2023/06/01/6478a1eeb1386.png" alt="100%宽度"></p><ol start="2"><li>50%宽度</li></ol><p><img src="https://bu.dusays.com/2023/06/01/6478a20a5f242.png" alt="50%宽度"></p><ol start="3"><li>25%宽度</li></ol><p><img src="https://bu.dusays.com/2023/06/01/6478a22b26088.png" alt="25%宽度"></p></div><div class="tab-item-content" id="video-4"><ol><li>100%宽度</li></ol><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;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br></pre></td></tr></table></figure><ol start="2"><li>50%宽度</li></ol><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;% videos, 2 %&#125;</span><br><span class="line">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br><span class="line"><span class="emphasis">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG_</span>0341.mov %&#125;</span><br><span class="line">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br><span class="line"><span class="emphasis">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG_</span>0341.mov %&#125;</span><br><span class="line">&#123;% endvideos %&#125;</span><br></pre></td></tr></table></figure><ol start="3"><li>25%宽度</li></ol><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;% videos, 4 %&#125;</span><br><span class="line">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br><span class="line"><span class="emphasis">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG_</span>0341.mov %&#125;</span><br><span class="line">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br><span class="line"><span class="emphasis">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG_</span>0341.mov %&#125;</span><br><span class="line">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br><span class="line"><span class="emphasis">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG_</span>0341.mov %&#125;</span><br><span class="line">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG<span class="emphasis">_0341.mov %&#125;</span></span><br><span class="line"><span class="emphasis">&#123;% video https://github.com/volantis-x/volantis-docs/releases/download/assets/IMG_</span>0341.mov %&#125;</span><br><span class="line">&#123;% endvideos %&#125;</span><br></pre></td></tr></table></figure></div></div><div class="tab-to-top"><button type="button" aria-label="scroll to top"><i class="anzhiyufont anzhiyu-icon-arrow-up"></i></button></div></div>]]></content>
    
    
    <summary type="html">添加大量外挂标签样式。</summary>
    
    
    
    
    <category term="Hexo" scheme="https://blog.anheyu.com/tags/Hexo/"/>
    
    <category term="Tag Plugins" scheme="https://blog.anheyu.com/tags/Tag-Plugins/"/>
    
  </entry>
  
  <entry>
    <title>hexo博客工作流CI（一键部署的快乐）</title>
    <link href="https://blog.anheyu.com/posts/b228.html"/>
    <id>https://blog.anheyu.com/posts/b228.html</id>
    <published>2023-02-15T07:55:44.000Z</published>
    <updated>2023-09-02T10:46:30.915Z</updated>
    
    <content type="html"><![CDATA[<p>在日常写博客的过程中我常常使用 CI 部署，一开始我是使用<a href="https://www.jenkins.io/">Jenkins</a>，后来觉得很丑且经常拉库失败（设置的 cron 是半小时拉取一次，然而常常 4-5 小时才能更新）</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/02/15/63ec8e5037b2f.png!blogimg"></p><p>就转向了<a href="https://help.aliyun.com/document_detail/159666.htm">阿里的工作流</a>，好看很多且界面操作也简单了许多，缺点就是个人使用实在是没必要，企业的话用起来还是很爽的。</p><p>再后来看到店长的文章以后就开始使用 Github Action，具体可以去看这篇文章</p><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://blog.anheyu.com/posts/asdx.html">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">使用 Github Action 自动部署</div>            <div class="tag-link-sitename"> 使用 Github Action 自动部署</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><h1 id="Github-Action-优点"><a href="#Github-Action-优点" class="headerlink" title="Github Action 优点"></a>Github Action 优点</h1><ol><li>可以多域名多站点部署</li><li>不会出现从服务器去连接 github 连接不上的情况</li><li>可以一键多处全部部署完成 ✅</li><li>不再需要使用繁杂的前置命令<blockquote><p>hexo clean<br>hexo bangumi -u #bilibili 番剧更新<br>hexo generate<br>hexo algolia<br>gulp</p></blockquote></li></ol><p>比如我自己是在<a href="https://vercel.com/">vercel</a>, <a href="https://netlify.app/">netlify</a>, <a href="https://www.dogecloud.com/?iuid=4945">服务器多吉云加速</a>，三处部署。</p><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://anzhiyu-c-github-io.vercel.app/">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">安知鱼博客vercel线路</div>            <div class="tag-link-sitename"> 安知鱼博客vercel线路</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://cheerful-otter-8af915.netlify.app/">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">安知鱼博客netlify线路</div>            <div class="tag-link-sitename"> 安知鱼博客netlify线路</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://blog.anheyu.com/">    <div class="tag-link-tips">站内地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(/img/512.png)">          <i class="anzhiyufont anzhiyu-icon-link" style="display: none"></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">安知鱼博客多吉云线路</div>            <div class="tag-link-sitename"> 安知鱼博客多吉云线路</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><p>大大提高可用性与速度。</p><h1 id="工作流"><a href="#工作流" class="headerlink" title="工作流"></a>工作流</h1><p>在这里分享一下我的工作流，平时写完文章以后，配合 vscode 左侧的叉子，填写提交信息后，点击提交，立即就可以提交至源码仓库</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/02/15/63ec947ee9897.webp!blogimg"></p><p>通过源码仓库的 github action 推送至服务器与 github page 的仓库，<code>vercel</code>与<code>netlify</code>会自行拉取 github page 的仓库的更新，进而实现所有线路更新。</p><p>并且使用了店长分享的全站提交至 npm，并<code>排除提交html文件</code>大大减小 npm 包体积大小，具体可以去看这篇文章<a href="https://blog.anheyu.com/posts/72ea.html">npm 图床使用</a>。</p><p>这使我可以随时使用静态资源文件（如 js,css,img 等），我只需修改<code>package.json</code>的版本即可实现资源更新，而丰富的 npm 镜像又让我的站点速度大大提升，极大的便利性使我得到了极其舒适的体验。</p><p>以下是该工作流部分代码，注意该工作流已解决使用 CI 更新时，hexo 更新时间不一致的问题。</p><p><code>autodeploy.yml</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><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></pre></td><td class="code"><pre><span class="line"><span class="attr">name:</span> <span class="string">自动部署</span></span><br><span class="line"><span class="comment"># 当有改动推送到master分支时，启动Action</span></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">master</span></span><br><span class="line">      <span class="comment">#2020年10月后github新建仓库默认分支改为main，注意更改</span></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@v2</span></span><br><span class="line">        <span class="attr">with:</span></span><br><span class="line">          <span class="attr">ref:</span> <span class="string">master</span></span><br><span class="line">          <span class="attr">fetch-depth:</span> <span class="number">0</span></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">Sync</span> <span class="string">local</span> <span class="string">file</span> <span class="string">timestamps</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          git ls-files -z | while read -d &#x27;&#x27; path; do touch -d $(git log -1 --format=&quot;@%ct&quot; &quot;$path&quot;) &quot;$path&quot;; done</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">Node</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/setup-node@v1</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;16.x&quot;</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">id:</span> <span class="string">cache-npm</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">actions/cache@v3</span></span><br><span class="line">        <span class="attr">env:</span></span><br><span class="line">          <span class="attr">cache-name:</span> <span class="string">cache-node-modules</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;</span> <span class="string">runner.os</span> <span class="string">&#125;&#125;-build-$&#123;&#123;</span> <span class="string">env.cache-name</span> <span class="string">&#125;&#125;-$&#123;&#123;</span> <span class="string">hashFiles(&#x27;**/package-lock.json&#x27;)</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">restore-keys:</span> <span class="string">|</span></span><br><span class="line"><span class="string">            $&#123;&#123; runner.os &#125;&#125;-build-$&#123;&#123; env.cache-name &#125;&#125;-</span></span><br><span class="line"><span class="string">            $&#123;&#123; runner.os &#125;&#125;-build-</span></span><br><span class="line"><span class="string">            $&#123;&#123; runner.os &#125;&#125;-</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">if:</span> <span class="string">$&#123;&#123;</span> <span class="string">steps.cache-npm.outputs.cache-hit</span> <span class="type">!=</span> <span class="string">&#x27;true&#x27;</span> <span class="string">&#125;&#125;</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 gulp-cli -g #全局安装gulp</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 bangumi -u #bilibili番剧更新</span></span><br><span class="line"><span class="string">          hexo generate</span></span><br><span class="line"><span class="string">          hexo algolia</span></span><br><span class="line"><span class="string">          gulp</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">Deploy</span> <span class="string">to</span> <span class="string">Server</span></span><br><span class="line">        <span class="attr">uses:</span> <span class="string">easingthemes/ssh-deploy@v2</span></span><br><span class="line">        <span class="attr">env:</span></span><br><span class="line">          <span class="attr">SSH_PRIVATE_KEY:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.SSH_PRIVATE_KEY</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">ARGS:</span> <span class="string">&quot;-rltgoDzvO --delete&quot;</span></span><br><span class="line">          <span class="attr">EXCLUDE:</span> <span class="string">&quot;.well-known&quot;</span></span><br><span class="line">          <span class="attr">SOURCE:</span> <span class="string">&quot;./public/*&quot;</span></span><br><span class="line">          <span class="attr">REMOTE_HOST:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.SERVER_IP</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">REMOTE_PORT:</span> <span class="string">$&#123;&#123;</span> <span class="string">secrets.REMOTE_PORT</span> <span class="string">&#125;&#125;</span></span><br><span class="line">          <span class="attr">REMOTE_USER:</span> <span class="string">&quot;你的用户名&quot;</span></span><br><span class="line">          <span class="attr">TARGET:</span> <span class="string">&quot;你的服务器绝对路径&quot;</span></span><br><span class="line"></span><br><span class="line">      <span class="bullet">-</span> <span class="attr">name:</span> <span class="string">推送百度必应url</span></span><br><span class="line">        <span class="attr">run:</span> <span class="string">|</span></span><br><span class="line"><span class="string">          hexo deploy</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">部署到Github</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 &quot;anzhiyu-c&quot;</span></span><br><span class="line"><span class="string">          git config --global user.email &quot;userEmail@gmail.com&quot;</span></span><br><span class="line"><span class="string">          git add .</span></span><br><span class="line"><span class="string">          git commit -m &#x27;$&#123;&#123; github.event.head_commit.message &#125;&#125;&#x27;</span></span><br><span class="line"><span class="string">          git push --force --all https://xxxxxxToken@github.com/anzhiyu-c/anzhiyu-c.github.io</span></span><br></pre></td></tr></table></figure><p><code>npmignore.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></pre></td><td class="code"><pre><span class="line">hexo.<span class="property">extend</span>.<span class="property">generator</span>.<span class="title function_">register</span>(<span class="string">&quot;npmignore&quot;</span>, <span class="keyword">function</span> (<span class="params">locals</span>) &#123;</span><br><span class="line">  <span class="comment">// Object</span></span><br><span class="line">  <span class="keyword">return</span> &#123;</span><br><span class="line">    <span class="attr">path</span>: <span class="string">&quot;/.npmignore&quot;</span>,</span><br><span class="line">    <span class="attr">data</span>: <span class="string">`**/*.html</span></span><br><span class="line"><span class="string">.github/</span></span><br><span class="line"><span class="string">download/</span></span><br><span class="line"><span class="string">ads.txt</span></span><br><span class="line"><span class="string">CNAME</span></span><br><span class="line"><span class="string">robots.txt</span></span><br><span class="line"><span class="string">`</span>,</span><br><span class="line">  &#125;;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p><code>npmpublish.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></pre></td><td class="code"><pre><span class="line"><span class="comment">/*</span></span><br><span class="line"><span class="comment"> * @Description: npm</span></span><br><span class="line"><span class="comment"> * @Author: 安知鱼</span></span><br><span class="line"><span class="comment"> * @Email: 2268025923@qq.com</span></span><br><span class="line"><span class="comment"> * @Date: 2022-02-22 12:13:18</span></span><br><span class="line"><span class="comment"> * @LastEditTime: 2022-08-27 12:29:41</span></span><br><span class="line"><span class="comment"> * @LastEditors: 安知鱼</span></span><br><span class="line"><span class="comment"> */</span></span><br><span class="line">hexo.<span class="property">extend</span>.<span class="property">generator</span>.<span class="title function_">register</span>(<span class="string">&quot;npmpush&quot;</span>, <span class="keyword">function</span> (<span class="params">locals</span>) &#123;</span><br><span class="line">  <span class="comment">// Object</span></span><br><span class="line">  <span class="keyword">return</span> &#123;</span><br><span class="line">    <span class="attr">path</span>: <span class="string">&quot;/.github/workflows/autopublish.yml&quot;</span>,</span><br><span class="line">    <span class="attr">data</span>:</span><br><span class="line">      <span class="string">`name: Node.js Package</span></span><br><span class="line"><span class="string"># 监测分支，2020年10月后github新建仓库默认分支改为main，记得更改</span></span><br><span class="line"><span class="string">on:</span></span><br><span class="line"><span class="string">  push:</span></span><br><span class="line"><span class="string">    branches:</span></span><br><span class="line"><span class="string">      - master</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">jobs:</span></span><br><span class="line"><span class="string">  publish-npm:</span></span><br><span class="line"><span class="string">    runs-on: ubuntu-latest</span></span><br><span class="line"><span class="string">    steps:</span></span><br><span class="line"><span class="string">      - uses: actions/checkout@v2</span></span><br><span class="line"><span class="string">      - uses: actions/setup-node@v1</span></span><br><span class="line"><span class="string">        with:</span></span><br><span class="line"><span class="string">          node-version: &quot;12.x&quot;</span></span><br><span class="line"><span class="string">          registry-url: https://registry.npmjs.org/</span></span><br><span class="line"><span class="string">      - run: npm publish</span></span><br><span class="line"><span class="string">        env:</span></span><br><span class="line"><span class="string">          NODE_AUTH_TOKEN: `</span> + <span class="string">&quot;$&#123;&#123;secrets.npm_token&#125;&#125;&quot;</span>,</span><br><span class="line">  &#125;;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在日常写博客的过程中我常常使用 CI 部署，一开始我是使用&lt;a href=&quot;https://www.jenkins.io/&quot;&gt;Jenkins&lt;/a&gt;，后来觉得很丑且经常拉库失败（设置的 cron 是半小时拉取一次，然而常常 4-5 小时才能更新）&lt;/p&gt;
&lt;p&gt;&lt;img s</summary>
      
    
    
    
    
    <category term="工作流" scheme="https://blog.anheyu.com/tags/%E5%B7%A5%E4%BD%9C%E6%B5%81/"/>
    
    <category term="Hexo" scheme="https://blog.anheyu.com/tags/Hexo/"/>
    
  </entry>
  
  <entry>
    <title>给你的博客加一个优雅的音乐界面</title>
    <link href="https://blog.anheyu.com/posts/c3d3.html"/>
    <id>https://blog.anheyu.com/posts/c3d3.html</id>
    <published>2023-02-10T07:55:44.000Z</published>
    <updated>2023-09-02T10:46:06.386Z</updated>
    
    <content type="html"><![CDATA[<p>很久之前就想把整个音乐界面好好写一写，不过一直迫于咕咕咕的属性没有去做这件事，以至于悔之不及，没有早点做，对我这种重度音乐控来说真的是太爽了，很快啊，马上就听了一下午。</p><p>前两天看到 <a href="https://blog.yeooe.cn/">叶子</a> 重做了音乐界面于是马上就搞过来了啊，很快啊哈哈哈哈哈，谢谢大叶子的投喂！</p><p>博主思路和叶子有所不同，每个人都有每个人的实现方法，本文仅做分享博主自己的实现思路。</p><h3 id="在线体验"><a href="#在线体验" class="headerlink" title="在线体验"></a>在线体验</h3><p><a href="https://blog.anheyu.com/music/">一个优雅的音乐界面</a></p><h3 id="效果图"><a href="#效果图" class="headerlink" title="效果图"></a>效果图</h3><p>整体效果我还是非常满意的 hhh</p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/02/10/63e6004607d39.png"></p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/02/10/63e600366bcc7.png"></p><p><img src="https://img02.anheyu.com/adminuploads/1/2023/02/10/63e60049a1b24.png" alt="移动端"></p><h3 id="魔改步骤"><a href="#魔改步骤" class="headerlink" title="魔改步骤"></a>魔改步骤</h3><p>博主使用的 meting2 的版本，修改主题配置文件 <code>_config.butterfly.yml</code> 最下面 <code>CDN.option.meting_js</code>，有能力的建议自己下载下来并传到自己的 oss 或直接使用本地路径引用。</p><figure class="highlight yml"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">meting_js:</span> <span class="string">https://npm.elemecdn.com/hexo-anzhiyu-music@1.0.1/assets/js/Meting2.min.js</span></span><br></pre></td></tr></table></figure><p>创建页面, 新建 <code>source/music/index.md</code> 文件</p><figure class="highlight md"><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><br><span class="line">title: 音乐馆</span><br><span class="line">date: 2021-04-24 21:41:30</span><br><span class="line">type: music</span><br><span class="line">aplayer: true</span><br><span class="line">top<span class="emphasis">_img: false</span></span><br><span class="line"><span class="emphasis">comments: false</span></span><br><span class="line"><span class="emphasis">aside: false</span></span><br><span class="line"><span class="emphasis">---</span></span><br></pre></td></tr></table></figure><p>创建页面，新建<code>themes/butterfly/layout/includes/page/music.pug</code>，并方便后续可以使用 css 将页面(page)本身的样式给去除。此处可以自行修改<strong>server</strong>和<strong>歌单 id</strong>，我的 id 是 8152976493，歌单 id 是对应的服务商的歌单页面路径最后面的那个数字。</p><p><code>music.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></pre></td><td class="code"><pre><span class="line">#anMusic-page</span><br><span class="line">  meting-js(id=&quot;8152976493&quot; server=&quot;netease&quot; type=&quot;playlist&quot; mutex=&quot;true&quot; preload=&quot;auto&quot; theme=&quot;var(--anzhiyu-main)&quot; order=&quot;list&quot;)</span><br></pre></td></tr></table></figure><p>修改<code>themes/butterfly/layout/page.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><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">  #page</span><br><span class="line"><span class="deletion">-   if top_img === false</span></span><br><span class="line"><span class="addition">+   if top_img === false &amp;&amp; page.type != &#x27;music&#x27;</span></span><br><span class="line">      h1.page-title= page.title</span><br><span class="line">    case page.type</span><br><span class="line">      when &#x27;link&#x27;</span><br><span class="line">        include includes/page/flink.pug</span><br><span class="line">      ...</span><br><span class="line"><span class="addition">+     when &#x27;music&#x27;</span></span><br><span class="line"><span class="addition">+       include includes/page/music.pug</span></span><br><span class="line">      default</span><br><span class="line">        include includes/page/default-page.pug</span><br></pre></td></tr></table></figure><p>创建背景元素，修改<code>themes/butterfly/layout/includes/layout.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><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">  body</span><br><span class="line">    if theme.background</span><br><span class="line">      #web_bg</span><br><span class="line"><span class="addition">+     #an_music_bg</span></span><br></pre></td></tr></table></figure><h4 id="js-部分"><a href="#js-部分" class="headerlink" title="js 部分"></a>js 部分</h4><p>css 部分和 js 部分不会引用的同学可以去看 <a href="https://www.bilibili.com/video/BV1rT411w7gj/?spm_id_from=333.999.0.0">https://www.bilibili.com/video/BV1rT411w7gj/?spm_id_from=333.999.0.0</a></p><figure class="highlight yml"><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"><span class="comment"># 自定义js</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">&lt;script</span> <span class="string">async</span> <span class="string">data-pjax</span> <span class="string">src=&quot;/js/anzhiyu.js&quot;&gt;&lt;/script&gt;</span></span><br></pre></td></tr></table></figure><p><code>anzhiyu.js</code>,其中有一部分代码是暂停 nav 的音乐的，需要的同学可以打开注释自己实现一下 musicToggle 方法。</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">var</span> anzhiyu = &#123;</span><br><span class="line">  <span class="comment">// 音乐节目切换背景</span></span><br><span class="line">  <span class="attr">changeMusicBg</span>: <span class="keyword">function</span> (<span class="params">isChangeBg = <span class="literal">true</span></span>) &#123;</span><br><span class="line">    <span class="keyword">if</span> (<span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">pathname</span> != <span class="string">&quot;/music/&quot;</span>) &#123;</span><br><span class="line">      <span class="keyword">return</span>;</span><br><span class="line">    &#125;</span><br><span class="line">    <span class="keyword">const</span> anMusicBg = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&quot;an_music_bg&quot;</span>);</span><br><span class="line"></span><br><span class="line">    <span class="keyword">if</span> (isChangeBg) &#123;</span><br><span class="line">      <span class="comment">// player listswitch 会进入此处</span></span><br><span class="line">      <span class="keyword">const</span> musiccover = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">&quot;#anMusic-page .aplayer-pic&quot;</span>);</span><br><span class="line">      anMusicBg.<span class="property">style</span>.<span class="property">backgroundImage</span> = musiccover.<span class="property">style</span>.<span class="property">backgroundImage</span>;</span><br><span class="line">    &#125; <span class="keyword">else</span> &#123;</span><br><span class="line">      <span class="comment">// 第一次进入，绑定事件，改背景</span></span><br><span class="line">      <span class="keyword">let</span> timer = <span class="built_in">setInterval</span>(<span class="function">() =&gt;</span> &#123;</span><br><span class="line">        <span class="keyword">const</span> musiccover = <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">&quot;#anMusic-page .aplayer-pic&quot;</span>);</span><br><span class="line">        <span class="comment">// 确保player加载完成</span></span><br><span class="line">        <span class="variable language_">console</span>.<span class="title function_">info</span>(anMusicBg);</span><br><span class="line">        <span class="keyword">if</span> (musiccover) &#123;</span><br><span class="line">          <span class="built_in">clearInterval</span>(timer);</span><br><span class="line">          anMusicBg.<span class="property">style</span>.<span class="property">backgroundImage</span> = musiccover.<span class="property">style</span>.<span class="property">backgroundImage</span>;</span><br><span class="line">          <span class="comment">// 绑定事件</span></span><br><span class="line">          anzhiyu.<span class="title function_">addEventListenerChangeMusicBg</span>();</span><br><span class="line"></span><br><span class="line">          <span class="comment">// 暂停nav的音乐</span></span><br><span class="line">          <span class="keyword">if</span> (</span><br><span class="line">            <span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">&quot;#nav-music meting-js&quot;</span>).<span class="property">aplayer</span> &amp;&amp;</span><br><span class="line">            !<span class="variable language_">document</span>.<span class="title function_">querySelector</span>(<span class="string">&quot;#nav-music meting-js&quot;</span>).<span class="property">aplayer</span>.<span class="property">audio</span>.<span class="property">paused</span></span><br><span class="line">          ) &#123;</span><br><span class="line">            anzhiyu.<span class="title function_">musicToggle</span>();</span><br><span class="line">          &#125;</span><br><span class="line">        &#125;</span><br><span class="line">      &#125;, <span class="number">100</span>);</span><br><span class="line">    &#125;</span><br><span class="line">  &#125;,</span><br><span class="line">  <span class="attr">addEventListenerChangeMusicBg</span>: <span class="keyword">function</span> (<span class="params"></span>) &#123;</span><br><span class="line">    <span class="keyword">const</span> anMusicPage = <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&quot;anMusic-page&quot;</span>);</span><br><span class="line">    <span class="keyword">const</span> aplayerIconMenu = anMusicPage.<span class="title function_">querySelector</span>(<span class="string">&quot;.aplayer-info .aplayer-time .aplayer-icon-menu&quot;</span>);</span><br><span class="line"></span><br><span class="line">    anMusicPage.<span class="title function_">querySelector</span>(<span class="string">&quot;meting-js&quot;</span>).<span class="property">aplayer</span>.<span class="title function_">on</span>(<span class="string">&quot;loadeddata&quot;</span>, <span class="keyword">function</span> (<span class="params"></span>) &#123;</span><br><span class="line">      anzhiyu.<span class="title function_">changeMusicBg</span>();</span><br><span class="line">      <span class="variable language_">console</span>.<span class="title function_">info</span>(<span class="string">&quot;player loadeddata&quot;</span>);</span><br><span class="line">    &#125;);</span><br><span class="line"></span><br><span class="line">    aplayerIconMenu.<span class="title function_">addEventListener</span>(<span class="string">&quot;click&quot;</span>, <span class="keyword">function</span> (<span class="params"></span>) &#123;</span><br><span class="line">      <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&quot;menu-mask&quot;</span>).<span class="property">style</span>.<span class="property">display</span> = <span class="string">&quot;block&quot;</span>;</span><br><span class="line">      <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&quot;menu-mask&quot;</span>).<span class="property">style</span>.<span class="property">animation</span> = <span class="string">&quot;0.5s ease 0s 1 normal none running to_show&quot;</span>;</span><br><span class="line">    &#125;);</span><br><span class="line"></span><br><span class="line">    <span class="variable language_">document</span>.<span class="title function_">getElementById</span>(<span class="string">&quot;menu-mask&quot;</span>).<span class="title function_">addEventListener</span>(<span class="string">&quot;click&quot;</span>, <span class="keyword">function</span> (<span class="params"></span>) &#123;</span><br><span class="line">      <span class="keyword">if</span> (<span class="variable language_">window</span>.<span class="property">location</span>.<span class="property">pathname</span> != <span class="string">&quot;/music/&quot;</span>) <span class="keyword">return</span>;</span><br><span class="line">      anMusicPage.<span class="title function_">querySelector</span>(<span class="string">&quot;.aplayer-list&quot;</span>).<span class="property">classList</span>.<span class="title function_">remove</span>(<span class="string">&quot;aplayer-list-hide&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 class="comment">// 调用</span></span><br><span class="line">anzhiyu.<span class="title function_">changeMusicBg</span>(<span class="literal">false</span>);</span><br></pre></td></tr></table></figure><h4 id="css"><a href="#css" class="headerlink" title="css"></a>css</h4><p>css 部分, 自行建立 css 能成功引入即可</p><p><code>music.css</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><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><span class="line">187</span><br><span class="line">188</span><br><span class="line">189</span><br><span class="line">190</span><br><span class="line">191</span><br><span class="line">192</span><br><span class="line">193</span><br><span class="line">194</span><br><span class="line">195</span><br><span class="line">196</span><br><span class="line">197</span><br><span class="line">198</span><br><span class="line">199</span><br><span class="line">200</span><br><span class="line">201</span><br><span class="line">202</span><br><span class="line">203</span><br><span class="line">204</span><br><span class="line">205</span><br><span class="line">206</span><br><span class="line">207</span><br><span class="line">208</span><br><span class="line">209</span><br><span class="line">210</span><br><span class="line">211</span><br><span class="line">212</span><br><span class="line">213</span><br><span class="line">214</span><br><span class="line">215</span><br><span class="line">216</span><br><span class="line">217</span><br><span class="line">218</span><br><span class="line">219</span><br><span class="line">220</span><br><span class="line">221</span><br><span class="line">222</span><br><span class="line">223</span><br><span class="line">224</span><br><span class="line">225</span><br><span class="line">226</span><br><span class="line">227</span><br><span class="line">228</span><br><span class="line">229</span><br><span class="line">230</span><br><span class="line">231</span><br><span class="line">232</span><br><span class="line">233</span><br><span class="line">234</span><br><span class="line">235</span><br><span class="line">236</span><br><span class="line">237</span><br><span class="line">238</span><br><span class="line">239</span><br><span class="line">240</span><br><span class="line">241</span><br><span class="line">242</span><br><span class="line">243</span><br><span class="line">244</span><br><span class="line">245</span><br><span class="line">246</span><br><span class="line">247</span><br><span class="line">248</span><br><span class="line">249</span><br><span class="line">250</span><br><span class="line">251</span><br><span class="line">252</span><br><span class="line">253</span><br><span class="line">254</span><br><span class="line">255</span><br><span class="line">256</span><br><span class="line">257</span><br><span class="line">258</span><br><span class="line">259</span><br><span class="line">260</span><br><span class="line">261</span><br><span class="line">262</span><br><span class="line">263</span><br><span class="line">264</span><br><span class="line">265</span><br><span class="line">266</span><br><span class="line">267</span><br><span class="line">268</span><br><span class="line">269</span><br><span class="line">270</span><br><span class="line">271</span><br><span class="line">272</span><br><span class="line">273</span><br><span class="line">274</span><br><span class="line">275</span><br><span class="line">276</span><br><span class="line">277</span><br><span class="line">278</span><br><span class="line">279</span><br><span class="line">280</span><br><span class="line">281</span><br><span class="line">282</span><br><span class="line">283</span><br><span class="line">284</span><br><span class="line">285</span><br><span class="line">286</span><br><span class="line">287</span><br><span class="line">288</span><br><span class="line">289</span><br><span class="line">290</span><br><span class="line">291</span><br><span class="line">292</span><br><span class="line">293</span><br><span class="line">294</span><br><span class="line">295</span><br><span class="line">296</span><br><span class="line">297</span><br><span class="line">298</span><br><span class="line">299</span><br><span class="line">300</span><br><span class="line">301</span><br><span class="line">302</span><br><span class="line">303</span><br><span class="line">304</span><br><span class="line">305</span><br><span class="line">306</span><br><span class="line">307</span><br><span class="line">308</span><br><span class="line">309</span><br><span class="line">310</span><br><span class="line">311</span><br><span class="line">312</span><br><span class="line">313</span><br><span class="line">314</span><br><span class="line">315</span><br><span class="line">316</span><br><span class="line">317</span><br><span class="line">318</span><br><span class="line">319</span><br><span class="line">320</span><br><span class="line">321</span><br><span class="line">322</span><br><span class="line">323</span><br><span class="line">324</span><br><span class="line">325</span><br><span class="line">326</span><br><span class="line">327</span><br><span class="line">328</span><br><span class="line">329</span><br><span class="line">330</span><br><span class="line">331</span><br><span class="line">332</span><br><span class="line">333</span><br><span class="line">334</span><br><span class="line">335</span><br><span class="line">336</span><br><span class="line">337</span><br><span class="line">338</span><br><span class="line">339</span><br><span class="line">340</span><br><span class="line">341</span><br><span class="line">342</span><br><span class="line">343</span><br><span class="line">344</span><br><span class="line">345</span><br><span class="line">346</span><br><span class="line">347</span><br><span class="line">348</span><br><span class="line">349</span><br><span class="line">350</span><br><span class="line">351</span><br><span class="line">352</span><br><span class="line">353</span><br><span class="line">354</span><br><span class="line">355</span><br><span class="line">356</span><br><span class="line">357</span><br><span class="line">358</span><br><span class="line">359</span><br><span class="line">360</span><br><span class="line">361</span><br><span class="line">362</span><br><span class="line">363</span><br><span class="line">364</span><br></pre></td><td class="code"><pre><span class="line"><span class="selector-id">#page</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) &#123;</span><br><span class="line">  <span class="attribute">border</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">box-shadow</span>: none <span class="meta">!important</span>;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">  <span class="attribute">background</span>: transparent <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#an_music_bg</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: none;</span><br><span class="line">  <span class="attribute">filter</span>: <span class="built_in">blur</span>(<span class="number">63px</span>);</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0.6</span>;</span><br><span class="line">  <span class="attribute">position</span>: fixed;</span><br><span class="line">  <span class="attribute">z-index</span>: -<span class="number">999</span>;</span><br><span class="line">  <span class="attribute">background-attachment</span>: local;</span><br><span class="line">  <span class="attribute">background-position</span>: center center;</span><br><span class="line">  <span class="attribute">background-size</span>: cover;</span><br><span class="line">  <span class="attribute">background-repeat</span>: no-repeat;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">200%</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">200%</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">rotate</span>(<span class="number">0deg</span>);</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#an_music_bg</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: block;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) &#123;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">rgb</span>(<span class="number">13</span>, <span class="number">13</span>, <span class="number">13</span>);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> meting-js <span class="selector-class">.aplayer</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">  <span class="attribute">flex-direction</span>: row-reverse;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">rgba</span>(<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>);</span><br><span class="line">  <span class="attribute">border</span>: none;</span><br><span class="line">  <span class="attribute">box-shadow</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#web_bg</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#footer</span>,</span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#nav-music</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-body</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">40%</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">75vh</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span><span class="selector-pseudo">:hover</span> &#123;</span><br><span class="line">  <span class="attribute">background</span>: <span class="number">#ffffff33</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">6px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-pic</span> &#123;</span><br><span class="line">  <span class="attribute">float</span>: none;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">180px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">180px</span>;</span><br><span class="line">  <span class="attribute">border-radius</span>: <span class="number">12px</span>;</span><br><span class="line">  <span class="attribute">margin</span>: auto;</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">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span> <span class="number">20px</span> <span class="number">0</span> <span class="number">20px</span>;</span><br><span class="line">  <span class="attribute">border-bottom</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-music</span> &#123;</span><br><span class="line">  <span class="attribute">text-align</span>: center;</span><br><span class="line">  <span class="attribute">height</span>: auto;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">15px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-music</span> <span class="selector-class">.aplayer-author</span>,</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-music</span> <span class="selector-class">.aplayer-title</span> &#123;</span><br><span class="line">  <span class="attribute">font-size</span>: <span class="number">2rem</span>;</span><br><span class="line">  <span class="attribute">font-weight</span>: <span class="number">700</span>;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-lrc</span> &#123;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">800%</span>;</span><br><span class="line">  <span class="attribute">margin-top</span>: <span class="number">80px</span>;</span><br><span class="line">  <span class="attribute">mask-image</span>: <span class="built_in">linear-gradient</span>(to bottom, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#0000</span>, <span class="number">#0000</span>);</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-lrc</span> <span class="selector-tag">p</span> &#123;</span><br><span class="line">  <span class="attribute">font-size</span>: <span class="number">14px</span>;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer</span> <span class="selector-class">.aplayer-lrc</span><span class="selector-pseudo">:after</span>,</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer</span> <span class="selector-class">.aplayer-lrc</span><span class="selector-pseudo">:before</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: none;</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 class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: fixed;</span><br><span class="line">  <span class="attribute">max-width</span>: <span class="number">1500px</span>;</span><br><span class="line">  <span class="attribute">margin</span>: auto;</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">bottom</span>: <span class="number">50px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> <span class="selector-class">.aplayer-bar-wrap</span> &#123;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span> <span class="number">160px</span> <span class="number">0</span> <span class="number">150px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> <span class="selector-class">.aplayer-played</span> &#123;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">var</span>(--anzhiyu-white) <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> <span class="selector-class">.aplayer-thumb</span> &#123;</span><br><span class="line">  -webkit-<span class="attribute">transform</span>: none;</span><br><span class="line">  <span class="attribute">transform</span>: none;</span><br><span class="line">  <span class="attribute">background</span>: <span class="number">#fff</span> <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-back</span>,</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-forward</span>,</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-play</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: inline;</span><br><span class="line">  <span class="attribute">position</span>: fixed;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">  <span class="attribute">bottom</span>: <span class="number">21px</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">display</span>: flex;</span><br><span class="line">  <span class="attribute">justify-content</span>: flex-end;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-time-inner</span> &#123;</span><br><span class="line">  <span class="attribute">margin-right</span>: <span class="number">18px</span>;</span><br><span class="line">  <span class="attribute">margin-top</span>: -<span class="number">8px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-back</span> &#123;</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">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-play</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">40px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-forward</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">left</span>: <span class="number">80px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">2rem</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">2rem</span>;</span><br><span class="line">  <span class="attribute">margin-left</span>: <span class="number">15px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-menu</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon</span> path &#123;</span><br><span class="line">  fill: <span class="built_in">var</span>(--anzhiyu-white);</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0.8</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-list</span> &#123;</span><br><span class="line">  <span class="attribute">width</span>: <span class="number">60%</span>;</span><br><span class="line">  <span class="attribute">max-height</span>: none <span class="meta">!important</span>;</span><br><span class="line">  <span class="attribute">height</span>: <span class="number">100%</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &#123;</span><br><span class="line">  <span class="attribute">max-height</span>: <span class="number">75vh</span> <span class="meta">!important</span>;</span><br><span class="line">  <span class="attribute">padding-right</span>: <span class="number">25px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> &#123;</span><br><span class="line">  <span class="attribute">border-top</span>: <span class="number">1px</span> solid transparent;</span><br><span class="line">  <span class="attribute">font-size</span>: <span class="number">14px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span><span class="selector-class">.aplayer-list-light</span> &#123;</span><br><span class="line">  <span class="attribute">background</span>: <span class="built_in">rgb</span>(<span class="number">255</span> <span class="number">255</span> <span class="number">255</span> / <span class="number">20%</span>);</span><br><span class="line">  <span class="attribute">border-radius</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-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> <span class="selector-tag">span</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="built_in">var</span>(--anzhiyu-white);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span><span class="selector-class">.aplayer-list-light</span> <span class="selector-class">.aplayer-list-cur</span> &#123;</span><br><span class="line">  <span class="attribute">display</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> <span class="selector-tag">span</span><span class="selector-class">.aplayer-list-author</span> &#123;</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0.6</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 class="selector-class">.page</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#nav</span> &#123;</span><br><span class="line">  backdrop-<span class="attribute">filter</span>: none <span class="meta">!important</span>;</span><br><span class="line">  <span class="attribute">background</span>: <span class="number">0</span> <span class="number">0</span> <span class="meta">!important</span>;</span><br><span class="line">  <span class="attribute">border-bottom</span>: none <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">.page</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#page-header</span><span class="selector-class">.not-top-img</span> <span class="selector-id">#nav</span> <span class="selector-tag">a</span>,</span><br><span class="line"><span class="selector-class">.page</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#page-header</span> <span class="selector-id">#nav</span> <span class="selector-class">.back-home-button</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="built_in">var</span>(--anzhiyu-white);</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-class">.s-sticker</span> <span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">color</span>: <span class="built_in">var</span>(--anzhiyu-white) <span class="meta">!important</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-class">.aplayer</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon</span><span class="selector-class">.aplayer-icon-loop</span> &#123;</span><br><span class="line">  <span class="attribute">margin-right</span>: <span class="number">15px</span>;</span><br><span class="line">&#125;</span><br><span class="line"></span><br><span class="line"><span class="selector-attr">[data-theme=<span class="string">&quot;dark&quot;</span>]</span> <span class="selector-class">.page</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#page-header</span><span class="selector-pseudo">:before</span> &#123;</span><br><span class="line">  <span class="attribute">background-color</span>: transparent;</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 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 class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#rightside</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: none;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#content-inner</span>,</span><br><span class="line">  <span class="selector-tag">body</span><span class="selector-pseudo">:has</span>(<span class="selector-id">#anMusic-page</span>) <span class="selector-id">#page</span> &#123;</span><br><span class="line">    <span class="attribute">z-index</span>: auto;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="comment">/* 歌曲列表 */</span></span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-list</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: fixed;</span><br><span class="line">    <span class="attribute">z-index</span>: <span class="number">1002</span>;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">bottom</span>: -<span class="number">76%</span>;</span><br><span class="line">    <span class="attribute">left</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">background</span>: <span class="built_in">var</span>(--sidebar-bg);</span><br><span class="line">    <span class="attribute">height</span>: auto;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">15px</span> <span class="number">15px</span> <span class="number">0px</span> <span class="number">0px</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">15px</span> <span class="number">0px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-list</span><span class="selector-class">.aplayer-list-hide</span> &#123;</span><br><span class="line">    <span class="attribute">bottom</span>: <span class="number">0%</span> <span class="meta">!important</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &#123;</span><br><span class="line">    <span class="attribute">max-height</span>: <span class="number">60vh</span> <span class="meta">!important</span>;</span><br><span class="line">    <span class="attribute">padding-right</span>: <span class="number">0px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: flex;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">0</span> <span class="number">10px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> <span class="selector-tag">span</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 class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> <span class="selector-tag">span</span><span class="selector-class">.aplayer-list-title</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">30%</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span><span class="selector-class">.aplayer-list-light</span> &#123;</span><br><span class="line">    <span class="attribute">background</span>: <span class="number">#33a673</span>;</span><br><span class="line">    <span class="attribute">padding</span>: <span class="number">5px</span> <span class="number">20px</span>;</span><br><span class="line">    <span class="attribute">border-radius</span>: <span class="number">10px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span><span class="selector-class">.aplayer-list-light</span> <span class="selector-tag">span</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> <span class="selector-tag">span</span><span class="selector-class">.aplayer-list-title</span> &#123;</span><br><span class="line">    <span class="attribute">max-width</span>: <span class="number">55%</span>;</span><br><span class="line">    <span class="attribute">width</span>: auto;</span><br><span class="line">    <span class="attribute">display</span>: -webkit-box;</span><br><span class="line">    -webkit-line-clamp: <span class="number">1</span>;</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    -webkit-box-orient: vertical;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span> <span class="selector-tag">span</span><span class="selector-class">.aplayer-list-author</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">10px</span>;</span><br><span class="line">    <span class="attribute">width</span>: auto;</span><br><span class="line">    <span class="attribute">max-width</span>: <span class="number">35%</span>;</span><br><span class="line">    <span class="attribute">display</span>: -webkit-box;</span><br><span class="line">    -webkit-line-clamp: <span class="number">1</span>;</span><br><span class="line">    <span class="attribute">overflow</span>: hidden;</span><br><span class="line">    -webkit-box-orient: vertical;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-tag">ol</span> &gt; <span class="selector-tag">li</span><span class="selector-class">.aplayer-list-light</span> <span class="selector-tag">span</span><span class="selector-class">.aplayer-list-author</span> &#123;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">15px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="comment">/* 歌词信息 */</span></span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-body</span> &#123;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line"></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">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">top</span>: <span class="number">100px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-lrc</span> &#123;</span><br><span class="line">    <span class="attribute">margin-top</span>: <span class="number">40px</span>;</span><br><span class="line">    <span class="attribute">height</span>: auto;</span><br><span class="line">    <span class="attribute">max-height</span>: <span class="number">200%</span>;</span><br><span class="line">    <span class="attribute">min-height</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">mask-image</span>: <span class="built_in">linear-gradient</span>(to bottom, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#000</span>, <span class="number">#0000</span>, <span class="number">#0000</span>);</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-lrc</span> <span class="selector-tag">p</span><span class="selector-class">.aplayer-lrc-current</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: <span class="number">#33a673</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="comment">/* 控制按键和进度条 */</span></span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</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">bottom</span>: <span class="number">100px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> <span class="selector-class">.aplayer-bar-wrap</span> &#123;</span><br><span class="line">    <span class="attribute">margin</span>: <span class="number">0</span> <span class="number">30px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> &#123;</span><br><span class="line">    <span class="attribute">bottom</span>: -<span class="number">40px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-time-inner</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">width</span>: <span class="number">100%</span>;</span><br><span class="line">    <span class="attribute">margin-right</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">margin-top</span>: -<span class="number">33px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-time-inner</span> <span class="selector-class">.aplayer-dtime</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">30px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-time-inner</span> <span class="selector-class">.aplayer-ptime</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">left</span>: <span class="number">35px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-back</span> &#123;</span><br><span class="line">    <span class="attribute">margin</span>: auto;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">110px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-play</span> &#123;</span><br><span class="line">    <span class="attribute">margin</span>: auto;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line">    <span class="attribute">left</span>: <span class="number">0</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-forward</span> &#123;</span><br><span class="line">    <span class="attribute">margin</span>: auto;</span><br><span class="line">    <span class="attribute">left</span>: <span class="number">110px</span>;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">0</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-order</span> &#123;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">left</span>: <span class="number">22px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-loop</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">25px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-time</span> <span class="selector-class">.aplayer-icon-menu</span> &#123;</span><br><span class="line">    <span class="attribute">display</span>: inline;</span><br><span class="line">    <span class="attribute">position</span>: absolute;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">25px</span>;</span><br><span class="line">    <span class="attribute">top</span>: -<span class="number">90px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer-volume-bar-wrap</span> &#123;</span><br><span class="line">    <span class="attribute">bottom</span>: <span class="number">0px</span>;</span><br><span class="line">    <span class="attribute">right</span>: <span class="number">7px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-id">#anMusic-page</span> <span class="selector-class">.aplayer</span> <span class="selector-class">.aplayer-info</span> <span class="selector-class">.aplayer-controller</span> <span class="selector-class">.aplayer-volume-wrap</span> &#123;</span><br><span class="line">    <span class="attribute">left</span>: -<span class="number">66px</span>;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;很久之前就想把整个音乐界面好好写一写，不过一直迫于咕咕咕的属性没有去做这件事，以至于悔之不及，没有早点做，对我这种重度音乐控来说真的是太爽了，很快啊，马上就听了一下午。&lt;/p&gt;
&lt;p&gt;前两天看到 &lt;a href=&quot;https://blog.yeooe.cn/&quot;&gt;叶子&lt;/a&gt;</summary>
      
    
    
    
    
    <category term="教程" scheme="https://blog.anheyu.com/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo" scheme="https://blog.anheyu.com/tags/Hexo/"/>
    
    <category term="aplayer" scheme="https://blog.anheyu.com/tags/aplayer/"/>
    
  </entry>
  
  <entry>
    <title>操作系统复习题</title>
    <link href="https://blog.anheyu.com/posts/d4d2.html"/>
    <id>https://blog.anheyu.com/posts/d4d2.html</id>
    <published>2023-02-02T07:55:12.000Z</published>
    <updated>2023-07-31T14:23:43.057Z</updated>
    
    <content type="html"><![CDATA[<span class='p center logo large'>操作系统</span><details class="folding-tag" open><summary> 选择题 </summary>              <div class='content'>              <ol><li><p>操作系统的最主要设计目标是（ ）。<br>A．方便性和有效性 B．方便性和可扩展性<br>C．有效性和可扩展性 D．有效性和开放性<br>答：<psw>A</psw></p></li><li><p>有甲、乙两道算题，每道需执行 1 小时（其中处理器的工作时间为 12 分钟）。若它们在多道系统中执行，甲、乙两道题总共需执行 80 分钟，则处理器的利用率为（ ）。<br>A．50% B．40% C．30% D．20%<br>答：<psw>C</psw></p></li><li><p>从下面对临界区的论述中，选出一条正确的论述。（ ）<br>A.临界区是指进程中用于实现进程同步的那段代码<br>B.临界区是指进程中用于实现进程通信的那段代码<br>C.临界区是指进程中用于访问共享资源的那段代码<br>D.临界区是指进程中访问临界资源的那段代码<br>答：<psw>D</psw></p></li><li><p>操作系统提供一组特殊的程序，它们不能被系统中断，在操作系统中称为（ ）。<br>A.初始化程序 B.原语 C.子程序 D.控制模块<br>答：<psw>B</psw></p></li><li><p>一种既有利于短小作业又兼顾到长作业的作业调度算法是（ ）。<br>A．先来先服务 B．轮转 C．最高响应比优先 D．均衡调度<br>答：<psw>C</psw></p></li><li><p>操作系统中，资源分配的基本单位是（ ）。<br>A．进程 B．线程 C．作业 D．程序<br>答：<psw>A</psw></p></li><li><p>进程之间的制约关系可以归结为（ ）。<br>A．同步与互斥 B．并发与异步 C．同步与并发 D．同步与异步<br>答：<psw>A</psw></p></li><li><p>产生死锁的原因是（ ）有关。<br>A．与多个进程竞争 CPU<br>B．与多个进程释放资源<br>C．仅由于并发进程的执行速度不当<br>D．除资源分配策略不当外，也与并发进程执行速度不当<br>答：<psw>D</psw></p></li><li><p>死锁的 4 个必要条件中，无法破坏的是（ ）。<br>A.环路等待资源 B.互斥使用资源 C.占有且等待资源 D.非抢夺式分配<br>答：<psw>B</psw></p></li><li><p>页式存储管理中，每次从主存中取指令或取操作数，当读快表失败时，要读（ ）次主存。<br>A．1 B．2 C．3 D．4<br>答：<psw>B</psw></p></li><li><p>中断和通道技术的引入，使得（ ）。<br>A．CPU 与外设能紧密结合 B．CPU 与外设能并行工作<br>C．CPU 速度提高 D．外设速度提高<br>答：<psw>B</psw></p></li><li><p>下列关于进程和线程的叙述中，正确的是（ ）<br>A．不管系统是否支持线程，进程都是资源分配的基本单位<br>B．线程是资源分配的基本单位，进程是调度的基本单位<br>C．系统级线程和用户级线程的切换都需要内核的支持<br>D．同一进程中的各个线程拥有各自不同的地址空间<br>答：<psw>A</psw></p></li><li><p>在下述进程状态的转换中，( ) 是不可能的。<br>A．运行态 → 就绪态 B．运行态 → 等待态 C．等待态 → 就绪态 D．就绪态 → 等待态<br>答：<psw>D</psw></p></li><li><p>若信号量 S 的初值为 2，当前值为-1，则表示有( )个等待进程。<br>A．0 B．1 C．2 D．3<br>答：<psw>B</psw></p></li><li><p>下列选项中，会导致进程从执行态变为就绪态的事件是（ ）。<br>A.执行 P 操作 B.申请内存失败 C.启动 I&#x2F;O 设备 D.被高优先级进程抢占<br>答：<psw>D</psw></p></li><li><p>将主存空闲区按地址顺序从小到大登记在空闲区表中，每次分配时总是顺序查找空闲区表，此种分配算法称为 ( ) 分配算法。<br>A．首次适应 B．最佳适应 C．最坏适应 D．循环首次适应<br>答：<psw>B</psw></p></li><li><p>系统为某进程分配了 4 个页框，该进程已访问的页号序列为 2、0、2、9、3、4、2、8、2、4、8、4、5。若进程要访问的下一页的页号为 7，依据 LRU 算法，应淘汰页的页号是（ ）。<br>A. 2 B. 3 C. 4 D. 8<br>答：<psw>A</psw></p></li><li><p>按文件的组织方式可将文件分成 （ ） 等。<br>A．数据文件，命令文件，文本文件<br>B．命令文件，库文件，索引文件<br>C．顺序文件，索引文件，索引顺序文件<br>D．输入文件，输出文件，随机文件<br>答：<psw>C</psw></p></li><li><p>并发性是指若干事件在（ ）发生。<br>A.同一时刻 B.不同时刻 C.同一时间间隔内 D.不同时间间隔内<br>答：<psw>C</psw></p></li><li><p>设与某资源相关联的信号量初值为 3，当前值为 1，若 M 表示该资源的可用个数，N 表示等待资源的进程数，则 M、N 分别是（ ）。<br>A. 0、1 B. 1、0 C. 1、2 D. 2、0<br>答：<psw>B</psw></p></li><li><p>在对记录型信号量的 P 操作的定义中，当信号量的值（ ）时，执行 P 操作的进程变为阻塞状态。<br>A.大于 0<br>B.小于 0<br>C.等于 0<br>D.小于或等于 0<br>答：<psw>B</psw></p></li><li><p>系统中有 4 个进程都要使用某类资源。若每个进程最多需要 3 个该类资源，为保证系统不发生死锁，系统应提供该类资源至少是（ ）。<br>A.3 个 B.4 个 C.9 个 D.12 个<br>答：<psw>C</psw></p></li><li><p>采用分页存储管理方式进行存储分配时产生的存储碎片，被称为（ ）。<br>A.外零头 B.内零头 C.外零头或内零头 D.A、B、C 都正确<br>答：<psw>D</psw></p></li><li><p>进程和程序的本质区别是（ ）。<br>A.前者是动态的，后者是静态的<br>B.前者存储在内存，后者存储在外存<br>C.前者在一个文件中，后者在多个文件中<br>D.前者分时使用 CPU，后者独占 CPU<br>答：<psw>A</psw></p></li><li><p>分页存储管理系统中，虚拟地址转换成物理地址的工作是由（ ）完成的。<br>A.地址转换程序 B.用户程序 C.硬件 D.装入程序<br>答：<psw>C</psw></p></li><li><p>一个作业 8:00 到达系统，估计运行时间为 1 小时。若 10:00 开始执行该作业，其响应比是（ ）。<br>A.2<br>B.1<br>C.3<br>D.0.5<br>答：<psw>C， 响应比定义为：响应比&#x3D;作业响应时间&#x2F;运行时问的估计值。其中响应时间为作业进入系统后的等待时间加上估计的运行时间。于是响应比&#x3D;1+作业等待时间&#x2F;运行时间的估计值。所以本题计算*: 1+(10-8)&#x2F;1&#x3D;3,</psw></p></li><li><p>具有 3 级页表的系统中，访问内存的次数为（ ）。<br>A.4<br>B.3<br>C.2<br>D.1<br>答：<psw>A</psw></p></li></ol>              </div>            </details><details class="folding-tag" open><summary> 填空题 </summary>              <div class='content'>              <ol><li><p>设有四个作业同时到达，每个作业的执行时间均为 1 小时，它们在一台处理机上按单道方式运行，则平均周转时间为<psw>2.5</psw>小时。</p></li><li><p>在 OS 中，不可中断的操作称为<psw>原语</psw>。</p></li><li><p>如果系统中有 n 个进程，则在等待队列中进程的个数最多为 <psw>n</psw>个。</p></li><li><p>操作系统是一种<psw>系统</psw>软件。</p></li><li><p>一次仅允许一个进程使用的资源称为<psw>临界资源</psw>。</p></li><li><p>操作系统的接口有<psw>命令接口</psw>、程序接口和图形用户接口。</p></li><li><p>操作系统中的 SPOOLing 技术，实质是将<psw>独占</psw>设备转化为共享设备的技术。</p></li><li><p>设备 I&#x2F;O 方式有如下三种：程序方式、中断方式、<psw>询问</psw>和通道工作方式。</p></li><li><p>现代操作系统应当具备的特征为<psw>程序的并发执行</psw>、资源共享、<psw>操作的</psw>异步。</p></li></ol>              </div>            </details><details class="folding-tag" open><summary> 简答题 </summary>              <div class='content'>              <ol><li><p>画出进程的五种状态转换图并注明转换的条件。</p><div class="hide-block"><button type="button" class="hide-button" style="">答案 </button><div class="hide-content"><p><img src="https://img02.anheyu.com/adminuploads/1/2023/02/07/63e1dd4b3942a.png"></p></div></div></li><li><p>简述分页和分段的主要区别。</p><div class="hide-block"><button type="button" class="hide-button" style="">答案 </button><div class="hide-content"><blockquote><p>主要的区别如下：</p><ol><li>单位：分页是以固定页面大小（通常为 4KB 或 8KB）为单位进行内存分配的，而分段则是以程序段为单位进行内存分配的。</li><li>粒度：分页的粒度较小，适合管理大量小数据块，而分段的粒度较大，适合管理较大的数据段。</li><li>空间利用率：分页可以有效利用内存空间，因为它可以将内存块进行细粒度的分配，而分段则存在内存碎片问题。</li><li>管理方式：分页通常由操作系统自动完成，而分段则需要程序员手动实现。</li><li>总体来说，分页适用于管理大量小数据块，分段适用于管理大块内存。操作系统根据需求选择使用分页或分段，或者两者结合使用。</li></ol></blockquote></div></div></li><li><p>在操作系统中引起进程调度的因素有哪些？</p><div class="hide-block"><button type="button" class="hide-button" style="">答案 </button><div class="hide-content"><blockquote><ol><li>进程状态：当进程进入就绪状态，即可以运行，操作系统就会考虑是否进行调度。</li><li>优先级：操作系统会根据进程的优先级来选择哪个进程先运行。</li><li>CPU 时间片：操作系统通常使用时间片轮转算法，从而选择哪个进程先运行。</li><li>I&#x2F;O 操作：当进程在等待 I&#x2F;O 操作完成时，操作系统可以将 CPU 资源分配给其他进程。</li><li>进程睡眠：当进程处于睡眠状态，操作系统可以将 CPU 资源分配给其他进程。</li></ol></blockquote></div></div></li><li><p>（1）描述访问临界资源的循环进程（2）写出同步机制应遵循的准则</p><div class="hide-block"><button type="button" class="hide-button" style="">答案 </button><div class="hide-content"><blockquote><p>访问临界资源的循环进程是指多个进程同时对一个共享资源进行读写操作。由于多个进程同时竞争这个资源，可能导致数据冲突、不一致等问题。</p></blockquote><blockquote><ul><li>互斥性：在任意时刻，最多只有一个进程可以访问共享资源。</li><li>占有且继续：当一个进程占有共享资源时，它不会释放该资源直到完成对其的操作。</li><li>不死锁：在任意时刻，系统不会发生死锁现象，即多个进程因互相等待对方释放资源而陷入僵局。</li><li>有限等待：系统保证每个进程最多等待一个固定的时间限制，在该时间限制内，如果共享资源仍未被释放，则该进程被强制剥夺其占用资源的权利。</li><li>公平性：系统必须保证每个进程在等待共享资源的同时，都有相同的机会获得资源，不存在某个进程长期占有资源的情况。</li></ul></blockquote></div></div></li><li><p>简述死锁产生的原因及必要条件。</p><div class="hide-block"><button type="button" class="hide-button" style="">答案 </button><div class="hide-content"><blockquote><p>死锁是指两个或更多的进程在执行过程中因竞争资源而造成的一种互相等待的现象，若无外力作用将无法推进下去。死锁产生的必要条件包括：</p><ol><li>互斥条件：一个资源每次只能被一个进程使用。</li><li>请求与保持条件：进程已经占有了至少一个资源，但又提出了新的资源请求，而该资源已被其他进程占有，此时请求进程阻塞。</li><li>不剥夺条件：进程所获得的资源在未使用完之前，不能强行剥夺。</li><li>循环等待条件：存在一个进程等待序列，使得每个进程等待的其他进程正在等待该进程所占有的资源，形成一个环。</li></ol><p>当满足以上四个条件时，就会发生死锁。</p></blockquote></div></div></li></ol>              </div>            </details>]]></content>
    
    
      
      
    <summary type="html">&lt;span class=&#39;p center logo large&#39;&gt;操作系统&lt;/span&gt;

&lt;details class=&quot;folding-tag&quot; open&gt;&lt;summary&gt; 选择题 &lt;/summary&gt;
              &lt;div class=&#39;content&#39;</summary>
      
    
    
    
    <category term="大学生涯" scheme="https://blog.anheyu.com/categories/%E5%A4%A7%E5%AD%A6%E7%94%9F%E6%B6%AF/"/>
    
    
    <category term="操作系统" scheme="https://blog.anheyu.com/tags/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/"/>
    
  </entry>
  
  <entry>
    <title>2022年度总结</title>
    <link href="https://blog.anheyu.com/posts/4c6a.html"/>
    <id>https://blog.anheyu.com/posts/4c6a.html</id>
    <published>2022-12-27T02:57:50.000Z</published>
    <updated>2023-09-02T10:45:47.626Z</updated>
    
    <content type="html"><![CDATA[<div class="note blue anzhiyu-icon-fan flat"><p>眨眼之间一年就过去了，这一年发生了好多好多的事情呐。多图流量警告。</p></div><p>在这一年里有试过在杭州剪过一次新发型。</p><p><img src="https://bu.dusays.com/2023/05/26/6470846f46d88.webp"></p><h3 id="关于工作"><a href="#关于工作" class="headerlink" title="关于工作"></a>关于工作</h3><p>今年年初继续上年在一家很棒的公司做着前端实习工作，虽然工资不高，只有 5k，不过在这里认识的人都特别好，以至于到现在也常有联系。</p><p><img src="https://bu.dusays.com/2023/05/26/6470844b9fc4e.webp"></p><p>工位也很喜欢，每天来到办公室的第一件事就是开中央空调。因为是直播公司的缘故，在这里从来没有缺过零食，除了一开始的单休不太美丽以外，后续也改为了双休（打工人高呼）</p><p><img src="https://bu.dusays.com/2023/05/26/6470848c29c8d.webp"></p><p>临近春节以后给住了半年的小区最后拍了一张清晨的拱墅区。</p><p><img src="https://bu.dusays.com/2023/05/26/64708525ad96a.webp"></p><p>在杭州的日子里，这座城市给我感觉很棒，很魔幻，可惜第一次来到一个陌生的城市，租到了一个离工作地点通勤需要地铁 1 个半小时 ➕ 公交半小时才能抵达滨江实在是令人窒息。也曾试过 6 点半起来然后骑自行车只需要 1 个小时多到达公司楼下，这样 8 点多到，然后吃个早餐就差不多正好（9 点考勤），不过实在是太累了（也有过买小电驴的想法 💡），但是杭州的小电驴管的特别严，给我印象最深刻的就是过斑马线的时候一大堆人和电瓶车一起等红绿灯 🚥 的场景，然后几个人开始抢跑 hhh，这是湘潭这种小县城所不具备的。</p><p>再后来过完年本来打算是离职的，不过出乎意料的是居然被留下来兼职，后来一直在家里准备专升本的考试且 5k 兼职到了 5 月底左右。直到考试结束，挺谢谢老板的啦。</p><h3 id="关于生活"><a href="#关于生活" class="headerlink" title="关于生活"></a>关于生活</h3><p>从杭州回来以后就一直处于备考的状态，说起来老板真的人很好，年假提前了 10 多天放假足足放到了元宵，差不多大半个月。回来以后因为在杭州常常以外卖应付了事，胖了好多好多，于是积极响应女朋友的号召每天跑步跑步锻炼身体，坚持了一个月以后瘦了差不多 10 斤左右。</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/6470855647fe1.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647085563f966.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708ac33e9a2.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708adf85f48.png","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>在 3 月份开始迷上各种开源项目，看了许许多多的开源项目，从中也偷窥了很多很多大牛 🐮 的思想。</p><p>也是在今年攒下了 10w，买房又进了一步。</p><p>第一次织花花，因为真的没有什么时间，但是又马上要到 520 了的我，只要一个星期就可以织完的线材，前前后后居然用了 20 天才织完，所幸效果很不错，那段时间脑子 🧠 里都是短针，中长针，长针。😵，一共 9 朵，献给了我的宝。</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/647085e9dbb6f.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647085e80a8ce.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647085e73dcf4.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647085e998856.webp","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>还有几件令人高兴的事情，原神我抽出了双黄蛋！，万叶也出来了！</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/64708643bff02.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708646f12b1.webp","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>在这一年里我换掉了跟了我 3 年的联想 Y7000 游戏本，换上了现在的 macbook</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/6470864773efa.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708b8532cce.png","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>具体使用感受可以去看我的这篇文章</p><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://blog.anheyu.com/posts/571d.html">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">macbook pro 2021真实体验</div>            <div class="tag-link-sitename">https://blog.anheyu.com/posts/571d.html</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><h3 id="关于学业"><a href="#关于学业" class="headerlink" title="关于学业"></a>关于学业</h3><p>在考完后的 1 个月迎来了升本录取通知书</p><p><img src="https://bu.dusays.com/2023/05/26/64708675c577d.webp"></p><h3 id="关于美食"><a href="#关于美食" class="headerlink" title="关于美食"></a>关于美食</h3><p>本年的娱乐活动少的可怜，由于口罩的原因几乎没有外出，但是依然忙里偷闲在 6 月和小伙伴们自己尝试做烧烤吃<del>虽然不是那么好吃，一顿海底捞的钱居然没有吃饱</del>，一定是打开方式不对。</p><p>在湘江边上的烧烤很棒！</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/647086bac752d.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647086bf3f63d.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647086bc1d1ce.webp","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>只不过打开方式不太对，实在是吃不下去，大部分都喂给小狗狗吃了。</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/647086bc57de5.jpeg","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647086bec3775.webp","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><p>后来还陆陆续续的约了几次麻将 🀄️</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="10">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/6470885b6bcbb.webp","alt":""},{"url":"https://bu.dusays.com/2023/05/26/6470885b6bcba.webp","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><h3 id="关于博客"><a href="#关于博客" class="headerlink" title="关于博客"></a>关于博客</h3><p>这一年把博客改了很多很多，也开始陆陆续续的产出文章，只是没售后 🤡，也开始尝试在 bilbili 发视频，想尝试更多新的内容，认识好多好多有趣的人。</p><div class="gallery">  <div class="fj-gallery page_img_lazyload lazyload btn_album_detail_lazyload data" data-rowHeight="300" data-limit="6">    <span class="gallery-data">[{"url":"https://bu.dusays.com/2023/05/26/647088e803218.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647088eea2024.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647088d9084b8.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647088e0ec431.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708973eaafe.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708977148c0.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/6470898023622.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/647089803de0c.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708983c1695.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/6470898214e65.png","alt":""},{"url":"https://bu.dusays.com/2023/05/26/64708af2a92b5.png","alt":""}]</span>  </div><button class="gallery-load-more" style="opacity:0">  <span>加载更多</span>  <i class="anzhiyufont anzhiyu-icon-arrow-down"></i>  </button></div><h3 id="关于技术"><a href="#关于技术" class="headerlink" title="关于技术"></a>关于技术</h3><div class='checkbox blue checked'><input type="checkbox" checked="checked"/>            <p>vue3+pinia</p>            </div><div class='checkbox blue checked'><input type="checkbox" checked="checked"/>            <p>react18新hook</p>            </div><div class='checkbox blue checked'><input type="checkbox" checked="checked"/>            <p>threeJS，智慧城市</p>            </div><div class='checkbox blue'><input type="checkbox" />            <p>canvas，svg绘制</p>            </div><div class='checkbox blue'><input type="checkbox" />            <p>css奇技淫巧</p>            </div><div class='checkbox blue'><input type="checkbox" />            <p>javascript技巧总结</p>            </div><div class='checkbox blue'><input type="checkbox" />            <p>springboot重提</p>            </div><div class='checkbox blue'><input type="checkbox" />            <p>视频流，音频流，流媒体</p>            </div>]]></content>
    
    
      
      
    <summary type="html">&lt;div class=&quot;note blue anzhiyu-icon-fan flat&quot;&gt;&lt;p&gt;眨眼之间一年就过去了，这一年发生了好多好多的事情呐。多图流量警告。&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;在这一年里有试过在杭州剪过一次新发型。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https:</summary>
      
    
    
    
    <category term="年度总结" scheme="https://blog.anheyu.com/categories/%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93/"/>
    
    
    <category term="年度总结" scheme="https://blog.anheyu.com/tags/%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93/"/>
    
  </entry>
  
  <entry>
    <title>[转载]还在用 JS 做节流吗？CSS 也可以防止按钮重复点击</title>
    <link href="https://blog.anheyu.com/posts/dd9.html"/>
    <id>https://blog.anheyu.com/posts/dd9.html</id>
    <published>2022-12-24T07:59:37.000Z</published>
    <updated>2023-07-31T14:23:42.958Z</updated>
    
    <content type="html"><![CDATA[<div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://juejin.cn/post/7165828047520661534">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">还在用 JS 做节流吗？CSS 也可以防止按钮重复点击</div>            <div class="tag-link-sitename"> https://juejin.cn/post/7165828047520661534</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><p>众所周知，函数节流（throttle）是 JS 中一个非常常见的优化手段，可以有效的避免函数过于频繁的执行。</p><p>举个例子：一个保存按钮，为了避免重复提交或者服务器考虑，往往需要对点击行为做一定的限制，比如只允许每<code>300ms</code>提交一次，这时候我想大部分同学都会到网上直接拷贝一段<code>throttle</code>函数，或者直接引用<code>lodash</code>工具库</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">btn.<span class="title function_">addEventListener</span>(<span class="string">&quot;click&quot;</span>, _.<span class="title function_">throttle</span>(save, <span class="number">300</span>));</span><br></pre></td></tr></table></figure><p>其实除了 JS 方式， CSS 也可以非常轻易的实现这样一个功能，无需任何框架库，一起看看吧</p><h2 id="一、CSS-实现思路分析"><a href="#一、CSS-实现思路分析" class="headerlink" title="一、CSS 实现思路分析"></a>一、CSS 实现思路分析</h2><p>CSS 实现和 JS 的思维不同，需要从另一个角度去看待这个问题。</p><p>比如这里的需要对点击事件进行限制，也就是禁用点击事件，想想有什么方式可以禁用事件，没错，就是<code>pointer-events</code>;</p><p>然后是时间的限制，每次点击后需要自动禁用<code>300ms</code>，时间过后重新恢复，那么，有什么特性和时间以及状态恢复有关呢？没错，就是<code>animation</code>;</p><p>除此之外，还需要有触发时机，这里是点击行为，所以必然和伪类<code>:active</code>有关联。</p><p>因此，综合分析，实现这样一个功能需要用到<code>pointer-events</code>、<code>animation</code>以及<code>:active</code>，那么如何将这些思路串联起来呢？</p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/3ddc0830dbf747c6a2f256ff9910a5f0~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp" alt="image-20221112001600031"></p><p>思考 3 秒…</p><p>🤔</p><p>🤔</p><p>🤔</p><p>你想到了吗？💡💡💡</p><p>其实这种场景可以理解成是<strong>对 CSS 动画的控制</strong>，比如有一个动画控制按钮从<strong>禁用</strong>-&gt;<strong>可点击</strong>的变化，每次点击时让这个动画重新执行一遍，在执行的过程中，一直处于<strong>禁用</strong>状态，是不是就达到了“节流”的效果了？</p><p>接下来看看具体实现</p><h2 id="二、CSS-动画的精准控制"><a href="#二、CSS-动画的精准控制" class="headerlink" title="二、CSS 动画的精准控制"></a>二、CSS 动画的精准控制</h2><p>假设有一个按钮，绑定了一个点击事件</p><figure class="highlight html"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="tag">&lt;<span class="name">button</span> <span class="attr">onclick</span>=<span class="string">&quot;console.log(&#x27;保存&#x27;)&quot;</span>&gt;</span>保存<span class="tag">&lt;/<span class="name">button</span>&gt;</span></span><br></pre></td></tr></table></figure><p>这时的按钮连续点击就会不断地触发，效果如下</p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/598ff1d433dd40e8a828257aa0495140~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp" alt="Kapture 2022-11-12 at 00.17.44"></p><p>下面定义一个关于<code>pointer-events</code>的动画，就叫做 <code>throttle</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">@keyframes</span> throttle &#123;</span><br><span class="line">  <span class="selector-tag">from</span> &#123;</span><br><span class="line">    <span class="attribute">pointer-events</span>: none;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-tag">to</span> &#123;</span><br><span class="line">    <span class="attribute">pointer-events</span>: all;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>很简单吧，就是从<strong>禁用</strong>到<strong>可点击</strong>的变化。</p><p>接下来，将这个动画绑定在按钮上，这里为了方便测试，将动画设置成了<code>2s</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">button</span> &#123;</span><br><span class="line">  <span class="attribute">animation</span>: throttle <span class="number">2s</span> step-end forwards;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>注意，这里动画的缓动函数设置成了阶梯曲线，<code>step-end</code>，它可以很方便的控制<code>pointer-events</code>的变化时间点。</p><blockquote><p>有兴趣的可以参考这篇文章：<a href="https://link.juejin.cn/?target=https://www.zhangxinxu.com/wordpress/2018/06/css3-animation-steps-step-start-end/" title="https://www.zhangxinxu.com/wordpress/2018/06/css3-animation-steps-step-start-end/">CSS3 animation 属性中的 steps 功能符深入介绍 « 张鑫旭-鑫空间-鑫生活 (zhangxinxu.com)</a></p></blockquote><p>如下示意，<code>pointer-events</code>在 0~2 秒内的值都是<code>none</code>，一旦到达 2 秒，就立刻变成了<code>all</code>，由于是<code>forwards</code>，会一直保持<code>all</code>的状态</p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/49075510ac2d4f058940b2fcdedd8ef7~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp" alt="image-20221112005210875"></p><p>最后，在点击时重新执行一遍动画，只需要在按下时设置动画为<code>none</code>就行了</p><blockquote><p>这个技巧之前在这篇文章中有更详细的介绍： <a href="https://juejin.cn/post/7064404257436336135" title="https://juejin.cn/post/7064404257436336135">CSS 实现按钮点击动效的套路</a></p></blockquote><p>实现如下</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">button</span><span class="selector-pseudo">:active</span> &#123;</span><br><span class="line">  <span class="attribute">animation</span>: none;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>为了演示方便，我们暂时把颜色变化也加在动画里</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">@keyframes</span> throttle &#123;</span><br><span class="line">  <span class="selector-tag">from</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: red;</span><br><span class="line">    <span class="attribute">pointer-events</span>: none;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-tag">to</span> &#123;</span><br><span class="line">    <span class="attribute">color</span>: green;</span><br><span class="line">    <span class="attribute">pointer-events</span>: all;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>现在如果文字是<code>red</code>，表示是禁用态，只有是<code>green</code>，才表示可以被点击，非常清晰明了，如下</p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/504f0df68b174ec680027204aa68f60a~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp" alt="Kapture 2022-11-12 at 10.54.43"></p><p>下面是最终点击对比效果，很好地限制了点击频率</p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0149a2bfc61a4bfe9476e4817977b380~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp" alt="Kapture 2022-11-12 at 10.48.13"></p><p>完整代码如下，就这么几行，<strong>如果需要改限制时间，直接改动画时间就行了</strong></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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">button</span> &#123;</span><br><span class="line">  <span class="attribute">animation</span>: throttle <span class="number">2s</span> step-end forwards;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">button</span><span class="selector-pseudo">:active</span> &#123;</span><br><span class="line">  <span class="attribute">animation</span>: none;</span><br><span class="line">&#125;</span><br><span class="line"><span class="keyword">@keyframes</span> throttle &#123;</span><br><span class="line">  <span class="selector-tag">from</span> &#123;</span><br><span class="line">    <span class="attribute">pointer-events</span>: none;</span><br><span class="line">  &#125;</span><br><span class="line">  <span class="selector-tag">to</span> &#123;</span><br><span class="line">    <span class="attribute">pointer-events</span>: all;</span><br><span class="line">  &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>你也可以查看以下任意链接：</p><ul><li><a href="https://link.juejin.cn/?target=https://codepen.io/xboxyan/pen/rNKmmVq" title="https://codepen.io/xboxyan/pen/rNKmmVq">CSS throttle (codepen.io)</a></li><li><a href="https://link.juejin.cn/?target=https://runjs.work/projects/47885939389440f4" title="https://runjs.work/projects/47885939389440f4">CSS throttle (runjs.work)</a></li></ul><h2 id="三、CSS-实现的其他思路"><a href="#三、CSS-实现的其他思路" class="headerlink" title="三、CSS 实现的其他思路"></a>三、CSS 实现的其他思路</h2><p>还记得之前这一篇文章吗？</p><blockquote><p><a href="https://juejin.cn/post/7143051955810598926" title="https://juejin.cn/post/7143051955810598926">还在用定时器吗？借助 CSS 来监听事件</a></p></blockquote><p>借用这种思路，也可以很轻松的实现节流的效果。而且为了更好的体验，可以用上真正的按钮禁用</p><figure class="highlight js"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">btn.<span class="property">disabled</span> = <span class="literal">true</span>;</span><br></pre></td></tr></table></figure><p>具体思路是这样的，通过<code>:active</code>去触发<code>transition</code>变化，然后通过监听<code>transition</code>回调去动态设置按钮的禁用状态，实现如下</p><p>定义一个无关紧要的过渡属性，比如<code>opacity</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">button</span> &#123;</span><br><span class="line">  <span class="attribute">opacity</span>: <span class="number">0.99</span>;</span><br><span class="line">  <span class="attribute">transition</span>: opacity <span class="number">2s</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">button</span><span class="selector-pseudo">:not</span>(<span class="selector-pseudo">:disabled</span>)<span class="selector-pseudo">:active</span> &#123;</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">0s</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后监听<code>transition</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></pre></td><td class="code"><pre><span class="line"><span class="comment">// 过渡开始</span></span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">addEventListener</span>(<span class="string">&quot;transitionstart&quot;</span>, <span class="keyword">function</span> (<span class="params">ev</span>) &#123;</span><br><span class="line">  ev.<span class="property">target</span>.<span class="property">disabled</span> = <span class="literal">true</span>;</span><br><span class="line">&#125;);</span><br><span class="line"><span class="comment">// 过渡结束</span></span><br><span class="line"><span class="variable language_">document</span>.<span class="title function_">addEventListener</span>(<span class="string">&quot;transitionend&quot;</span>, <span class="keyword">function</span> (<span class="params">ev</span>) &#123;</span><br><span class="line">  ev.<span class="property">target</span>.<span class="property">disabled</span> = <span class="literal">false</span>;</span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><p>这样做的最大好处是，<strong>这部分禁用的逻辑是完全和业务逻辑是解耦的</strong>，可以在任意时候，任意场合下无缝接入，也不受框架和环境影响，效果如下</p><p><img src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/18d578d705104d84ab32394cd7426bab~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.awebp" alt="Kapture 2022-11-14 at 17.25.49"></p><p>完整代码也可以查看以下任意链接：</p><ul><li><a href="https://link.juejin.cn/?target=https://codepen.io/xboxyan/pen/oNyWwvB" title="https://codepen.io/xboxyan/pen/oNyWwvB">CSS throttle disabled (codepen.io)</a></li><li><a href="https://link.juejin.cn/?target=https://runjs.work/projects/41e8b998624743fc" title="https://runjs.work/projects/41e8b998624743fc">CSS throttle disabled (runjs.work)</a></li></ul><h2 id="四、总结一下"><a href="#四、总结一下" class="headerlink" title="四、总结一下"></a>四、总结一下</h2><p>以上通过 CSS 的思路实现了类似“节流”的功能，相比 JS 实现而言，实现更精简、使用更简单，没有框架限制，下面一起总结一下实现要点：</p><ol><li>函数节流是一个非常常见的优化方式，可以有效避免函数过于频繁的执行</li><li>CSS 的实现思路和 JS 不同，重点在于在于找到和该场景相关联的属性</li><li>CSS 实现“节流”其实就是控制一个动画的精准控制，假设有一个动画控制按钮从<strong>禁用</strong>-&gt;<strong>可点击</strong>的变化，每次点击时让这个动画重新执行一遍，在执行的过程中，一直处于<strong>禁用</strong>状态，这样就达到了“节流”的效果</li><li>还可以通过 transition 的回调函数动态设置按钮禁用态</li><li>这种实现的好处在于禁用逻辑和业务逻辑是完全解耦的</li></ol><p>不过，这种实现方式还是比较有局限的，仅限于点击行为，像很多时候，节流可能会用在滚动事件或者键盘事件上，像这些场景就用传统方式实现就行了。最后，如果觉得还不错，对你有帮助的话，欢迎点赞、收藏、转发 ❤❤❤</p>]]></content>
    
    
      
      
    <summary type="html">&lt;div calss=&#39;anzhiyu-tag-link&#39;&gt;&lt;a class=&quot;tag-Link&quot; target=&quot;_blank&quot; href=&quot;https://juejin.cn/post/7165828047520661534&quot;&gt;
    &lt;div class=&quot;tag-lin</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="前端" scheme="https://blog.anheyu.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="开发" scheme="https://blog.anheyu.com/tags/%E5%BC%80%E5%8F%91/"/>
    
    <category term="css3" scheme="https://blog.anheyu.com/tags/css3/"/>
    
  </entry>
  
  <entry>
    <title>transform 支持单独赋值改变</title>
    <link href="https://blog.anheyu.com/posts/b019.html"/>
    <id>https://blog.anheyu.com/posts/b019.html</id>
    <published>2022-12-24T07:14:23.000Z</published>
    <updated>2023-07-31T14:23:42.960Z</updated>
    
    <content type="html"><![CDATA[<p>在掘金看到一篇文章</p><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://juejin.cn/post/7152331836578856967">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">解放生产力！transform 支持单独赋值改变</div>            <div class="tag-link-sitename">https://juejin.cn/post/7152331836578856967</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><p>看完以后有感而发<code>transform</code>在制作动画时经常被占用，因为一个元素只能使用一个 transform，所以当我有多属性值需要设置时，我通常的做法是通过添加一个父元素来给它设置 transform 属性。</p><p>比如在魔改博客的过程中希望改变<code>transform</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">header</span><span class="selector-class">.nav</span> &#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">scale</span>(<span class="number">1.5</span>); <span class="comment">/*这样不行，会丢失translate*/</span></span><br><span class="line">&#125;</span><br><span class="line"><span class="comment">/*必须写完整*/</span></span><br><span class="line"><span class="selector-tag">header</span><span class="selector-class">.nav</span> &#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">1.5</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>所以<code>transform</code>很需要能够像<code>background</code>那样能够有单独书写的属性以覆盖 transform 中的值。</p><p>但是从<code>Chrome 104</code>开始，浏览器终于正式支持单独赋值了</p><p>比如说</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">header</span><span class="selector-class">.nav</span> &#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">1.5</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>可以写成</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-tag">header</span><span class="selector-class">.nav</span> &#123;</span><br><span class="line">  translate: -<span class="number">50%</span> -<span class="number">50%</span>;</span><br><span class="line">  scale: <span class="number">1.5</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这样如果需要改变某一部分，就只需要像普通属性一样覆盖就行了</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">header</span><span class="selector-class">.nav</span> &#123;</span><br><span class="line">  scale: <span class="number">2</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>想了解更多的话可以去看看原文，但是这个写法实在是太新了，不建议这么玩。</p><p>基于此我们可以发散思维想一想还有什么办法可以解决<code>transform占用</code>的问题，没错就是 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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(-<span class="number">50%</span>, -<span class="number">50%</span>) <span class="built_in">scale</span>(<span class="number">1.5</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>通过 CSS 变量，将 transform 拆分</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></pre></td><td class="code"><pre><span class="line"><span class="selector-tag">div</span> &#123;</span><br><span class="line">  <span class="attr">--translate</span>: -<span class="number">50%</span>, -<span class="number">50%</span>;</span><br><span class="line">  <span class="attr">--scale</span>: <span class="number">1.5</span>;</span><br><span class="line">  <span class="attribute">transform</span>: <span class="built_in">translate</span>(<span class="built_in">var</span>(--translate)) <span class="built_in">scale</span>(<span class="built_in">var</span>(--scale));</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>经过这样拆分以后，CSS 变量就成了独立属性，如果需要覆盖，只需要修改其中一个就行了，而无需关注–translate 是什么样的，这样变化的部分就可以单独作为一个公共的样式了，如下</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></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.div1</span> &#123;</span><br><span class="line">  <span class="attr">--translate</span>: -<span class="number">50%</span>, -<span class="number">50%</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.div1</span> &#123;</span><br><span class="line">  <span class="attr">--translate</span>: <span class="number">10px</span>, <span class="number">10px</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-tag">div</span><span class="selector-class">.scale</span> &#123;</span><br><span class="line">  <span class="attr">--scale</span>: <span class="number">2</span>; <span class="comment">/*无需关注其他transform，可以作为公共的样式*/</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这么做如果是单纯的状态变化是没有问题的，只需要使用<code>transition: .3s;</code>就可以实现过渡动画，不过当在做 <code>animation</code> 的时候,<br>会发现过渡不了，此时需要下面的代码来实现过渡<code>@property</code>属性可以让我们的自定义属性<code>--scale</code>的变化像 <code>transition: .3s</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">@property</span> --scale &#123;</span><br><span class="line">  syntax: <span class="string">&quot;&lt;number&gt;&quot;</span>;</span><br><span class="line">  inherits: false;</span><br><span class="line">  initial-value: <span class="number">1</span>;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在掘金看到一篇文章&lt;/p&gt;
&lt;div calss=&#39;anzhiyu-tag-link&#39;&gt;&lt;a class=&quot;tag-Link&quot; target=&quot;_blank&quot; href=&quot;https://juejin.cn/post/7152331836578856967&quot;&gt;
    &lt;d</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="前端" scheme="https://blog.anheyu.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="开发" scheme="https://blog.anheyu.com/tags/%E5%BC%80%E5%8F%91/"/>
    
    <category term="css3" scheme="https://blog.anheyu.com/tags/css3/"/>
    
  </entry>
  
  <entry>
    <title>css模糊羽化</title>
    <link href="https://blog.anheyu.com/posts/fd57.html"/>
    <id>https://blog.anheyu.com/posts/fd57.html</id>
    <published>2022-12-24T03:22:54.000Z</published>
    <updated>2023-07-31T14:23:42.959Z</updated>
    
    <content type="html"><![CDATA[<p>在逛 codepen 的时候发现一个有意思的 css 羽化项目</p><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://codepen.io/xboxyan/pen/ZERZrQw">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="background-image: url(https://img02.anheyu.com/adminuploads/1/2022/12/24/63a6a601154d7.png)">          <i class="anzhiyufont anzhiyu-icon-link" style="display: none"></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">css羽化</div>            <div class="tag-link-sitename">css 羽化</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><p>原理是使用了 svg 中的 <code>foreignObject</code> 将 dom 转化为图片来创建一个边缘模糊的遮罩</p><p>让原本有<code>backdrop-filter: blur(10px);</code>的元素产生了羽化的效果</p><p>核心代码</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></pre></td><td class="code"><pre><span class="line"><span class="selector-class">.name</span> &#123;</span><br><span class="line">  <span class="attribute">position</span>: absolute;</span><br><span class="line">  <span class="attribute">bottom</span>: <span class="number">30px</span>;</span><br><span class="line">  <span class="attribute">font-size</span>: <span class="number">50px</span>;</span><br><span class="line">  <span class="attribute">padding</span>: <span class="number">5px</span> <span class="number">15px</span>;</span><br><span class="line">  <span class="attribute">margin</span>: <span class="number">0</span>;</span><br><span class="line">  <span class="attribute">color</span>: <span class="number">#fff</span>;</span><br><span class="line">  backdrop-<span class="attribute">filter</span>: <span class="built_in">blur</span>(<span class="number">10px</span>);</span><br><span class="line">  -webkit-<span class="attribute">mask</span>: <span class="built_in">url</span>(<span class="string">&quot;data:image/svg+xml,%3Csvg xmlns=&#x27;http://www.w3.org/2000/svg&#x27;%3E%3CforeignObject width=&#x27;100%25&#x27; height=&#x27;100%25&#x27;%3E%3Cbody class=&#x27;wrap&#x27; xmlns=&#x27;http://www.w3.org/1999/xhtml&#x27;%3E%3Cstyle%3E.wrap%7Bbox-sizing:border-box;margin:0;height:100%25;padding:15px%7D.shadow%7Bheight:100%25;background:black;border-radius:10px;box-shadow:0 0 5px black, 0 0 10px black, 0 0 15px black %7D%3C/style%3E%3Cdiv class=&#x27;shadow&#x27;/%3E%3C/body%3E%3C/foreignObject%3E%3C/svg%3E&quot;</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>且这么创建出来的羽化效果可以达到自适应。当然我觉得或许可以用 box-shadow 也可以实现，只不过觉得这种实现方式思路新奇，特此记录 📝。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在逛 codepen 的时候发现一个有意思的 css 羽化项目&lt;/p&gt;
&lt;div calss=&#39;anzhiyu-tag-link&#39;&gt;&lt;a class=&quot;tag-Link&quot; target=&quot;_blank&quot; href=&quot;https://codepen.io/xboxyan/pe</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="前端" scheme="https://blog.anheyu.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="开发" scheme="https://blog.anheyu.com/tags/%E5%BC%80%E5%8F%91/"/>
    
    <category term="css3" scheme="https://blog.anheyu.com/tags/css3/"/>
    
  </entry>
  
  <entry>
    <title>butterfly文章顶部添加波浪效果</title>
    <link href="https://blog.anheyu.com/posts/98c4.html"/>
    <id>https://blog.anheyu.com/posts/98c4.html</id>
    <published>2022-12-21T07:55:44.000Z</published>
    <updated>2023-09-02T05:22:35.180Z</updated>
    
    <content type="html"><![CDATA[<div class="note info simple"><div class="hide-block"><button type="button" class="hide-button" style="">预览效果    </button><div class="hide-content"><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/21/63a2dcb4d781a.png"></p></div></div></div><h1 id="魔改"><a href="#魔改" class="headerlink" title="魔改"></a>魔改</h1><p>修改 <code>themes/butterfly/layout/includes/header/index.pug</code> 大概第 33 行左右</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>为了方便复制，提供一份需要修改的部分:</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></pre></td><td class="code"><pre><span class="line">section.main-hero-waves-area.waves-area</span><br><span class="line">  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><br><span class="line">    defs</span><br><span class="line">      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><br><span class="line">    g.parallax</span><br><span class="line">      use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;0&#x27;)</span><br><span class="line">      use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;3&#x27;)</span><br><span class="line">      use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;5&#x27;)</span><br><span class="line">      use(href=&#x27;#gentle-wave&#x27;, x=&#x27;48&#x27;, y=&#x27;7&#x27;)</span><br></pre></td></tr></table></figure><p>然后在<code>_config.butterfly.yml</code>的 <code>[inject.head]</code> 或者自定义 css 中 引入以下 css, 不会的同学参考<a href="https://blog.leonus.cn/2022/custom.html">Hexo 博客添加自定义 css 和 js 文件</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></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; use &#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; use<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">  fill: <span class="number">#f7f9febd</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; use<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">  fill: <span class="number">#f7f9fe82</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; use<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">  fill: <span class="number">#f7f9fe36</span>;</span><br><span class="line">&#125;</span><br><span class="line"><span class="selector-class">.parallax</span> &gt; use<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">  fill: <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; use<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">  fill: <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; use<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">  fill: <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; use<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">  fill: <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; use<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">  fill: <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><h1 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h1><p>大功告成，需要注意的是 css 中<code>fill属性</code>可以控制波浪颜色，最好使其中一个颜色与背景颜色一致，否则会显的有点奇怪。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;div class=&quot;note info simple&quot;&gt;&lt;div class=&quot;hide-block&quot;&gt;&lt;button type=&quot;button&quot; class=&quot;hide-button&quot; style=&quot;&quot;&gt;预览效果
    &lt;/button&gt;&lt;div class=&quot;hide-</summary>
      
    
    
    
    
    <category term="教程" scheme="https://blog.anheyu.com/tags/%E6%95%99%E7%A8%8B/"/>
    
    <category term="Hexo" scheme="https://blog.anheyu.com/tags/Hexo/"/>
    
    <category term="butterfly" scheme="https://blog.anheyu.com/tags/butterfly/"/>
    
  </entry>
  
  <entry>
    <title>Chrome 发布新的 CSS 视口单位：svh、lvh、dvh！！！</title>
    <link href="https://blog.anheyu.com/posts/e644.html"/>
    <id>https://blog.anheyu.com/posts/e644.html</id>
    <published>2022-12-19T02:13:37.000Z</published>
    <updated>2023-07-31T14:23:42.958Z</updated>
    
    <content type="html"><![CDATA[<div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://web.dev/viewport-units/">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">原文链接</div>            <div class="tag-link-sitename"> The large， small， and dynamic viewport units</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><div calss='anzhiyu-tag-link'><a class="tag-Link" target="_blank" href="https://mp.weixin.qq.com/s/sbdXOo1GUBOxQw_HC7arwQ">    <div class="tag-link-tips">引用站外地址</div>    <div class="tag-link-bottom">        <div class="tag-link-left" style="">          <i class="anzhiyufont anzhiyu-icon-link" style=""></i>        </div>        <div class="tag-link-right">            <div class="tag-link-title">原文翻译</div>            <div class="tag-link-sitename"> Chrome 发布新的 CSS 视口单位：svh、lvh、dvh！！！</div>        </div>        <i class="anzhiyufont anzhiyu-icon-angle-right"></i>    </div>    </a></div><p><code>CSS</code> 的 <code>Viewport</code>单位听起来很棒。</p><p>如果你想将一个元素设置成<code>全屏高度</code>，你可以设置高度:<code>100vh</code>，这样你就有了一个完美的<code>全屏元素</code>，它会随着视口的改变而改变大小！！！!</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe5a920d2b.png" alt="图片"></p><p>遗憾的是，事实并非如此！！！</p><h2 id="vw、vh-的问题"><a href="#vw、vh-的问题" class="headerlink" title="vw、vh 的问题"></a>vw、vh 的问题</h2><p>要调整<code>视口大小</code>，可以使用 <code>vw</code> 和 <code>vh</code> 单位。<code>vw</code>=视口大小<code>宽度</code>的 <code>1%</code>。<code>vh</code>=视口大小<code>高度</code>的 <code>1%</code>。给一个元素 <code>100vw</code>的宽度和 <code>100vh</code> 的高度，它将完全<code>覆盖视口</code>。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe465a02d2.png!blogimg" alt="图片"></p><p>虽然现有的设备在桌面上运行良好，但在<code>移动设备</code>上则不同。在那里，视口大小受动态<code>工具栏</code>的存在或不存在的影响。这些是用户界面，如<code>地址栏</code>和<code>选项卡</code>栏。虽然视口大小可以更改，但 <code>vw</code> 和 <code>vh</code> 大小不会更改。因此，大小为 <code>100vh</code> 的元素将从视口中<code>溢出</code>。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe4657093c.png!blogimg" alt="图片"></p><p>向下滚动时，这些动态<code>工具栏</code>将<code>缩回</code>。在此状态下，大小为 <code>100vh</code> 的元素将<code>覆盖</code>整个视口。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe46573c9c.png!blogimg" alt="图片"></p><p>为了解决这个问题，在 <code>CSS</code> 中指定了视口的各种状态。</p><h2 id="新的视口单位"><a href="#新的视口单位" class="headerlink" title="新的视口单位"></a>新的视口单位</h2><p><code>小视口</code>：这些动态工具栏是展开的<code>大视口</code>：这些动态工具栏是缩回的</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe465823eb.png!blogimg" alt="图片"></p><p>表示<code>大视口</code>的单位具有 <code>lv</code> 前缀。单位为 <code>lvw</code>、<code>lvh</code>、<code>lvi</code>、<code>lvb</code>、<code>lvmin</code> 和 <code>lvmax</code>。表示<code>小视口</code>的单位具有 <code>sv</code> 前缀。单位为 <code>svw</code>、<code>svh</code>、<code>svi</code>、<code>svb</code>、<code>svmin</code> 和 <code>svmax</code>。除非调整视口本身的大小，否则这些视口百分比单位的大小是固定的（因此是稳定的）。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe46595ae8.png!blogimg" alt="图片"></p><h2 id="动态视口"><a href="#动态视口" class="headerlink" title="动态视口"></a>动态视口</h2><p>除了<code>大视口</code>和<code>小视口</code>，还有一个<code>动态视口</code>，它动态考虑了动态工具栏。展开动态工具栏时，动态视口等于小视口的大小。当动态工具栏缩回时，动态视口等于大视口的大小。其附带的单位具有 <code>dv</code> 前缀：<code>dvw</code>、<code>dvh</code>、<code>dvi</code>、<code>dvb</code>、<code>dvmin</code> 和 <code>dvmax</code>。</p><p><img src="https://img02.anheyu.com/adminuploads/1/2022/12/19/639fe46598faa.png!blogimg" alt="图片"></p><p>这些单位在 <code>Chrome108</code> 中发布，加入了已经支持的 <code>Safari</code> 和 <code>Firefox</code>。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;div calss=&#39;anzhiyu-tag-link&#39;&gt;&lt;a class=&quot;tag-Link&quot; target=&quot;_blank&quot; href=&quot;https://web.dev/viewport-units/&quot;&gt;
    &lt;div class=&quot;tag-link-tips&quot;&gt;引用站</summary>
      
    
    
    
    <category term="前端开发" scheme="https://blog.anheyu.com/categories/%E5%89%8D%E7%AB%AF%E5%BC%80%E5%8F%91/"/>
    
    
    <category term="前端" scheme="https://blog.anheyu.com/tags/%E5%89%8D%E7%AB%AF/"/>
    
    <category term="css3" scheme="https://blog.anheyu.com/tags/css3/"/>
    
  </entry>
  
</feed>
