<?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;因为苹果官方给的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>
        
            <item>
               <title>Protium For Typecho发布！</title>
               <description>&lt;p&gt;距离上次发布Hydrogen主题已经有两年半了，因为当时用的是Jekyll建的博客，所以出的是Jekyll版的，当时忘了跟谁说要出Typecho版的来着，因为当时觉得工作量有点大，所以咕掉了…&lt;/p&gt;

&lt;p&gt;但是现在，她终于来了！&lt;/p&gt;

&lt;p&gt;她的名字叫:&lt;/p&gt;

&lt;h1 id=&quot;protium&quot;&gt;#Protium&lt;/h1&gt;

&lt;blockquote&gt;
  &lt;p&gt;n. 氕 [piē]&lt;/p&gt;

  &lt;p&gt;氢的同位素之一&lt;/p&gt;

  &lt;p&gt;:point_right:&lt;a href=&quot;http://demo.atlinker.cn&quot;&gt;演示站点&lt;/a&gt;:point_right:&lt;a href=&quot;https://github.com/link9596/protium&quot;&gt;项目地址&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-9-17-protium-preview.png&quot; alt=&quot;预览&quot; /&gt;&lt;/p&gt;

&lt;p&gt;作为一款日记向的主题，她还是一如既往地简洁，突出写作主题，让阅读成为一种享受&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-9-17-protium-file.png&quot; alt=&quot;文件&quot; /&gt;&lt;/p&gt;

&lt;p&gt;不依赖加载拖泥带水的冗余框架文件，首页加载的样式表仅31.75kb，极速响应。每个页面都不会有频繁的网络请求，保证网页迅速通过渲染，不会堵塞&lt;/p&gt;

&lt;h2 id=&quot;简洁而不简陋&quot;&gt;#简洁而不简陋&lt;/h2&gt;
&lt;p&gt;排版和设计经过精心裁剪，借鉴了Material Design，干净的界面也能营造美感，追求简明的同时，Protium加入了过渡动效，让页面不再那样僵硬，变得妙趣横生。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-9-17-protium-md.png&quot; alt=&quot;MD&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;为了保证浏览器主线程的通畅，和保证浏览器的性能和动效的流畅性，所有动画均为css动画，避免使用JS绘制元素造成掉帧情况&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;精心打磨&quot;&gt;#精心打磨&lt;/h2&gt;

&lt;p&gt;每一个像素都经过精心裁剪，通过测试，在极大多数环境下，网页样式都不会发生意外的位移、溢出、甚至错位，无论在各种屏幕大小的客户端上，Protium都能胜任。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-9-17-protium-auto.png&quot; alt=&quot;自适应&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;typecho&quot;&gt;#Typecho&lt;/h2&gt;

&lt;p&gt;Protium是基于Hydrogen For Jekyll的移植版，现已全面支持Typecho。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-9-17-protium-tyje.png&quot; alt=&quot;Jekyll&amp;amp;Typeccho&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;主题文档&quot;&gt;#主题文档&lt;/h2&gt;

&lt;p&gt;没啥文档，下载下来直接套进去用就行了&lt;del&gt;233&lt;/del&gt;&lt;/p&gt;

&lt;h2 id=&quot;俺想说滴&quot;&gt;#俺想说滴&lt;/h2&gt;

&lt;p&gt;主题制作不易，花了挺多心思，如果喜欢可以点一下star🦆 :+1:点star的都是靓仔靓妹！&lt;/p&gt;

&lt;iframe src=&quot;https://ghbtns.com/github-btn.html?user=link9596&amp;amp;repo=Protium&amp;amp;type=star&amp;amp;count=true&amp;amp;size=large&quot; frameborder=&quot;0&quot; scrolling=&quot;0&quot; width=&quot;160px&quot; height=&quot;30px&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;主题完全免费，如果有💰的老板想赞赏小弟，那小弟就在这里祝各位老板身体健康，心想事成！&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;赞赏的大佬会出现在&lt;a href=&quot;http://atlinker.cn/2019/02/20/Hydrogen-theme.html&quot;&gt;赞赏列表&lt;/a&gt;里喔&lt;/p&gt;

  &lt;p&gt;非常感谢对主题和我的支持！！&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;/usrimg/2021-9-17-protium-smile.jpg&quot; alt=&quot;嘻嘻&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img style=&quot;max-height: 400px&quot; src=&quot;https://atlinker.cn/pay/donateWX.png&quot; alt=&quot;donate&quot; /&gt;&lt;/p&gt;

</description>
               <pubDate>Fri, 17 Sep 2021 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2021/09/17/Protium.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2021/09/17/Protium.html</guid>
               </item>
        
            <item>
               <title>谈谈假性亲密</title>
               <description>&lt;p&gt;在一起了，但没完全在一起。&lt;/p&gt;

&lt;p&gt;前几天在B站上刷到个视频，说的就是假性亲密
具体说的如下：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;和伴侣同床异梦?
彼此互相没有分享欲?
两个人一起约会像例行公事?
双方心照不宣，从不在朋友圈公开彼此?
和老公没有共同语言，像最熟悉的陌生人?
如果你遇到了上面的情境，那么你和他/她的关系可能是-种假性亲密关系。假性亲密关系不仅指恋爱关系，还可发生在家人、朋友、闺蜜之间。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;看完这个视频觉得，和我以前那个前任真的太符合这种关系了，两人在一起约会像是在例行公事，没有过多的感情交流，再多的约会也没有感情进展，偶尔双方都很冷漠，没有共同语言像最熟悉的陌生人，我和她像是有一层隔阂，可能是经常因为观念不同吵架的原因，在一起三年了在我看来感情没有一点进展。有一说一，这样的关系真的非常非常累，这也是为什么我去年分手后没有感觉很伤心，而是感觉很&lt;del&gt;轻松了&lt;/del&gt;，像放下了很重的担子。&lt;/p&gt;

&lt;blockquote&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;我选择了放过自己&lt;/p&gt;

&lt;p&gt;真累，去维持一段感情，本来上学期刚开学各种事情就已经很累了，还要因为这个觉得心累，真是精神肉体双重折磨，人都是饭饱思淫欲，我感觉我还是自己好好学习搞钱去吧，谈恋爱真的太累了，适合闲杂人等，我不闲，至少我不闲得慌&lt;/p&gt;

&lt;p&gt;后来觉得谈恋爱暧昧期过了也就那么回事，约会还不如和好朋友出去玩舒服，无拘无束&lt;/p&gt;

&lt;p&gt;感谢你看到了这里，那就来个预告吧！&lt;/p&gt;

&lt;p&gt;不出意外&lt;del&gt;(咕)&lt;/del&gt;的话，这个周末有Hydrogen的新版本和兄弟版本(暂时保密) :p&lt;/p&gt;

&lt;p&gt;细心的童孩应该已经从某个账号看出来新主题的名字了&lt;/p&gt;
</description>
               <pubDate>Mon, 13 Sep 2021 00:00:00 +0000</pubDate>
               <link>https://atlinker.cn/2021/09/13/fakeclose.html</link>
               <guid isPermaLink="true">https://atlinker.cn/2021/09/13/fakeclose.html</guid>
               </item>
        
    </channel>
</rss>
