<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Link</title>
        <description>怎么去拥有一道彩虹。</description>
        <link>https://atlinker.cn</link>
        <atom:link href="https://atlinker.cn/feed.xml" rel="self" type="application/rss+xml" />
        
            <item>
               <title>获取必应每日壁纸</title>
               <description>&lt;p&gt;之前做过一个这样的api来绕过跨域，可以获取必应搜索主页的背景图，每天都会自动轮换，挺有意思的，不过之前用来代理的服务器现在速度不太行了，故移植到了新服务器上，做成了v2版本&lt;/p&gt;

&lt;h2 id=&quot;必应壁纸-api-v2-使用指南&quot;&gt;#必应壁纸 API v2 使用指南&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;API 地址：&lt;a href=&quot;https://bing.lkin.cn/&quot;&gt;https://bing.lkin.cn/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;所有接口均支持跨域（CORS）&lt;/li&gt;
  &lt;li&gt;默认返回国内版数据，支持添加 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;region=cn&lt;/code&gt; 参数来切换国内版&lt;/li&gt;
  &lt;li&gt;国内版：&lt;a href=&quot;https://bing.lkin.cn/?region=cn&quot;&gt;https://bing.lkin.cn/?region=cn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;获取壁纸图片&quot;&gt;#获取壁纸图片&lt;/h2&gt;

&lt;h3 id=&quot;默认尺寸19201080&quot;&gt;默认尺寸（1920×1080）&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;GET &lt;a href=&quot;https://bing.lkin.cn/wallpaper&quot;&gt;https://bing.lkin.cn/wallpaper&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;img&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://bing.lkin.cn/wallpaper&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alt=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;每日壁纸&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;1366分辨率1366768&quot;&gt;1366分辨率（1366×768）&lt;/h3&gt;

&lt;p&gt;通过拼接参数&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;r=1366&lt;/code&gt;来获取分辨率为1366×768的壁纸&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;GET &lt;a href=&quot;https://bing.lkin.cn/wallpaper?r=1366&quot;&gt;https://bing.lkin.cn/wallpaper?r=1366&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;不传或传其他值 → 默认 1920×1080&lt;/p&gt;

&lt;h3 id=&quot;图片跨域代理模式&quot;&gt;图片跨域代理模式&lt;/h3&gt;

&lt;p&gt;当获取壁纸图片时，默认行为是 302 重定向到必应的图片网址，图片本身可能不支持跨域。这样的好处是图片加载更快，并且浏览器对带src属性的标签没有严格的跨域政策。&lt;/p&gt;

&lt;p&gt;但如果你想在JS里处理这张图片，比如绘制到 Canvas 等等就需要这张图片能够允许跨域&lt;/p&gt;

&lt;p&gt;接口提供了 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cors&lt;/code&gt; 参数用于请求跨域代理的图片，来允许 JS &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;fetch&lt;/code&gt; 处理或其他必须要求跨域的场景，请加上 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;cors=true&lt;/code&gt; 参数来获取允许跨域的图片&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;GET &lt;a href=&quot;https://bing.lkin.cn/wallpaper?cors=true&quot;&gt;https://bing.lkin.cn/wallpaper?cors=true&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;返回的图片会带上允许跨域的头，但会拖慢加载速度，因为图片要先从Bing下载到我的服务器，再二次分发&lt;/p&gt;

&lt;p&gt;支持&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;region=cn&lt;/code&gt;参数切换国内版本，如：&lt;a href=&quot;https://bing.lkin.cn/wallpaper?cors=true&amp;amp;region=cn&quot;&gt;https://bing.lkin.cn/wallpaper?cors=true&amp;amp;region=cn&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;获取json源数据&quot;&gt;#获取JSON源数据&lt;/h2&gt;

&lt;p&gt;使用API 根地址：&lt;a href=&quot;https://bing.lkin.cn/&quot;&gt;https://bing.lkin.cn/&lt;/a&gt;来返回允许跨域的JSON源数据&lt;/p&gt;

&lt;p&gt;数据格式：&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;images&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;startdate&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;20190728&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;fullstartdate&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;201907280700&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;enddate&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;20190729&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;url&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/th?id=OHR.NebraskaCarArt_EN-US3283375378_1920x1080.jpg&amp;amp;rf=LaDigue_1920x1080.jpg&amp;amp;pid=hp&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;urlbase&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/th?id=OHR.NebraskaCarArt_EN-US3283375378&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;copyright&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Carhenge, created by Jim Reinders near Alliance, Nebraska (© Charlie Summers/Minden Pictures)&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;copyrightlink&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;https://www.bing.com/search?q=carhenge&amp;amp;form=hpcapt&amp;amp;filters=HpDate%3a%2220190728_0700%22&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;title&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Kitsch collides with archaeology at Carhenge&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;quiz&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/search?q=Bing+homepage+quiz&amp;amp;filters=WQOskey:%22HPQuiz_20190728_NebraskaCarArt%22&amp;amp;FORM=HPQUIZ&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;wp&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;hsh&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;bd9468a81db78217711eb758046ba487&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;drk&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;top&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;bot&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
            &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;hs&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
    &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;tooltips&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;loading&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Loading...&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;previous&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Previous image&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;next&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Next image&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;walle&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;This image is not available to download as wallpaper.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; 
        &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;walls&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Download this image. Use of this image is restricted to wallpaper only.&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;你也可以加上参数来获取&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;q=copyright&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;q=copyrightlink&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;q=title&lt;/code&gt;三个值(参数对国内国际两个版本都通用)&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;参数&lt;/th&gt;
      &lt;th&gt;return(纯文本)&lt;/th&gt;
      &lt;th&gt;示例&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;q=copyright&lt;/td&gt;
      &lt;td&gt;图片版权&lt;/td&gt;
      &lt;td&gt;https://bing.lkin.cn/?q=copyright&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;q=copyrightlink&lt;/td&gt;
      &lt;td&gt;版权链接&lt;/td&gt;
      &lt;td&gt;https://bing.lkin.cn/?q=copyrightlink&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;q=title&lt;/td&gt;
      &lt;td&gt;图片标题&lt;/td&gt;
      &lt;td&gt;https://bing.lkin.cn/?q=title&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;示例：&lt;/p&gt;

&lt;p&gt;获取国内版版权文本：/?q=copyright&amp;amp;region=cn&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;如有接口连接问题请及时留言&lt;/p&gt;
&lt;/blockquote&gt;
</description>
               <pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2026/08/14/bingwallpaperV2.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2026/08/14/bingwallpaperV2.html</guid>
               </item>
        
            <item>
               <title>随机猫猫头像API</title>
               <description>&lt;p&gt;Gravatar总是被墙？网站访客没有头像？用喵头像把他们&lt;del&gt;全部变成猫娘！&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;其实是一个随机生成像素猫猫头的api，可以随机生成也可以基于给定的uid生成特定头像。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://cat.959608.xyz/cat&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;食用方法:&lt;/p&gt;

&lt;p&gt;访问&lt;a href=&quot;https://cat.959608.xyz/cat&quot;&gt;https://cat.959608.xyz/cat&lt;/a&gt;可以返回随机猫猫头&lt;/p&gt;

&lt;p&gt;也可以带上uid参数，uid不为0时返回固定头像&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cat.959608.xyz/cat?uid=abc&quot;&gt;https://cat.959608.xyz/cat?uid=abc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;当uid=0时，返回的仍是随机头像&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://cat.959608.xyz/cat?uid=0&quot;&gt;https://cat.959608.xyz/cat?uid=0&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;具体文档可以参考&lt;a href=&quot;https://lkin.cn/cat/&quot;&gt;喵头像&lt;/a&gt;&lt;/p&gt;
</description>
               <pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2026/07/30/catavatar.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2026/07/30/catavatar.html</guid>
               </item>
        
            <item>
               <title>自己写一个实况照片网页组件？</title>
               <description>&lt;p&gt;因为苹果官方给的LivePhotoKit JS实在是台阶吧难用&lt;img src=&quot;/exp/wry.gif&quot; alt=&quot;&quot; /&gt;，于是乎自己动手写了一个…&lt;/p&gt;

&lt;h2 id=&quot;我chovy你们做组件给我做好了呀&quot;&gt;&lt;del&gt;我chovy，你们做组件给我做好了呀&lt;/del&gt;&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://files.atlinker.cn/img-151409-9760.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;:point_right: &lt;a href=&quot;https://github.com/link9596/WebLivePhoto&quot;&gt;仓库地址&lt;/a&gt; :point_right: &lt;a href=&quot;https://atlinker.cn/demo/livephoto.html&quot; target=&quot;_blank&quot;&gt;演示页&lt;/a&gt;&lt;/p&gt;
&lt;iframe src=&quot;https://ghbtns.com/github-btn.html?user=link9596&amp;amp;repo=WebLivePhoto&amp;amp;type=star&amp;amp;count=true&amp;amp;size=large&quot; frameborder=&quot;0&quot; scrolling=&quot;0&quot; width=&quot;170&quot; height=&quot;30&quot; title=&quot;GitHub&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;起因是前几天在别人那里看到个很有意思的组件，可以在网页上放实况照片，而且体验和在ios上的实况照片几乎一致，上网搜了搜，发现苹果官方就给了LivePhotoKit JS这样的组件。&lt;/p&gt;

&lt;p&gt;看了一下文档发现很简单，只要创建一个div在里面声明图片和视频的链接就可以生成实况照片了，于是在相册装了一个试试，开始前两天用着挺好的，可是后面用着用着发现很多问题，于是乎就自己写了一个Web.LivePhoto，不依赖官方库，对图片和视频的格式要求更宽松。&lt;/p&gt;

&lt;h2 id=&quot;什么问题&quot;&gt;什么问题？&lt;/h2&gt;

&lt;p&gt;在用LivePhotoKit JS的时候经常会遇到实况照片无法播放的问题，很多错误的地方都很难找到原因，导致debug非常困难，而且实现的原理比较复杂，众所周知越复杂越容易出错，现在已知的错误有以下几种：&lt;/p&gt;

&lt;h2 id=&quot;资源跨域&quot;&gt;资源跨域&lt;/h2&gt;

&lt;p&gt;浏览器本身是允许img和video资源跨域的，但LivePhotoKit是使用XMLHttpRequest方法来加载视频和图片，再通过canvas绘制成一张图片，这样一来就会用js加载资源就会发生浏览器禁止跨域的问题，如果大家使用的是一些非正规图床，通常都是不允许跨域的，那这就会导致无法播放，修复起来又很麻烦。&lt;/p&gt;

&lt;h2 id=&quot;视频格式&quot;&gt;视频格式&lt;/h2&gt;

&lt;p&gt;再一个就是LivePhotoKit在反复多次播放之后可能出现无法播放的问题，具体原因无法复现，而且出现频率不低，需要刷新页面后才能修复。对视频的格式要求很高，而且在请求视频时HTTP Content-Type返回的响应头需要是video/quicktime，否则也容易导致无法播放，编码必须为H.264编码（这个没得说，因为大部分浏览器不支持如H.265等其他编码），但是同样一个视频，通过ffmpeg转换出来的H.264视频可以播放，另一个软件转换出来的又不行，后面比对了两者的视频元数据，并没发现异常，我也不清楚是什么导致的无法播放，而且兼容性不太好，试过比如QQ自带的浏览器无法播放动态。&lt;/p&gt;

&lt;p&gt;最开始想着看看LivePhotoKit的源码，看看为什么同样的H.264视频一个能播，另一个又不能播，可是看了源码发现，官方的实现实在是太复杂了，看的让人眼花缭乱，而且组件好像很久也没人维护了。&lt;/p&gt;

&lt;h2 id=&quot;沃德发&quot;&gt;&lt;del&gt;沃德发&lt;/del&gt;&lt;/h2&gt;

&lt;p&gt;凭什么浏览器能放的视频，用这个组件又无法播放了？所以我决定放弃LivePhotoKit，决定自己写一个，以最简单的方式实现：一张图片和一个视频叠一起，长按让图片淡出，视频淡入，同时播放视频，结束后视频淡出图片淡入，于是就有了这个Web.LivePhoto组件。&lt;/p&gt;

&lt;p&gt;因为本质上就是一张图片和一个视频叠在了一起，所以对视频的格式、图片尺寸、视频尺寸等等几乎没有什么要求，浏览器能看，就能用。并且没有跨域问题。动画和UI上都是像素级还原LivePhotoKit，毕竟果子这UI做的还是不错的。&lt;/p&gt;

&lt;p&gt;为了方便大家修改来适配自己的网站样式，把CSS分开了，其实也没什么内容，不过肯定有人有想自定义样式的需求。&lt;/p&gt;

&lt;h2 id=&quot;食用文档&quot;&gt;食用文档&lt;/h2&gt;

&lt;h3 id=&quot;安装&quot;&gt;安装&lt;/h3&gt;

&lt;p&gt;下载 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;live-photo.css&lt;/code&gt; 和 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;live-photo.js&lt;/code&gt; 文件，在页面中引入：&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;rel=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;href=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;path/to/live-photo.css&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;path/to/live-photo.js&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;以下是初始化方式，你当然可以自定义其他匹配规则：&lt;/p&gt;

&lt;h2 id=&quot;初始化&quot;&gt;初始化&lt;/h2&gt;

&lt;p&gt;默认方式&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;// 默认：自动扫描所有 .live-photo 容器并初始化&lt;/span&gt;
    &lt;span class=&quot;nx&quot;&gt;LivePhoto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;// 指定选择器或元素，如查找所有id为myLivePhoto的元素&lt;/span&gt;
     &lt;span class=&quot;nx&quot;&gt;LivePhoto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;init&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;#myLivePhoto&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;展示实况照片&quot;&gt;展示实况照片&lt;/h2&gt;

&lt;p&gt;展示！！以下方的html格式编写&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;live-photo&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;myLivePhoto&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;img&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;live-photo-img&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://example.com/cover.jpg&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alt=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;video&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;live-photo-video&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;playsinline&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;muted&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;preload=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;auto&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;poster=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://example.com/cover.jpg&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
        &lt;span class=&quot;nt&quot;&gt;&amp;lt;source&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://example.com/video.mp4&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;video/mp4&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;/video&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;当然还可以用简写成：&lt;/p&gt;

&lt;div class=&quot;language-html highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;live-photo&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;myLivePhoto&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;img&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;live-photo-img&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://example.com/cover.jpg&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;alt=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;...&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;nt&quot;&gt;&amp;lt;video&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;class=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;live-photo-video&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;src=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;https://example.com/video.mp4&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;type=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;video/mp4&quot;&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;playsinline&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;muted&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;preload=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;auto&quot;&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&amp;gt;&amp;lt;/video&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;实际上就是一个div容器包裹了一张照片和一个视频，js会在默认情况下会自动寻找类名为live-photo的div容器，把类名为live-photo-img的图片和类名为live-photo-video的视频包装成实况照片。&lt;/p&gt;

&lt;p&gt;目前在小米自带浏览器上会出现video标签被劫持的情况，具体表现是会破坏原有样式、显示出浏览器自带的播放控件（太流氓了），其他浏览器都正常显示&lt;del&gt;（奇怪了劫持视频标签干嘛呀，不会是为了插播广告吧）&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;要破解只能使用fetch或XMLHttpRequest获取视频数据，转为Blob对象，再创建Blob URL赋给video标签，浏览器嗅探器就无法识别这类动态生成的 Blob URL，就不会被劫持了。但这样就不能跨域了，大家自己权衡吧= =，反正我觉得这类浏览器兼不兼容无所谓了&lt;img src=&quot;/exp/razz.gif&quot; alt=&quot;&quot; /&gt;..&lt;/p&gt;
</description>
               <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2026/05/15/livephoto.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2026/05/15/livephoto.html</guid>
               </item>
        
            <item>
               <title>使用Snackbar更优雅的通知</title>
               <description>&lt;p&gt;一直很喜欢谷歌的Material Design设计规范，我觉得非常规整，互动感强又不花哨，当安卓5.0推出MD设计语言之后特别喜欢当时根据MD规范设计的一些App，比如b站、酷安等，但是碍于国内软件生态最后还是没能推广开来…&lt;/p&gt;

&lt;p&gt;但不得不说Material Design确实是非常出色的设计语言，在交互方面非常高效，我也喜欢很多Material Design元素，尤其特别喜欢Snackbar，相比较安卓5之前的Toast来说，Snackbar可交互，在显示一些短通知方面更加高效。&lt;/p&gt;

&lt;p&gt;在MDUI的官网有Material Design的&lt;a href=&quot;https://www.mdui.org/zh-cn/design/1/&quot;&gt;设计规范中文文档&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s41.ax1x.com/2026/04/04/petUgx0.webp&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;而通过历代更新，Snackbar的样式也有了许多微小变化&lt;/p&gt;

&lt;p&gt;然后就有了这个：&lt;a href=&quot;https://github.com/link9596/Snackbar&quot;&gt;Snackbar组件&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;仅需5kb就可以优雅地使用Sanckbar进行通知~&lt;/p&gt;

&lt;p&gt;你可以在codepen.io查看 &lt;a href=&quot;https://codepen.io/link9596/pen/myrKjdg&quot;&gt;Snackbar Demo&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;使用说明&quot;&gt;使用说明&lt;/h2&gt;

&lt;p&gt;在 HTML 中通过 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;script src=&quot;.../snackbar.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt; 引入。&lt;/p&gt;

&lt;h2 id=&quot;参数说明&quot;&gt;参数说明：&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;参数&lt;/th&gt;
      &lt;th&gt;说明&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;message (string)&lt;/td&gt;
      &lt;td&gt;必填，提示文本&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;actionText (string)&lt;/td&gt;
      &lt;td&gt;可选，按钮文字&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;actionHandler (function)&lt;/td&gt;
      &lt;td&gt;可选，按钮点击的回调函数&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;duration (number)&lt;/td&gt;
      &lt;td&gt;自动收回延迟（毫秒），默认 3500，设为 0 则不自动关闭（常驻通知，必须通过交互等方式关闭）&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;调用方式&quot;&gt;调用方式：&lt;/h2&gt;

&lt;p&gt;基础消息: snackbar.show({ message: ‘操作成功’, duration: 3000 })&lt;/p&gt;

&lt;p&gt;带操作按钮: snackbar.show({ message: ‘已删除’, actionText: ‘撤销’, actionHandler: () =&amp;gt; { &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;这里写回调函数&lt;/code&gt; } })&lt;/p&gt;

&lt;p&gt;快捷调用: snackbar.info(‘纯文本消息’) 或 snackbar.action(‘消息’, ‘按钮’, callback)&lt;/p&gt;
</description>
               <pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2026/04/04/snackbar.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2026/04/04/snackbar.html</guid>
               </item>
        
            <item>
               <title>又爆改了亿点点</title>
               <description>&lt;p&gt;抽空又改了一下这个小破站，为什么嘞，是因为Leancloud又搞事情了 &lt;del&gt;(要关服了 悲)&lt;/del&gt;，我的评论系统又没着落了&lt;/p&gt;

&lt;p&gt;小破站早期算是Valine的忠实用户，当时的竞争对手大多是一些第三方社会化评论系统，比如来必力(定制性太差)、Disqus(墙内体验不好)、友言(样式太老)，这几个都用过，最后觉得第三方评论系统样式与主题太割裂，体验不好。所以当时Valine的横空出世让我眼前一亮，刚好满足当时喜欢折腾想美化主题的需求。&lt;/p&gt;

&lt;p&gt;后来一直是用的Valine+Leancloud来实现的评论系统，好处是非常方便，用Leancloud作为后端管理也非常方便，Valine这边呢也只需要写几行配置就能跑起来了，不过也有一些缺点，就是貌似Valine对Pjax的支持不太友好，我折腾了很久都没能让Valine完美兼容Pjax，我觉得有Pjax还是很重要的，但如果没评论区又会显得网站很无聊，最后只能舍弃Pjax了。&lt;/p&gt;

&lt;p&gt;Leancloud向普通用户提供开发版应用，完全免费，其实当时选择这个评论方案还是有点顾虑的，&lt;del&gt;因为免费的才是最贵的 说不定哪一天就转为收费或者跑路了&lt;/del&gt;，但想着Leancloud好歹也是知名提供商，跑路其实不太可能，最不济最后转为收费后再考虑购买或者选择其他方案嘛。&lt;/p&gt;

&lt;p&gt;但最近在登陆leancloud管理后台的时候，突然看到了官方发布的&lt;a href=&quot;https://docs.leancloud.app/sdk/announcements/sunset-announcement/&quot;&gt;停止服务通知&lt;/a&gt;，一开始以为只是停止一些其他无关紧要的服务，但当我一点进去看的时候…我操，真他妈要停服了啊&lt;img src=&quot;https://atlinker.cn/exp/sweat.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Valine作为后端完全依赖Leancloud的评论系统，Leancloud停服意味着Valine像是离开水的鱼…活不了一点&lt;/p&gt;

&lt;p&gt;这一天还是来了，Waline启动！&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s41.ax1x.com/2026/03/30/pe3dnxS.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Waline是基于Valine衍生的带后端评论系统。可以将 Waline 等价成 With backend Valine。新版本Waline比Valine功能更多，还对Pjax更友好。第一次知道这个还是在很多年前，那时候W还没有V那么完善…&lt;/p&gt;

&lt;p&gt;但是数据迁移过程中，还是踩了好多坑，Valine创建的数据库内容和Waline有一点点不一样，导入的时候转换这些就花了好久时间。花了两天终于把数据迁移过来了，感觉有后端还是方便些。又搞了Waline和Instantclick的适配，终于实现无刷新了，终于感觉速度飞起来了&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/exp/new/a14.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</description>
               <pubDate>Mon, 30 Mar 2026 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2026/03/30/newsocialwaline.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2026/03/30/newsocialwaline.html</guid>
               </item>
        
            <item>
               <title>早知道，还是原道 pT-Tq</title>
               <description>&lt;p&gt;触发悔恨之泪，体温下降5°C，持续5天。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-2.png&quot; alt=&quot;qaq&quot; /&gt;&lt;/p&gt;

&lt;p&gt;上个星期我原来的耳机泡水杯里了，虽然我也不知道为什么在我发现它的时候它会泡在水杯里，可能我听完随手往桌子上一丢不小心给一只丢进去了，拿出来的时候用纸巾吸了一下，竟然吸了满满一张纸，好家伙这小东西这么能吸 &lt;del&gt;(bushi&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;但是我不心疼，因为我不会告诉你这是我当初在拼夕夕9.9包邮买的…&lt;/p&gt;

&lt;p&gt;震惊的是，当我吸干后，我想着等第二天干了再用试试看吧，然后没忍住，想试试这东西的质量，吸完还没干透我就插上手机开始听了一下，音质完全没差，NB，拼夕夕诚不欺我。&lt;/p&gt;

&lt;p&gt;然后我突然想起来还有原道这玩意儿，以前总是看到别人玩梗，反正这次那条JBL耳机落在家里了，而且原道也便宜，想着买一条以防泡水耳机有天坏了。&lt;/p&gt;

&lt;h2 id=&quot;主角登场&quot;&gt;主角登场！&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;如图所示，质量看起来可能不咋地，线材一般般，耳机塑料感也很重，麦克风用语音测了一下，感觉收音有点闷，不过是这个价位耳机自带麦克风的水平，也没什么好说。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;这个线头空空的，有种经不起用力扯的感觉&lt;/p&gt;

&lt;p&gt;还有就是线控按键的键感有总似曾相识的感觉，非常像以前各类玩具里拆出来的按键单元一样，哒哒哒的响声很大，塑料感也很重，虽然但是，我要给你看一个东西:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;要啥自行车！&lt;img src=&quot;/exp/new/pp-8.png&quot; alt=&quot;&quot; /&gt;貌似在我买完还降了一块钱，&lt;del&gt;血亏&lt;/del&gt;，而且不带麦的版本最便宜只需要4.8。&lt;/p&gt;

&lt;h2 id=&quot;重头戏&quot;&gt;重头戏&lt;/h2&gt;

&lt;p&gt;对于一个耳机，该说说它的音质了，当我戴上它的那一刻，泪，射了出来。&lt;/p&gt;

&lt;p&gt;p&lt;img src=&quot;/exp/pp-3.png&quot; alt=&quot;&quot; /&gt;q&lt;/p&gt;

&lt;p&gt;这个价位买的竟然有低音！！而且调音意外的不错，吊打万元以下耳机可能有些夸张了，但是在百元价位的耳机里还是非常能打的，看来大家能吹还是有点原因在里面的。中低频意外不错，但是高频有些不够清澈，也就是大家说的听人声不太行，但如果有均衡器设置的话，像我这样设置，可以改善很多高频不够清澈的问题，听人声也是没问题滴，我觉得调完调前完全是两个耳机 &lt;del&gt;(吊打万元！bushi&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;总的来说音质在百元价位还是可以打一打的，如果你平时用的都是万元耳机，你不信，买来一个原道听听，你会感觉音质真垃圾，但你平常用的就是百元价位的耳机…&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;你会觉得，我趣！音质真他妈好！&lt;/p&gt;

&lt;p&gt;反正就是用10元地摊货的心态去买一个你就会得到大大的惊喜，要啥自行车嘛&lt;img src=&quot;/exp/pp-8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;早知道，还是原道  p&lt;img src=&quot;/exp/cry.gif&quot; alt=&quot;&quot; /&gt;q&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2023-3-28-yuandao-8.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</description>
               <pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2023/03/28/yuandao.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2023/03/28/yuandao.html</guid>
               </item>
        
            <item>
               <title>byd疫情啥时候结束啊！</title>
               <description>&lt;p&gt;前两个月海南疫情就算了，还好在家延迟开学，后来海南控制住就过来开学了，尼玛来学校后又有疫情是什么鬼啊！我受不鸟啦！！&lt;/p&gt;

&lt;p&gt;国庆那会还高高兴兴出去吃烧烤，回来过两天就封校了，刚开始还好，后来静默管理之后外卖也不能送了，我真是从来没见过食堂会有如此庞大的场面，里里外外排了好几圈…&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-10-22-sad-1.png&quot; alt=&quot;这么能排？&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/exp/sweat.gif&quot; alt=&quot;&quot; /&gt;无奈想去买泡面，然后看到超市门口:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-10-22-sad-2.png&quot; alt=&quot;还要排队进超市？&quot; /&gt;&lt;/p&gt;

&lt;p&gt;妈的！不吃了！&lt;img src=&quot;/exp/neutral.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;还好前几天去超市买了点饼干，回去凑合吃吧(据知情人士得知超市里只剩即食汉堡了 &lt;del&gt;(俩面包夹一块速食肉饼那种)&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;完了桶装水的商家也送不进学校来，好在刚封校那几天和舍友一起买了瓶装的农夫山泉备着，一整箱24瓶，结账的时候学校超市卖了我48块，好啊你是一分钱没少啊，学校超市纯纯的发难财&lt;img src=&quot;/exp/despise.gif&quot; alt=&quot;&quot; /&gt;搁球场旁边卖水的阿姨都收不到我40块钱吧&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-10-22-sad-3.png&quot; alt=&quot;傻逼商家&quot; /&gt;&lt;/p&gt;

&lt;p&gt;坐地起价吃相着实有点难看&lt;/p&gt;

&lt;p&gt;忽然想起小时候看了好多遍的乌龙院，有一节是画的非典疫情，虽然非典时期我还很小，而且当时海南据说也没有非典病例，根本就没印象，对非典的印象还停留在乌龙院中画的:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-10-22-sad-4.png&quot; alt=&quot;乌龙院&quot; /&gt;&lt;/p&gt;

&lt;p&gt;没想到多年以前的那一幕竟然会和今天如此相似，不过是新冠&lt;img src=&quot;/exp/emm.gif&quot; alt=&quot;&quot; /&gt;希望不久新冠能和非典一样悄悄消失永远不再出现吧&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-10-22-sad-5.png&quot; alt=&quot;乌龙院&quot; /&gt;&lt;/p&gt;
</description>
               <pubDate>Sat, 22 Oct 2022 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2022/10/22/sad.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2022/10/22/sad.html</guid>
               </item>
        
            <item>
               <title>关于Valine无法读取Leancloud评论数据的解决方案</title>
               <description>&lt;p&gt;前不久Leancloud搞事情，导致好多用Valine评论插件的xdm都无法读取评论列表了，都出现了&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Code:-1&lt;/code&gt;，想&lt;del&gt;(鸽)&lt;/del&gt;了好久终于找到了解决方法…&lt;/p&gt;

&lt;p&gt;前几周一直被这个评论问题困扰了好久，因为近期我都没动过博客源码，而问题突然出现肯定是Leancloud出了问题，我以为是某个节点无法访问了，想必Leancloud过几天应该会自行恢复吧，然后……就&lt;del&gt;咕咕咕&lt;/del&gt;&lt;/p&gt;

&lt;p&gt;然鹅到了今天，评论还是没有恢复，仍然报错&lt;img src=&quot;/exp/neutral.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Code -1: Request has been terminated
Possible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;好吧，该排查一下是哪里的问题了&lt;img src=&quot;/exp/razz.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;按照国际惯例，我们摁一下F12&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-4-9-lcloud2.png&quot; alt=&quot;F12&quot; /&gt;&lt;/p&gt;

&lt;p&gt;果然看到个报错是&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;api.lncld.net&lt;/code&gt;链接被拒绝了，难道这个接口行不通了？&lt;/p&gt;

&lt;p&gt;去官网看看文档，果然在新闻页看到了一则关于接口更新的通知&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://forum.leancloud.cn/t/us-api-leancloud-cn-sdk/24951&quot;&gt;国际版域名 us-api.leancloud.cn 已下线，使用旧版 SDK 需进行版本升级&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;但文中只写到了国际域名的更新，而我一直用的国内版本，往下翻也没看到国内版的更新通告，有没有可能国内版也更新了呢？&lt;/p&gt;

&lt;p&gt;于是我决定去瞄一眼&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-4-9-lcloud3.png&quot; alt=&quot;国内域名&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/exp/surprised.gif&quot; alt=&quot;&quot; /&gt;果然给我换了…&lt;/p&gt;

&lt;p&gt;而那个旧接口&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;api.lncld.net&lt;/code&gt;，我记得在我安装插件的时候没有写过这个地址，所以推测应该在av-min.js里写死了，打开av-min.js搜索一下这个地址&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2022-4-9-lcloud1.png&quot; alt=&quot;旧接口&quot; /&gt;&lt;/p&gt;

&lt;p&gt;搜到了，旁边还有国际接口的地址，把它替换成新的试试，马上就能正常读取了。&lt;/p&gt;

&lt;p&gt;所以解决方案就出来了:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ol&gt;
    &lt;li&gt;
      &lt;p&gt;前往Leancloud后台，在&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;设置&lt;/code&gt;&amp;gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;应用凭证&lt;/code&gt;里找到&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;服务器地址
(REST API 服务器地址)&lt;/code&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;F12看被阻止的旧api地址&lt;/p&gt;
    &lt;/li&gt;
    &lt;li&gt;
      &lt;p&gt;在av-min.js里将其替换&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;大功告成&lt;img src=&quot;/exp/yeah.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;另外在github里我看到了开发人员也注意到了这个问题，所以他们更新了&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;av-min.js&lt;/code&gt;文件，这样一来用新版Valine的hxd应该不会出现这个问题，用老款的hxd可以用这个方案解决。&lt;/p&gt;
</description>
               <pubDate>Sat, 09 Apr 2022 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2022/04/09/lclound.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2022/04/09/lclound.html</guid>
               </item>
        
            <item>
               <title>2021年度总结</title>
               <description>&lt;p&gt;时间过得好快，恍然记起，最开始发现疫情已经是两年前的事情了…而又是因为疫情让大家觉得这两年好像又什么都没干…&lt;/p&gt;

&lt;p&gt;不过老传统还得保持，那就是每年都有的年终总结，总结我这年&lt;del&gt;摸了多少鱼&lt;/del&gt;都干了些啥&lt;/p&gt;

&lt;h2 id=&quot;小站&quot;&gt;#小站&lt;/h2&gt;

&lt;p&gt;先从博客开始说，这一年我就一直在摸233，没发多少文章，小站人气急剧下跌(呜呜呜)，要说这年做了啥大的，那就是把Hydrogen主题移植到了typecho上，虽说炒冷饭，但是通过这个我也是学了不少typecho主题建设的基础，也算是完成了以前的小小心愿&lt;/p&gt;

&lt;h2 id=&quot;学习&quot;&gt;#学习&lt;/h2&gt;

&lt;p&gt;然后是学习，这学年升级到了二道杠 嘿嘿&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021year-3.png&quot; alt=&quot;二道杠&quot; /&gt;&lt;/p&gt;

&lt;p&gt;飞行员的四道杠分别代表: 专业、知识、技术、责任
机长是四道杠，副驾是三道杠。
也是一个成长的过程，上大学以来学习成绩和态度我觉得还行吧，没有挂科，每一门考试我也会去认真复习，成绩不能说太好，只能说过得去，对得起我自己&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-4.png&quot; alt=&quot;嗯！&quot; /&gt;&lt;/p&gt;

&lt;p&gt;四级在今年6月份也考过了，接下来把理论都好好复习一遍，把期末考好，下学期就轻松多了 嘿嘿
下学期考完就准备复习考执照了，考完执照就等下分院，听学长说分院食堂巨好吃，难怪老师说大家下分院了都多多少少胖了点233&lt;/p&gt;

&lt;h2 id=&quot;摄影&quot;&gt;#摄影&lt;/h2&gt;

&lt;p&gt;说说爱好吧，今年年初的时候，突然喜欢上了拍照，然后拍了一会觉得手机的焦段远远不能满足我，然后入坑摄影，在4月24日买了自己的第一台相机，开始激情的拍摄！同时也把我的好基友&lt;a href=&quot;http://bykickyyy.xyz/&quot;&gt;@酚酞小韬韬&lt;/a&gt;拉进坑了，一起激情的拍摄咔咔咔咔咔&lt;/p&gt;

&lt;p&gt;感觉摄影确实很有趣，在你上大学的时候，会有比高中多很多的空闲时间，你可以用摄影来消磨时间，一个人扛起相机出去扫街就是半天，也可以叫上同学出去一起扫，还可以叫上好朋友一起约拍糖水片，当入坑了以后，觉得自己没那么浮躁了，时常走在街上或者郊外会看到一些很美的光影和构图或者人文，感觉自己审美提高了不少
还有就是因为有照片记录所以感觉今年回忆清晰不少，因为都被记录下来了，偶尔翻翻相册就会看到当天的图片和想起当天的具体事情，感觉蛮好&lt;/p&gt;

&lt;p&gt;下面就是我挑的一些2021年拍的照片做的相册:
&lt;img src=&quot;/usrimg/2021year.png&quot; alt=&quot;&quot; /&gt;
&lt;img src=&quot;/usrimg/2021year-2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;光影仅在一瞬，影像即是永恒。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;下面是用过的镜头:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Canon 38-76mm F3.5-4.5 50mm F1.8&lt;/p&gt;

  &lt;p&gt;Sigma 50mm F1.4ART 85mm&lt;/p&gt;

  &lt;p&gt;Sigma APO 70-300mm F4 DG&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;说说future&quot;&gt;#说说Future&lt;/h2&gt;
&lt;blockquote&gt;
  &lt;p&gt;继续学英语，把雅思5.5过了&lt;del&gt;咱再摆烂&lt;/del&gt;(233)&lt;/p&gt;

  &lt;p&gt;好好学习，把理论课考好，然后私商仪考试争取一次过&lt;/p&gt;

  &lt;p&gt;这个寒假把驾照考完&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;还是希望能够早日战胜疫情，恢复以前的生活。然后新的一年以及未来我和我的家人都健健康康，万事顺意…&lt;/p&gt;

&lt;p&gt;也希望大家能在新的一年有所成就&lt;/p&gt;

&lt;p&gt;2021接近尾声，2022万事如意开开心心&lt;/p&gt;
</description>
               <pubDate>Mon, 27 Dec 2021 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2021/12/27/2021year.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2021/12/27/2021year.html</guid>
               </item>
        
            <item>
               <title>浅谈CSS中元素如何优雅地"消失"</title>
               <description>&lt;p&gt;前几天重写导航栏菜单的时候，想给菜单加个动画，因为之前用的是&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display&lt;/code&gt;属性来控制隐藏和显示，但是这属性不支持CSS动画，要想支持css动画得用&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;opacity&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visibility&lt;/code&gt;这俩了，可是用了这俩后发现有点小问题…&lt;img src=&quot;/exp/sweat.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;出大问题&quot;&gt;#出大问题&lt;/h2&gt;

&lt;p&gt;用了&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;opacity&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visibility&lt;/code&gt;发现可以完美显示动画了，可是发现在手机上有部分区域无法点击了，起初我还以为手机屏幕出问题了，结果换了个手机那块区域还是无法点击，起初没注意到是菜单栏的问题，结果拿出电脑F12，发现内鬼竟然真的是菜单栏&lt;img src=&quot;/exp/neutral.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;后来才晓得，&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display&lt;/code&gt;属性会把元素直接移除，而&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;opacity&lt;/code&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;visibility&lt;/code&gt;只是把元素变透明了，而实际占用的面积还在，并且该元素下方的区域也无法点击(相当于遮罩)&lt;/p&gt;

&lt;p&gt;那让元素有动画的同时优雅地”消失”，只能和JS一起配套食用咯，在CSS动画结束后把元素设置为&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;display:none&lt;/code&gt;或者把元素的长宽设置为0&lt;/p&gt;

&lt;p&gt;下面就是菜单栏的实例(菜单栏使用复选框实现):&lt;/p&gt;
&lt;div class=&quot;language-javascript highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;onload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(){&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getElementById&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;fold&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//在打开页面时就把高度设置为0&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;clean&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(){&lt;/span&gt;  &lt;span class=&quot;nb&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getElementById&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;fold&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;0px&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//将高度设置为0的函数&lt;/span&gt;

&lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;checkit&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;isChecked&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;){&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;isChecked&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;document&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;getElementById&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;fold&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;).&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;style&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;height&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;auto&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//如果复选框勾选了就恢复高度&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;window&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;setTimeout&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;clean&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;500&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//否则在0.5秒的动画结束后执行clean函数将高度设为0&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;这样就能在拥有css动画的同时优雅的让元素从屏幕上滚开了&lt;img src=&quot;/exp/redface.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
</description>
               <pubDate>Sat, 25 Sep 2021 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2021/09/25/cssdisplay.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2021/09/25/cssdisplay.html</guid>
               </item>
        
    </channel>
</rss>
