0%
boxmoe_header_banner_img

加载中

「盒子萌Lolimeow」主题二创「纸鸢版🕊️更新」与「🗼开发笔记」


avatar
白木 2025年8月27日 2026年2月13日 1.61k

🔠 前台代码注释显隐开关

功能描述
在后台主题设置的【系统优化】中新增「移除前端HTML注释」开关,开启后前台页面将不再渲染代码文件中的所有注释,包括:

- HTML 注释 `<!-- -->`
- `<script>` 标签内的 JS 单行注释 `//` 和多行注释 `/* */`
- `<style>` 标签内的 CSS 注释 `/* */`

涉及文件

  1. core/panel/settings/set-optimize.php - 添加后台设置选项
  2. core/module/fun-optimize.php - 实现注释过滤功能

设置选项

  • 选项ID:boxmoe_remove_html_comments_switch
  • 默认状态:关闭
  • 位置:后台 → 主题设置 → 系统优化 → 服务器相关设置

技术实现
使用 PHP 输出缓冲(Output Buffering)捕获页面输出,通过正则表达式过滤各类注释:

  • 保留 IE 条件注释
  • 保留 noindex 注释
  • 保留 URL 中的 http://https://

使用场景

  • 减少页面体积,提升加载速度
  • 隐藏开发注释信息,保护代码结构




⛔ 禁用F12和Ctrl+S功能

功能描述: 在后台主题设置的【系统优化】中添加开关,可禁用F12开发者工具和禁止Ctrl+S保存网页功能。

🔧 设置入口

  • 后台路径: 主题设置 → 系统优化 → 安全项优化设置
  • 设置项1: 禁用F12开发者工具 (boxmoe_disable_f12_switch)
  • 设置项2: 禁止Ctrl+S保存网页 (boxmoe_disable_ctrl_s_switch)

📝 代码位置

  • 设置项定义: wp-content/themes/lolimeow/core/panel/settings/set-optimize.php
  • 功能实现: wp-content/themes/lolimeow/core/module/fun-optimize.php

⚙️ 实现原理

  1. 后台设置: 在【安全项优化设置】分组中添加两个checkbox类型的设置项,默认均为关闭状态
  2. 前端拦截: 通过 wp_footer 钩子注入JavaScript代码,监听 keydown 事件
  3. F12拦截: 检测 e.key === 'F12',阻止默认行为
  4. Ctrl+S拦截: 检测 (e.ctrlKey || e.metaKey) && e.key.toLowerCase() === 's',兼容Windows(Ctrl)和Mac(Command)系统
  5. 作用范围: 仅在非管理后台且非AJAX请求时生效,避免影响后台正常操作

🎯 使用说明

  • 两个功能可独立开关,互不影响
  • 开启后用户无法通过F12打开浏览器开发者工具
  • 开启后用户无法通过Ctrl+S/Cmd+S保存网页
  • 功能仅对普通访客生效,管理员在后台不受影响




🎉 网站LOGO动画开关功能

功能描述:网站LOGO每8秒轻微放大缩小一次,呈现呼吸动画效果,功能在后台主题设置的【站点美化】中可开关控制。

涉及文件

  • wp-content/themes/lolimeow-shiroki/core/panel/settings/set-beautify.php - 后台设置选项
  • wp-content/themes/lolimeow-shiroki/assets/css/style.css - CSS动画样式
  • wp-content/themes/lolimeow-shiroki/functions.php - 前端输出逻辑

设置选项

  • 开关入口: 站点美化 -> LOGO动效设置 -> 开启LOGO呼吸动画 (boxmoe_logo_breathe_switch)
  • 动画周期: 站点美化 -> LOGO动效设置 -> LOGO动画周期 (boxmoe_logo_breathe_duration,单位:秒,默认8秒)

功能详情

  • 开启后,网站LOGO将呈现轻微的呼吸效果(从100%放大到108%再回到100%)
  • 动画周期可自定义,范围1-60秒
  • 同时作用于顶部导航栏LOGO和移动端侧边栏LOGO
  • 使用CSS @keyframes 实现,性能友好

代码实现

  1. CSS动画定义 (style.css):
@keyframes logo-breathe {
     0%, 100% {transform: scale(1);}
     50% {transform: scale(1.08);}
   }
   
  1. 后台设置 (set-beautify.php):

- 添加【LOGO动效设置】分组
- 包含开关和周期设置两个选项

  1. 前端输出 (functions.php):

- shiroki_logo_breathe_output() 函数动态输出CSS
- 根据后台设置应用动画周期




🚀 新增涟漪式页面过渡动画

功能描述:在盒子萌主题后台▶️基础设置▶️🌸 樱花过渡页面中新增涟漪式页面过渡动画选项

设置入口:后台▶️盒子萌主题设置▶️基础设置▶️🌸 樱花过渡页面

  • none - 关闭过渡动画
  • sakura - 🌸 樱花过渡动画(原有功能)
  • ripple - 💧 涟漪式过渡动画(新增)

涉及文件

  • 设置项wp-content/themes/lolimeow-shiroki/core/panel/settings/set-basis.php

- 将原来的 boxmoe_page_loading_switch checkbox 改为 boxmoe_page_loading_type radio
- 新增三个选项:关闭/樱花动画/涟漪动画

  • 头部模板wp-content/themes/lolimeow-shiroki/header.php

- 根据 boxmoe_page_loading_type 设置判断显示哪种动画
- 樱花动画:保留原有的樱花SVG加载动画
- 涟漪动画:引入新的涟漪过渡动画容器,加载对应CSS和JS文件

  • 涟漪动画CSSwp-content/themes/lolimeow-shiroki/assets/css/page-ripple-transition.css

- 🌊 从点击位置圆形扩散的涟漪效果(半透明毛玻璃拟态)
- 🔮 横板弹珠加载动画(不规则跳动)
- ⏳ 进度百分比显示(与dots同行)
- 🎯 目标URL显示(毛玻璃卡片)
- 🌆 暗色模式适配
- 📱 移动端适配
- ♿ 减少动画偏好适配

  • 涟漪动画JSwp-content/themes/lolimeow-shiroki/assets/js/page-ripple-transition.js

- 拦截页面链接点击事件
- 记录点击位置,计算涟漪扩散范围
- 显示加载动画和进度百分比
- 页面跳转后自动退出动画

  • 预加载器初始化wp-content/themes/lolimeow-shiroki/assets/js/boxmoe.js

- 更新选择器为 .preloader-sakura,匹配新的樱花动画类名

样式特点

  1. 涟漪层:半透明毛玻璃效果 backdrop-filter: blur(20px),从点击位置圆形扩散
  2. 加载器:圆角胶囊形状,白色半透明背景,内部包含8个跳动dot和百分比数字
  3. Dot动画:默认灰色,激活时变为粉色并带发光效果
  4. 百分比文字:深粉色加粗显示,带白色阴影增强可读性
  5. 目标URL:毛玻璃卡片样式,等宽字体显示完整URL




🧧 新增红包雨飘落

┏━🏇━━━━━🏇━┓
  春风得意马蹄疾
  一日看尽长安花
  爆竹声中辞旧岁
  骏马奔腾迎新春
┗━🧧━━━━━🧧━┛
   新 年 快 乐 🏮
²⁰²⁶ 丙午马年 🐎

📋 功能概述

将原有的【网页飘落樱花】功能扩展为【网页飘落动画】,新增红包雨飘落效果,支持自定义SVG图标,并智能避开文章阅读区域。

🗂️ 涉及文件

文件路径 说明
--------- ------
core/panel/settings/set-basis.php 后台设置选项修改
core/module/fun-basis.php JS资源加载逻辑
assets/js/redpacket.js 红包雨动画核心代码
assets/images/svg/redpacket.svg 红包SVG图标
assets/images/svg/coin.svg 金币SVG图标

⚙️ 后台设置修改

set-basis.php 中将原来的复选框改为单选框:

$options[] = array(
    'name' => __('🎊 网页飘落动画', 'ui_boxmoe_com'),
    'id' => 'boxmoe_falling_animation_type',
    'type' => "radio",
    'std' => "none",
    'options' => array(
        'none' => __('关闭飘落动画', 'ui_boxmoe_com'),
        'sakura' => __('🌸 樱花飘落', 'ui_boxmoe_com'),
        'redpacket' => __('🧧 红包雨', 'ui_boxmoe_com')
));

选项说明:

  • none - 关闭所有飘落动画
  • sakura - 樱花飘落效果
  • redpacket - 红包雨飘落效果

🎨 资源加载逻辑

fun-basis.php 中根据用户选择动态加载对应JS:

/* 🎊 网页飘落动画加载 */
$falling_animation_type = get_boxmoe('boxmoe_falling_animation_type', 'none');
if($falling_animation_type == 'sakura'){
    wp_enqueue_script('sakura-script', boxmoe_theme_url() . '/assets/js/sakura.js', array(), THEME_VERSION, true);
}elseif($falling_animation_type == 'redpacket'){
    wp_enqueue_script('redpacket-script', boxmoe_theme_url() . '/assets/js/redpacket.js', array('boxmoe-script'), THEME_VERSION, true);
    /* 🧧 传递红包和金币图片路径到JS */
    wp_localize_script('redpacket-script', 'redpacket_object', array(
        'redpacket_url' => boxmoe_theme_url() . '/assets/images/svg/redpacket.svg',
        'coin_url' => boxmoe_theme_url() . '/assets/images/svg/coin.svg'
    ));
}

🧧 红包雨动画实现

核心特性
  1. 🖼️ 自定义SVG图标

- 支持红包和金币两种图标
- 图标路径通过 wp_localize_script 传递到JS
- 图标文件存放在 assets/images/svg/ 目录

  1. 📐 长窄形红包样式

- 红包宽高比为 0.6:1(宽度为高度的60%)
- 更符合传统红包的外观

  1. 🎯 智能避开阅读区域

- 仅在文章详情页生效
- 自动检测文章内容区域(.blog-single.post-single.single-content 等)
- 红包进入文章区域时透明度降至15%
- 离开文章区域后恢复正常透明度

  1. 🎲 随机效果

- 随机大小(0.5 - 1.2倍)
- 随机旋转角度
- 随机水平漂移速度
- 随机下落速度

页面类型检测逻辑
function getContentArea() {
    /* 🔍 首先检测是否是文章详情页 */
    var isSinglePage = document.body.classList.contains('single') || 
                       document.body.classList.contains('single-post') ||
                       document.querySelector('.single-post') !== null ||
                       document.querySelector('.blog-single') !== null;
    
    /* 🏠 如果不是文章详情页(如首页),则不避开任何区域 */
    if (!isSinglePage) {
        return null;
    }
    // ... 检测文章区域
}
透明度调整逻辑
Redpacket.prototype.update = function() {
    // ... 位置更新
    
    /* 📝 检测是否在文章区域内 */
    var contentArea = getContentArea();
    if (contentArea) {
        // 计算红包边界框
        // 检测是否与文章区域重叠
        
        if (isOverlapping) {
            /* 👻 在文章区域内时降低透明度 */
            this.opacity = 0.15;
        } else {
            /* 👁️ 在文章区域外时恢复正常透明度 */
            this.opacity = 1;
        }
    }
    // ...
};

📁 SVG图标文件

文件位置:

assets/images/svg/
├── redpacket.svg  /* 🧧 红包SVG图标 */
└── coin.svg       /* 🪙 金币SVG图标 */

🎮 使用方法

  1. 进入后台 → 主题设置 → 基础设置
  2. 找到【🎊 网页飘落动画】选项
  3. 选择【🧧 红包雨】
  4. 保存设置,刷新页面即可看到效果

💡 注意事项

  • 红包雨效果仅在非文章区域显示完整效果
  • 在文章详情页阅读时,红包会自动变透明,不影响阅读
  • 首页和列表页红包正常显示
  • 如需更换图标,替换 assets/images/svg/ 目录下的SVG文件即可




感谢您的支持
微信赞赏

微信扫一扫

支付宝赞赏

支付宝扫一扫



评论(2)

查看评论列表
评论头像
小笨蛋 2026年01月13日
赞!
评论头像
小笨蛋 2026年01月13日
不错不错ツ

发表评论

表情 颜文字
插入代码

北京时间 (Asia/Shanghai)

后退
前进
刷新
复制
粘贴
全选
删除
返回首页
0%
目录
顶部
底部
📖 文章导读