<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HTML on 阿珏酱のBlog</title>
    <link>https://zh.moejue.cn/tags/html/</link>
    <description>Recent content from 阿珏酱のBlog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    
    <managingEditor>xxx@example.com (MoeJue)</managingEditor>
    <webMaster>xxx@example.com (MoeJue)</webMaster>
    
    <copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright>
    
    <lastBuildDate>Sat, 13 Jun 2026 11:38:47 +0000</lastBuildDate>
    
    
    <atom:link href="https://zh.moejue.cn/tags/html/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
    

    <item>
      <title>我用WebGL做18&#43;游戏，输了“掉装备”🔞</title>
      <link>https://zh.moejue.cn/posts/332/</link>
      <pubDate>Sat, 13 Jun 2026 11:38:47 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/332/</guid>
      <description>
        <![CDATA[<h1>我用WebGL做18+游戏，输了“掉装备”🔞</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>紧接上文：<a href="https://moejue.cn/archives/328">《同一个动画，我用三种技术栈实现的区别?》</a></p>
<h4 id="webgl-二次元石头剪刀布小游戏">
<a class="header-anchor" href="#webgl-%e4%ba%8c%e6%ac%a1%e5%85%83%e7%9f%b3%e5%a4%b4%e5%89%aa%e5%88%80%e5%b8%83%e5%b0%8f%e6%b8%b8%e6%88%8f"></a>
WebGL 二次元石头剪刀布小游戏。
</h4><p>规则很普通：</p>
<ul>
<li>石头 &gt; 剪刀</li>
<li>剪刀 &gt; 布</li>
<li>布 &gt; 石头</li>
</ul>
<p>但有趣的是在于：</p>
<h4 id="输了会脱衣服">
<a class="header-anchor" href="#%e8%be%93%e4%ba%86%e4%bc%9a%e8%84%b1%e8%a1%a3%e6%9c%8d"></a>
输了会脱衣服。
</h4><p>对,就是这么简单粗暴。</p>
<hr>
<h2 id="起因其实是我想研究精灵图">
<a class="header-anchor" href="#%e8%b5%b7%e5%9b%a0%e5%85%b6%e5%ae%9e%e6%98%af%e6%88%91%e6%83%b3%e7%a0%94%e7%a9%b6%e7%b2%be%e7%81%b5%e5%9b%be"></a>
起因其实是“我想研究精灵图”
</h2><p>一开始我根本没想做游戏。<br>
我只是想研究：</p>
<ul>
<li>atlas</li>
<li>sprite</li>
<li>图层叠加</li>
<li>动画裁剪</li>
</ul>
<p>这些东西。<br>
然后想着：“总得有个实际应用场景吧？”</p>
<p>于是脑子一抽：</p>
<h4 id="那干脆做个二次元脱衣猜拳">
<a class="header-anchor" href="#%e9%82%a3%e5%b9%b2%e8%84%86%e5%81%9a%e4%b8%aa%e4%ba%8c%e6%ac%a1%e5%85%83%e8%84%b1%e8%a1%a3%e7%8c%9c%e6%8b%b3"></a>
那干脆做个二次元脱衣猜拳。
</h4><p>然后项目开始朝奇怪方向狂奔。</p>
<hr>
<h2 id="这个项目最麻烦的其实不是游戏逻辑">
<a class="header-anchor" href="#%e8%bf%99%e4%b8%aa%e9%a1%b9%e7%9b%ae%e6%9c%80%e9%ba%bb%e7%83%a6%e7%9a%84%e5%85%b6%e5%ae%9e%e4%b8%8d%e6%98%af%e6%b8%b8%e6%88%8f%e9%80%bb%e8%be%91"></a>
这个项目最麻烦的其实不是游戏逻辑
</h2><p>石头剪刀布规则简单得离谱。<br>
真正麻烦的是：<strong>衣服层级</strong><br>
因为角色不是：<strong>“一张完整图片”</strong></p>
<p>而是：</p>
<ul>
<li>底图 (防粿体被抓包,特意加密了)</li>
<li>衣服 A</li>
<li>衣服 B</li>
<li>衣服 C</li>
<li>配饰</li>
<li>遮挡层</li>
</ul>
<p>不停叠。</p>
<hr>
<h2 id="脱衣其实是图层管理">
<a class="header-anchor" href="#%e8%84%b1%e8%a1%a3%e5%85%b6%e5%ae%9e%e6%98%af%e5%9b%be%e5%b1%82%e7%ae%a1%e7%90%86"></a>
“脱衣”其实是图层管理
</h2><p>玩家赢了：</p>
<ul>
<li>按设定好的顺序移除一件衣服</li>
</ul>
<p>电脑赢了：</p>
<ul>
<li>再按逆序穿回来</li>
</ul>
<p>听起来简单。<br>
实际上会遇到一堆问题：</p>
<hr>
<h3 id="比如不能瞬间露底图">
<a class="header-anchor" href="#%e6%af%94%e5%a6%82%e4%b8%8d%e8%83%bd%e7%9e%ac%e9%97%b4%e9%9c%b2%e5%ba%95%e5%9b%be"></a>
比如“不能瞬间露底图”
</h3><p>这个特别关键。<br>
如果你：</p>
<pre><code>先删旧衣服
再加新衣服
</code></pre>
<p>中间可能会闪出底图。<br>
于是视觉效果会特别怪。<br>
所以我后来用了：<strong>reveal 覆盖逻辑</strong></p>
<p>新的层会立刻顶上。<br>
尽量避免：</p>
        
        <hr><p>本文2026-06-13首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-06-13</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>同一个动画，我用三种技术栈实现的区别?</title>
      <link>https://zh.moejue.cn/posts/328/</link>
      <pubDate>Fri, 29 May 2026 20:54:39 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/328/</guid>
      <description>
        <![CDATA[<h1>同一个动画，我用三种技术栈实现的区别?</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>最近我做了个挺有意思的小实验。<br>
我把一个二次元角色的小动画效果，分别用：</p>
<ul>
<li>WebGL</li>
<li>Canvas 2D</li>
<li>纯 DOM + CSS</li>
</ul>
<p>实现了三遍。<br>
效果本身不复杂：</p>
<ul>
<li>眨眼</li>
<li>眉毛/下眼皮联动</li>
<li>流汗轻微飘动</li>
<li>呆毛甩动</li>
</ul>
<p>但真正有意思的，其实不是“做出来”。<br>
而是：</p>
<blockquote>
<p>同一个东西，用三种技术栈实现时，到底会差多少？</p>
</blockquote>
<p>本质上就是一次“前端图形学味很浓”的复刻实验。</p>
<hr>
<h3 id="一开始只是想复刻一个呆毛动画">
<a class="header-anchor" href="#%e4%b8%80%e5%bc%80%e5%a7%8b%e5%8f%aa%e6%98%af%e6%83%b3%e5%a4%8d%e5%88%bb%e4%b8%80%e4%b8%aa%e5%91%86%e6%af%9b%e5%8a%a8%e7%94%bb"></a>
一开始只是想复刻一个呆毛动画
</h3><p>灵感来源：<a href="https://tamanidamani.itch.io/nijikas-ahoge">https://tamanidamani.itch.io/nijikas-ahoge</a><br>
我当时想法特别简单：“如果是我,要怎么实现？”<br>
然后越做越上头。最后直接演变成：</p>
<blockquote>
<p>那我干脆把 WebGL、Canvas2D、DOM 三种方案都做一遍算了。</p>
</blockquote>
<p>于是仓库就变成了现在这样：</p>
<ul>
<li><a href="https://iajue.github.io/CanvasGame/canvas/index.html">canvas/</a></li>
<li><a href="https://iajue.github.io/CanvasGame/canvas2D/index.html">canvas2D/</a></li>
<li><a href="https://iajue.github.io/CanvasGame/dom/index.html">dom/</a></li>
</ul>
<p>三个版本同效果实现。</p>
<hr>
<h2 id="先说结论">
<a class="header-anchor" href="#%e5%85%88%e8%af%b4%e7%bb%93%e8%ae%ba"></a>
先说结论
</h2><p>如果只让我说一句话：</p>
<h4 id="webgl-最强但-canvas2d-最舒服dom-最适合业务">
<a class="header-anchor" href="#webgl-%e6%9c%80%e5%bc%ba%e4%bd%86-canvas2d-%e6%9c%80%e8%88%92%e6%9c%8ddom-%e6%9c%80%e9%80%82%e5%90%88%e4%b8%9a%e5%8a%a1"></a>
WebGL 最强，但 Canvas2D 最舒服，DOM 最适合业务
</h4><hr>
<h2 id="1-webgl-版本最像真正游戏开发">
<a class="header-anchor" href="#1-webgl-%e7%89%88%e6%9c%ac%e6%9c%80%e5%83%8f%e7%9c%9f%e6%ad%a3%e6%b8%b8%e6%88%8f%e5%bc%80%e5%8f%91"></a>
1. WebGL 版本：最像“真正游戏开发”
</h2><p>这个版本是最折腾的。<br>
因为它本质上已经不是“前端动画”了, 而是：<strong>GPU 图形编程</strong></p>
<hr>
<h3 id="它到底怎么实现的">
<a class="header-anchor" href="#%e5%ae%83%e5%88%b0%e5%ba%95%e6%80%8e%e4%b9%88%e5%ae%9e%e7%8e%b0%e7%9a%84"></a>
它到底怎么实现的？
</h3><p>核心思路其实就是：</p>
<ul>
<li>底图一层</li>
<li>精灵图一层层贴</li>
<li>shader 控制绘制</li>
<li>JS 驱动动画参数</li>
</ul>
<p>比如：</p>
<ul>
<li>呆毛旋转</li>
<li>眨眼裁剪</li>
<li>alpha 混合</li>
</ul>
<p>这些其实都在 GPU 那边做。<br>
你会开始接触：</p>
<ul>
<li>uniform</li>
<li>texture</li>
<li>shader</li>
<li>UV</li>
<li>顶点坐标</li>
<li>纹理坐标</li>
</ul>
<p>然后人会逐渐失去笑容。</p>
        
        <hr><p>本文2026-05-29首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-05-29</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>论网速快慢的区别</title>
      <link>https://zh.moejue.cn/posts/119/</link>
      <pubDate>Sat, 07 Nov 2020 14:09:07 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/119/</guid>
      <description>
        <![CDATA[<h1>论网速快慢的区别</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>论网速快慢的区别</p>
<p>随着网络的普及，用户对响应速度快慢越来越重视了，网站越快，用户的黏性和转化率也会越高。<br>
简单来说，就是要提高速度！影响网站速度的因素有很多，比如&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;&hellip;.</p>
<p>一本正经可不是我的风格，下面请看我的表演<br>
<strong>想法起源</strong>：<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/11/07/0072Vf1ply1gkgf5kosbfj30bl0l4mzm.jpg" alt=""><br>
一开始的想法是使用纯css进行实现，把底图base64编码后直接放在background-image上，就可以达到背景图片于网页一同加载出来的效果</p>
<p>第一步：<br>
首先将提前准备好的素材图片进行处理，拔下泳衣和泳裙 <img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/11/07/0072Vf1ply1gkgfdqj354j302s033dfn.jpg" alt=""><br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/11/07/0072Vf1ply1gkgf79od99j31fv0m47wh.jpg" alt=""><br>
第二步：<br>
新建个HTML文件<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2020/11/07/0072Vf1ply1gkgf9om2ylj30b306q3zf.jpg" alt=""><br>
第三步：</p>
<div class="裸体">
        <div class="泳衣" id="泳衣"></div>
        <div class="泳裙" id="泳裙"></div>
</div>
<p>完成。。<br>
然后就发现个问题，由于我的底图文件大小达到了12兆，编码后的字符串过大，导致网页加载又卡又慢，实在无用户体验<br>
而且这种方式加载的底图会突然的显示出来，过于唐突，效果不好</p>
<p>后改用：<br>
css+JavaScript进行实现，由background-image直接加载背景图片，能达到逐渐显示的效果，待底图加载完毕后再由js动态插入配图</p>
<p>window.onload = function(){
var img=new Image();
img.src=&lsquo;裸体.jpg&rsquo;;
if(img.width==0){
alert(&lsquo;图片加载失败&rsquo;)
}else{
document.getElementById(&ldquo;泳衣&rdquo;).style.backgroundImage=&ldquo;url(泳衣.png)&rdquo;;
document.getElementById(&ldquo;泳裙&rdquo;).style.backgroundImage=&ldquo;url(泳裙.png)&rdquo;;
}
}</p>
<p>不禁感慨一句，什么破网络，慢的连人物图片的衣服都加载不出来</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/dynKiyrFtak?si=6UFLhBK7VMgbLWPE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen=""></iframe>
        
        <hr><p>本文2020-11-07首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-08-15</p>]]>
      </description>
      
        <category>HTML</category>
      
    </item>
    
    

    <item>
      <title>打造 macOS 风格的 Web 应用</title>
      <link>https://zh.moejue.cn/posts/260/</link>
      <pubDate>Sun, 11 May 2025 11:46:03 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/260/</guid>
      <description>
        <![CDATA[<h1>打造 macOS 风格的 Web 应用</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <h3 id="项目概述">
<a class="header-anchor" href="#%e9%a1%b9%e7%9b%ae%e6%a6%82%e8%bf%b0"></a>
项目概述
</h3><p>在当今的 Web 开发领域，用户体验和界面设计变得越来越重要。</p>
<p>Mac Web Vue Template 这是一个受 macOS 设计启发的现代优雅的 Vue.js Web 模板, 是一个基于 Vue.js 的现代化 Web 应用模板，它的设计灵感来源于 macOS 的优雅界面。这个项目不仅提供了美观的 UI 设计，还包含了完整的项目结构和最佳实践。</p>
<h4 id="在线演示">
<a class="header-anchor" href="#%e5%9c%a8%e7%ba%bf%e6%bc%94%e7%a4%ba"></a>
在线演示
</h4><p>你可以通过访问 <a href="https://mac.moejue.cn/">WebAi</a> 来体验这个模板的实际效果。邀请码(MoeJue)</p>
<h3 id="核心特性">
<a class="header-anchor" href="#%e6%a0%b8%e5%bf%83%e7%89%b9%e6%80%a7"></a>
核心特性
</h3><ol>
<li>
<p><strong>macOS 风格的 UI 设计</strong></p>
<ul>
<li>采用 macOS 的设计语言</li>
<li>精致的毛玻璃效果</li>
<li>优雅的动画过渡</li>
</ul>
</li>
<li>
<p><strong>现代化的技术栈</strong></p>
<ul>
<li>Vue.js 作为核心框架</li>
<li>Vite 作为构建工具</li>
<li>Pinia 进行状态管理</li>
<li>Vue Router 处理路由</li>
<li>SCSS 预处理器</li>
<li>ES6+ 现代特性</li>
</ul>
</li>
<li>
<p><strong>响应式设计</strong></p>
<ul>
<li>完美适配各种屏幕尺寸</li>
<li>流畅的移动端体验</li>
</ul>
</li>
</ol>
<h3 id="项目结构解析">
<a class="header-anchor" href="#%e9%a1%b9%e7%9b%ae%e7%bb%93%e6%9e%84%e8%a7%a3%e6%9e%90"></a>
项目结构解析
</h3><p>项目采用了清晰且模块化的目录结构：</p>
<pre tabindex="0"><code>src/
├── assets/          # 静态资源
├── components/      # Vue 组件
│   ├── common/     # 通用组件
│   ├── system/     # 系统组件
│   └── apps/       # 应用组件
├── views/          # 页面视图
├── router/         # 路由配置
├── stores/         # 状态管理
└── utils/          # 工具函数
</code></pre><p>这种结构设计使得项目具有良好的可维护性和可扩展性。</p>
        
        <hr><p>本文2025-05-11首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-05-11</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>我的二次元相册又回来了</title>
      <link>https://zh.moejue.cn/posts/227/</link>
      <pubDate>Fri, 08 Nov 2024 09:52:39 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/227/</guid>
      <description>
        <![CDATA[<h1>我的二次元相册又回来了</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>从最早的<a href="https://moejue.cn/archives/10">图库</a>,到<a href="https://moejue.cn/archives/61">图床</a>,在到现在的相册.我对图片的执着已经可以说是跨越了好几个世纪了. 图库的图片是存在七牛云的,后来流量被刷就关闭了. 图床,现在转为为博客提供图片上传服务了. 相册,就是手机中相册的概念,它既可以存图片也可以放视频. 逐渐是越来越完善了</p>
<p>这两天就把平常保存的视频图片什么的上传到了服务器,写了个界面和接口,顺带开源出来.(我要做一个坚定的开源爱好者)</p>
<h4 id="我的二次元相册前端界面">
<a class="header-anchor" href="#%e6%88%91%e7%9a%84%e4%ba%8c%e6%ac%a1%e5%85%83%e7%9b%b8%e5%86%8c%e5%89%8d%e7%ab%af%e7%95%8c%e9%9d%a2"></a>
我的二次元相册前端界面
</h4><ol>
<li>这里是阿珏酱的私人相册,保存着阿珏在平常收集的图片,和各大平台中点赞收藏的视频.</li>
<li>包括但不限于B站,YouTube,抖音,X,facebook,pixiv等平台的视频或图片,相关的数据信息版权归原作者所有.</li>
<li>数据将不定期手动更新,如果你想要某些图片或者视频,请直接联系阿珏酱获取.</li>
</ol>
<h3 id="预览">
<a class="header-anchor" href="#%e9%a2%84%e8%a7%88"></a>
预览
</h3><p><a href="https://photo.moejue.cn">https://photo.moejue.cn</a></p>
<p><img src="https://github.com/iAJue/PhotoGallery/raw/main/public/images/1.png" alt="image"> <img src="https://github.com/iAJue/PhotoGallery/raw/main/public/images/2.png" alt="image"> <img src="https://github.com/iAJue/PhotoGallery/raw/main/public/images/3.png" alt="image"></p>
<h3 id="特性">
<a class="header-anchor" href="#%e7%89%b9%e6%80%a7"></a>
特性
</h3><ol>
<li>支持图片和视频的展示</li>
<li>支持相册的展示</li>
<li>支持相册的密码保护</li>
<li>支持18+保护</li>
<li>支持搜索</li>
</ol>
<h3 id="todo">
<a class="header-anchor" href="#todo"></a>
Todo
</h3><ol>
<li>优化特效展示</li>
<li>优化界面流畅度</li>
</ol>
<h3 id="安装说明">
<a class="header-anchor" href="#%e5%ae%89%e8%a3%85%e8%af%b4%e6%98%8e"></a>
安装说明
</h3><ol>
<li>
<p>克隆仓库到本地：</p>
<pre tabindex="0"><code>git clone https://github.com/iAJue/PhotoGallery.git
</code></pre></li>
<li>
<p>进入项目目录：</p>
<pre tabindex="0"><code>cd PhotoGallery
</code></pre></li>
<li>
<p>安装依赖：</p>
<pre tabindex="0"><code>npm install
</code></pre></li>
<li>
<p>打包项目</p>
<pre tabindex="0"><code>npm run build
</code></pre></li>
</ol>
<h3 id="后端接口">
<a class="header-anchor" href="#%e5%90%8e%e7%ab%af%e6%8e%a5%e5%8f%a3"></a>
后端接口
</h3><p>仅供参考 <a href="https://github.com/iAJue/wasteCode/tree/main/photo">https://github.com/iAJue/wasteCode/tree/main/photo</a></p>
<h3 id="返回数据格式">
<a class="header-anchor" href="#%e8%bf%94%e5%9b%9e%e6%95%b0%e6%8d%ae%e6%a0%bc%e5%bc%8f"></a>
返回数据格式
</h3><ol>
<li>
<p>照片接口</p>
<pre tabindex="0"><code>[
{
    &#34;date&#34;: &#34;\u6628\u5929&#34;,
    &#34;items&#34;: [
        {
            &#34;src&#34;: &#34;https:\/\/moejuevideo.pages.dev\/file\/1730957555106_ocgRCdDEA07fAILEKEFOA8ADAyETABBMffIBE6~tplv-dy-aweme-images_q75.webp&#34;,
            &#34;alt&#34;: &#34;ocgRCdDEA07fAILEKEFOA8ADAyETABBMffIBE6~tplv-dy-aweme-images_q75.webp&#34;,
            &#34;isVideo&#34;: false,
            &#34;duration&#34;: null
        }
    ]
}
]
</code></pre></li>
<li>
<p>相册接口</p>
        
        <hr><p>本文2024-11-08首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2024-12-04</p>]]>
      </description>
      
        <category>二次元</category><category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>鸽主带着新版三合一回来了</title>
      <link>https://zh.moejue.cn/posts/15/</link>
      <pubDate>Sun, 04 Aug 2019 01:42:18 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/15/</guid>
      <description>
        <![CDATA[<h1>鸽主带着新版三合一回来了</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>自从5.20表白后，鸽主就一直处于失踪状态&hellip;&hellip;.<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/08/04/0072Vf1pgy1g5nlxy8to3j306o05b75f.jpg" alt=""><br>
时隔不知道多少个月，三合一它竟然又更新了，两个月前在群里立下的flag，今天我把它给圆了，不要问我中间两个月干嘛去了-.-    （忙着参加大型鸽子聚会）</p>
<h2 id="正文">
<a class="header-anchor" href="#%e6%ad%a3%e6%96%87"></a>
正文
</h2><p>由于网络识别经常挂掉，非常不稳定，一直有小伙伴在跟我反馈，所以这次特意更新了本地识别。<br>
推荐1G内存以上的机子安装，推荐配置2核2G，最优配置16核32G [#手动滑稽]</p>
<h4 id="v20">
<a class="header-anchor" href="#v20"></a>
v2.0
</h4><ul>
<li>新增本地二维码识别与生成</li>
<li>移除网络识别接口</li>
<li>修复已知BUG</li>
<li>其它一些细节优化</li>
</ul>
<p>详细说明和安装教程可<a href="https://www.52ecy.cn/post-88.html">点击这里</a>查看上个版本<br>
新版网站均保留了老版本数据，不影响之前用户使用，并且与赞助版数据同步</p>
<h4 id="赞助版">
<a class="header-anchor" href="#%e8%b5%9e%e5%8a%a9%e7%89%88"></a>
赞助版
</h4><p>由于老版本盗版泛滥，新版三合一增设了赞助版。<br>
演示网站：<a href="https://qr.moeins.cn/">https://qr.moeins.cn</a></p>
<p>赞助版主要特色：</p>
<ol>
<li>优化二维码的识别与生成，大大提高识别准确率，更快的识别速度，不占CUP与内存，更稳定</li>
<li>新增21套三合一生成模板，并且可支持无限扩展，添加教程在文末</li>
<li>新增对外的API接口，不在针对该程序使用，任何程序都可调用</li>
</ol>
<p>如何获得：<br>
<a href="https://pay.52ecy.cn/?cid=23">点击这里</a>赞助项目18.88元以上即可获得收款码三合一的赞助专享版，你值得拥有！</p>
<p>关于赞助版的一些小小说明（之前都是没有特意拿出来说明 ）<br>
到目前为止，我所有的赞助版项目均不绑定域名，不曾加密，可自由扩展，支持二开，且赞助金额都偏低，即可获得。所以还请有赞助的小伙伴们不要随意分享赞助得到的源码，这是对作者的尊重也是对自己权益的保障。由于不存在买卖关系，如无重大BUG作者将不定期更新或无限期拖更。如遇小问题，在作者空闲之余愿意指导或帮助修改，但是要新增大功能这种情况下我有权拒绝帮忙或需另外付费。</p>
<h4 id="赞助版模板扩展教程">
<a class="header-anchor" href="#%e8%b5%9e%e5%8a%a9%e7%89%88%e6%a8%a1%e6%9d%bf%e6%89%a9%e5%b1%95%e6%95%99%e7%a8%8b"></a>
赞助版模板扩展教程
</h4><p>模板推荐尺寸为：900*1200</p>
<ol>
<li>
<p>将模板图片放至<code>/public/static/images/template/</code>模板目录，注意请不要使用中文名，且只支持jpg后缀</p>
</li>
<li>
<p>在根目录的<code>config.php</code>中 qr_template 项下配置相关数据，格式如下：</p>
<p>&lsquo;001&rsquo; =&gt; [
&rsquo;name&rsquo; =&gt; &lsquo;默认模板&rsquo;,
&lsquo;data&rsquo; =&gt; [
150,200
],
&rsquo;title&rsquo; =&gt; true,
&lsquo;size&rsquo; =&gt; 20
]</p>
</li>
</ol>
<h4 id="参数说明">
<a class="header-anchor" href="#%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e"></a>
参数说明
</h4><p>名称</p>
<p>变量名</p>
<p>必填</p>
<p>类型</p>
<p>示例值</p>
<p>描述</p>
<p>模板ID</p>
<p>无</p>
<p>是</p>
<p>int</p>
<p>001</p>
<p>模板的文件名，推荐数字,不可重复</p>
<p>别名</p>
<p>name</p>
<p>是</p>
<p>string</p>
<p>默认模板</p>
<p>在前台显示的模板别名</p>
        
        <hr><p>本文2019-08-04首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2019-08-04</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>如何优雅的提交一个表单</title>
      <link>https://zh.moejue.cn/posts/91/</link>
      <pubDate>Mon, 06 May 2019 07:28:33 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/91/</guid>
      <description>
        <![CDATA[<h1>如何优雅的提交一个表单</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>这是一个非常基础的HTML表单提交问题，但却是一个非常实用的技巧<br>
我的业务场景是这样的：<br>
一个可动态创建input的表单，如下图<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1v9kcon30j30l007bdgd.jpg" alt=""><br>
这意味着input的name不能是一个固定的，要不然肯定会被覆盖掉的</p>
<p>第一种，传统的普通的提交方式，给每一个要提交的input一个唯一的name</p>
<form id="form1" action="./index.php" method="get">
    <div class="form-control">
        <input type="text" name="name1" />
        <input type="text" name="num1" />
        <input type="text" name="img1" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="name2" />
        <input type="text" name="num2" />
        <input type="text" name="img2" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="name3" />
        <input type="text" name="num3" />
        <input type="text" name="img3" />
    </div>
    ......
  <input type="submit" value="Submit" />
</form>
<p>浏览器提交抓到的格式是这样子的<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1va4e7vtmj30bx04zdg1.jpg" alt=""><br>
服务器获取打印出来的是这样的，对后端的数据处理就非常不友好</p>
<p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1va3y1ep2j309805i0sk.jpg" alt=""></p>
<p>第二种，数组的方式进行表单提交</p>
<form id="form1" action="./index.php" method="get">
    <div class="form-control">
        <input type="text" name="infos\[1\]\[name\]" />
        <input type="text" name="infos\[1\]\[num\]" />
        <input type="text" name="infos\[1\]\[img\]" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="infos\[2\]\[name\]" />
        <input type="text" name="infos\[2\]\[num\]" />
        <input type="text" name="infos\[2\]\[img\]" />
    </div>
    <br>
    <div class="form-control">
        <input type="text" name="infos\[3\]\[name\]" />
        <input type="text" name="infos\[3\]\[num\]" />
        <input type="text" name="infos\[3\]\[img\]" />
    </div>
    ......
  <input type="submit" value="Submit" />
</form>
<p>浏览器和后端打印的分别为<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1va7ioy7qj30cg0c3q2s.jpg" alt=""><br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1va7js1u3j30bd04v74j.jpg" alt=""></p>
<p>细心观察就回发现，提交的name值发生了变化，变成了一样的 ？数组？<br>
提交到后端就回发现数据比之前整齐多了<br>
但这里要注意的是，提交的数组键中不需要使用引号，要不然引号也会成为键的一部分</p>
<p>当然了，实际中还可能遇到这样的问题，要提交的组数（像上面的1、2、3）是不确定的，可以在前端随意的添加，这个时候怎么去用数组提交这些内容呢？<br>
下面就是我业务中的实际解决方案<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1v9o6jon8j316g0fwwh3.jpg" alt=""><br>
这样的话，二维数组的键则不需要我们自己去维护了，由浏览器帮我们自动生成<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1v9o5uhnuj30a109igli.jpg" alt=""><br>
后端接收到的数据则变成了这样子，变得非常好处理了<br>
<img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/05/06/0072Vf1pgy1g1vaez0ltqj30730bya9y.jpg" alt=""><br>
此方法适用于，要提交一堆不确定个数的一组有关的数据对<br>
完结撒花！~</p>
        
        <hr><p>本文2019-05-06首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2019-05-06</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>一些常见功能的查询sql</title>
      <link>https://zh.moejue.cn/posts/90/</link>
      <pubDate>Wed, 10 Apr 2019 09:33:11 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/90/</guid>
      <description>
        <![CDATA[<h1>一些常见功能的查询sql</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p><img src="https://gh-proxy.com/github.com/iAJue/MoeJueBlogPic/blob/master/Images/2019/04/10/0072Vf1pgy1g1xv7hy779j30d6097glr.jpg" alt=""> <strong>1、场景：查询一个选手的排名及距离上一名差多少票</strong><br>
方法二（去重排序查询比自己少的数量）</p>
<p>$temp = DB::fetch_first(&ldquo;SELECT distinct total+jewel_vote+forge_vote  ,COUNT(*)+1 AS RANK FROM &quot; . DB::table(&lsquo;vote_competition&rsquo;) .&rdquo; WHERE total+jewel_vote+forge_vote&gt;&quot; . $competition[&lsquo;all&rsquo;] . &quot; and aid={$aid} ORDER by forge_vote desc&quot;);
$rank = $temp[&lsquo;RANK&rsquo;];
无法直接查询到上一名选手票数
if ($temp[&rsquo;total+jewel_vote+forge_vote&rsquo;]) {
//这里查询出来的是和第一名选手相差的票数
$up = $temp[&rsquo;total+jewel_vote+forge_vote&rsquo;]-$competition[&lsquo;all&rsquo;];
}</p>
<p>方法一（定义变量累加排序）</p>
<p>$temp = DB::fetch_all(&ldquo;SELECT a.cid,a.total,a.forge_vote,a.jewel_vote,(@rowNum:=@rowNum+1) AS rank FROM pre_vote_competition AS a, (SELECT (@rowNum :=0) ) b WHERE aid={$aid} ORDER BY (a.total+a.forge_vote+a.jewel_vote) DESC &ldquo;);
foreach ($temp as $key =&gt; $value) {
if ($value[&lsquo;cid&rsquo;] == $cid) {
//当前自己的排名
$rank = $value[&lsquo;rank&rsquo;];
if ($up) {
$up = $up - ($value[&rsquo;total&rsquo;] +  $value[&lsquo;forge_vote&rsquo;] + $value[&lsquo;jewel_vote&rsquo;]);
}
break;
}
//和上一名选手相差的票数
$up = $value[&rsquo;total&rsquo;] +  $value[&lsquo;forge_vote&rsquo;] + $value[&lsquo;jewel_vote&rsquo;];
}</p>
        
        <hr><p>本文2019-04-10首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2019-04-10</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>萌音影视 - 在线影视应用</title>
      <link>https://zh.moejue.cn/posts/75/</link>
      <pubDate>Tue, 25 Sep 2018 07:41:02 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/75/</guid>
      <description>
        <![CDATA[<h1>萌音影视 - 在线影视应用</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p><a href="https://www.52ecy.cn/">Blog</a> | <a href="https://www.moeins.cn/">演示站</a> | <a href="http://shang.qq.com/wpa/qunwpa?idkey=618c7f3214a5c5ed06c9343a395371a8b27318e5190491bf7283fbf7468e35d7">QQ群</a>  | <a href="https://github.com/178146582/moeins">GitHub</a></p>
<p>基于优雅的 laravel 框架和一点都不妹子的 妹子UI 的在线影视应用</p>
<h4 id="作者有话要说">
<a class="header-anchor" href="#%e4%bd%9c%e8%80%85%e6%9c%89%e8%af%9d%e8%a6%81%e8%af%b4"></a>
作者有话要说
</h4><p>虽然在线影视网上也是遍地都是，但这并不影响我自个写一个，这样以后自己看番也方便，毕竟自己动手才能丰衣足食，又能学习到新的知识，岂不美哉。</p>
<p>页面设计参考了部分网站。影视资源均来自网上，如有侵权，请及时联系我们。</p>
<p>让我们一起抛弃那些ex的60秒广告吧~</p>
<ul>
<li>无数据库、无后台模式，仅只有一个配置文件(<code>config/web.php</code>)</li>
<li>无广告，支持vip解析，官方源，速度快，多频道，多分类</li>
</ul>
<p>To-do:</p>
<ul>
<li>
<ul>
<li>独立的频道首页</li>
</ul>
</li>
<li>
<ul>
<li>电视台直播</li>
</ul>
</li>
<li>
<ul>
<li>多解析接口</li>
</ul>
</li>
<li>
<ul>
<li>待添加&hellip;</li>
</ul>
</li>
</ul>
<h4 id="赞助专享版">
<a class="header-anchor" href="#%e8%b5%9e%e5%8a%a9%e4%b8%93%e4%ba%ab%e7%89%88"></a>
赞助专享版
</h4><p>另外这是一个双版本应用，就是它会有两个不同的版本，赞助版基于普通版的优化而来，在功能和性能上做了很大提升，大大加快运行速度，并且保持优先的更新.</p>
<ul>
<li>那么，问题来了，如何获得赞助专享版呢？</li>
</ul>
<p>你可以在 <a href="https://github.com/178146582/qr#author">这里</a> 或者 <a href="https://pay.52ecy.cn/">这里</a> 对项目赞助58元以上即可获得</p>
<p>当然，如果项目对你有帮助，或者你有需要，都可以选择赞助我们，哪怕一分也是爱</p>
<p>我想没有一个人写开源项目是为了牟利而写，毕竟它还没有去砖厂搬一天砖赚的多。</p>
<h2 id="安装需求">
<a class="header-anchor" href="#%e5%ae%89%e8%a3%85%e9%9c%80%e6%b1%82"></a>
安装需求
</h2><ul>
<li>LNMP/AMP With PHP5.6+</li>
<li>curl、OpenSSL扩展</li>
<li>Composer</li>
</ul>
<h2 id="通过composer安装主程序">
<a class="header-anchor" href="#%e9%80%9a%e8%bf%87composer%e5%ae%89%e8%a3%85%e4%b8%bb%e7%a8%8b%e5%ba%8f"></a>
通过Composer安装主程序
</h2><h4 id="1-使用composer安装moeins">
<a class="header-anchor" href="#1-%e4%bd%bf%e7%94%a8composer%e5%ae%89%e8%a3%85moeins"></a>
1. 使用composer安装moeins
</h4><pre tabindex="0"><code>$ composer create-project a-jue/moeins 
</code></pre><pre tabindex="0"><code>#等待安装依赖库后，会自动执行安装脚本
#出现如下提示表示安装完成

&gt; Illuminate\Foundation\ComposerScripts::postInstall
&gt; php artisan optimize
Generating optimized class loader
The compiled services file has been removed.
&gt; php artisan key:generate
Application key [base64:Hx0I9UUQg7OyIz8lpDYG6Y/gW1uxS760ERdWvGG2jyQ=] set successfully. 
</code></pre><h4 id="2-目录权限">
<a class="header-anchor" href="#2-%e7%9b%ae%e5%bd%95%e6%9d%83%e9%99%90"></a>
2. 目录权限
</h4><p>将<code>public</code> 子目录设置为对外公开的web目录</p>
        
        <hr><p>本文2018-09-25首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2018-09-25</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>CSS3随机背景图片切换特效</title>
      <link>https://zh.moejue.cn/posts/4/</link>
      <pubDate>Wed, 16 May 2018 11:58:08 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/4/</guid>
      <description>
        <![CDATA[<h1>CSS3随机背景图片切换特效</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>css3的随机背景图片淡入淡出切换特效  演示效果如本篇文章背景所示<br>
看大家扒我的幻想领域二次元限定版扒的比较累，扒了大半个小时的，抽空整理一下发出来<br>
设计之初本来是打算使用jQuery进行实现的，但是注意到了css3的@keyframes 规则，css3已经强大到曾经只有js才能实现的效果</p>
<h2 id="定义和用法">
<a class="header-anchor" href="#%e5%ae%9a%e4%b9%89%e5%92%8c%e7%94%a8%e6%b3%95"></a>
定义和用法
</h2><p>通过 @keyframes 规则，您能够创建动画。</p>
<p>创建动画的原理是，将一套 CSS 样式逐渐变化为另一套样式。</p>
<p>在动画过程中，您能够多次改变这套 CSS 样式。</p>
<p>以百分比来规定改变发生的时间，或者通过关键词 &ldquo;from&rdquo; 和 &ldquo;to&rdquo;，等价于 0% 和 100%。</p>
<p>0% 是动画的开始时间，100% 动画的结束时间。</p>
<p>为了获得最佳的浏览器支持，您应该始终定义 0% 和 100% 选择器。</p>
<p>注释：请使用动画属性来控制动画的外观，同时将动画与选择器绑定。</p>
<p>核心css部分(记得切换图片地址)</p>
<p>body {
background: #000;
background-attachment: fixed;
word-wrap: break-word;
-webkit-background-size: cover;
-moz-background-size: cover;
background-size: cover;
background-repeat: no-repeat
}</p>
<p>ul {
list-style: none
}</p>
<p>.cb-slideshow li:nth-child(1) span {
background-image: url(<a href="https://random.52ecy.cn/randbg.php?v=1520341099">https://random.52ecy.cn/randbg.php?v=1520341099</a>)
}</p>
<p>.cb-slideshow li:nth-child(2) span {
background-image: url(<a href="https://random.52ecy.cn/randbg.php?v=1520341159">https://random.52ecy.cn/randbg.php?v=1520341159</a>)
}</p>
<p>.cb-slideshow li:nth-child(3) span {
background-image: url(<a href="https://random.52ecy.cn/randbg.php?v=1520341149">https://random.52ecy.cn/randbg.php?v=1520341149</a>)
}</p>
        
        <hr><p>本文2018-05-16首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2018-05-16</p>]]>
      </description>
      
        <category>css</category>
      
    </item>
    
  </channel>
</rss>
