JavaScript

文章分类

浏览该分类下的所有文章

22 篇文章 2

微信公众号API+Redis实现内容访问控制

本文介绍了基于微信公众号验证码的文章解锁方案,实现未关注用户只能浏览文章前1/3内容,点击“查看全文”引导关注并发送关键词“博客”获取6位数字验证码。核心技术包括前端 CSS 截断+遮罩、Spring Boot 提供验证码生成/验证 API、Redis 存储验证码(5 分钟 TTL,单次使用),以及微信服务器的消息推送与自动回复。验证成功后通过浏览器 LocalStorage 持久化全局解锁状态。文中给出系统架构图、关键代码(RedisConfig、VerifyCodeService、WechatMpService)以及完整的依赖配置、Redis 连接、验证码服务实现和公众号接入步骤,帮助快速搭建可在移动端和桌面端平滑运行的内容访问控制功能。

博客文章“部分展示+验证解锁”实现

本文介绍在博客中实现“部分展示+验证解锁”阅读限制的完整方案。通过自动计算文章高度,仅显示前1/3并加底部虚化遮罩,配合“查看全文”按钮触发验证弹窗。用户扫码关注公众号、发送关键词获取验证码,校验成功后在本地存储全局解锁标识,文章平滑展开并显示成功动画。实现核心包括HTML结构划分、CSS变量控制截断高度与过渡、JS负责高度计算、锁定/解锁逻辑及验证码校验。文中还提供响应式布局、全局解锁持久化及后续优化建议,如后端API动态验证码、微信自动回复、有效期控制、数据统计和A/B测试等。

为博客每日一句添加音频播放功能

为博客底部的“每日一句”添加英文音频播放功能。通过有道词典每日一句API获取 voice URL,后端实现 `/api/daily-quote/voice` 代理接口解决 CORS,前端加入圆形播放按钮、CSS 动画和播放状态反馈,使用 HTML5 Audio 管理播放、暂停及结束事件,并处理 DOM 加载时机和移动端样式适配。实现后,点击按钮即可播放或暂停音频,播放中按钮呈粉色脉冲动画,兼容 PC 与移动端,提升访客的英语学习体验。

博客文章分享卡片功能设计与实现

本文介绍在个人博客中实现分享卡片的完整方案。首先阐述功能需求:点击弹出包含标题、摘要、时间、作者和二维码的卡片,并支持保存为图片且自适应PC、移动端。随后给出技术实现细节:HTML Overlay结构、Canvas 绘制流程、手写文本自动换行函数、使用 qrcode.js 生成二维码并绘制到画布。接着说明 UI 设计要点,包括配色、字体、层次布局;以及获取文章信息、图片下载的代码实现。最后通过媒体查询实现响应式,采用2 倍缩放、异步二维码生成等优化手段,确保高清渲染和性能。全文展示了从需求分析、视觉设计到代码实现的全链路,解决了文本换行、二维码绘制和多端适配等关键难点,最终交付一个体验流畅的分享卡片功能。

视觉盛宴:手把手教你实现一个现代化的弹幕墙

本文系统阐述了实现现代弹幕墙的完整方案。先从需求出发,采用玻璃拟态风格并提供六套主题色,实现圆角卡片式弹幕。核心采用轨道管理和关键帧动画,实现流畅滚动,并通过安全轨道检测与智能调度防止重叠。针对不同终端设计响应式布局,支持全屏切换、速度调节、暂停播放等交互。最后提供GPU加速、对象池复用等性能优化措施,确保视觉效果、交互体验和适配性兼顾。

Spring Boot博客系统集成AI智能摘要功能实战

本文示例了在 Spring Boot 博客系统中集成 AI 智能摘要的完整实现。通过在后端定义 AiSummaryService 接口并实现调用 OpenAI 兼容的 AI 接口(如智谱 AI、Moonshot、GPT‑4 等),在 controller 中提供 /api/ai-summary 接口,返回去除 HTML 的纯文本摘要。前端使用 Thymeleaf 页面与 JavaScript,调用该 API 后用打字机动画逐字展示摘要,并在 AI 服务不可用时回退到本地关键词或首段摘要。配置文件中可灵活设置 API 地址、模型、密钥、max‑tokens 等参数,实现前后端分离、可配置的 AI 摘要功能。

双层缓存+响应式设计:博客每日一句功能完美落地教程

本文详细阐述了在博客底部实现“每日一句”功能的完整方案。后端采用 Spring Boot + RestTemplate,提供 `/api/daily-quote` 接口,使用 ConcurrentHashMap 按日期缓存当天句子,防止频繁调用有道词典 API,并在异常时返回固定备用句子。前端使用原生 JavaScript 与 CSS3,首次请求后将数据写入 localStorage,实现客户端一天一次的二层缓存;通过 `white-space: nowrap`、`text-overflow: ellipsis` 与 `.expanded` 类实现长句折叠/展开交互。布局采用弹性盒子和媒体查询,在桌面、平板、手机三种断点下自动适配宽度和字号。整体实现了每日更新、降级备份、性能优化和响应式展示,代码可直接复制使用。

个人博客的代码块折叠/展开功能

随着技术文章代码示例日益冗长,阅读体验受限,作者实现了零依赖、智能折叠的代码块组件。核心采用 CSS max‑height 过渡实现平滑动画,结合实际渲染的字体尺寸、行高和内边距精确计算折叠阈值,仅对超长代码启用。组件提供语言自动识别、复制按钮、ARIA 可访问属性以及响应式触摸优化。性能测试显示首屏加载下降 11%、交互延迟降 28%、代码占比减半,移动端阅读完成率提升 40%。文中还总结了主题兼容、动画防抖、触控尺寸等实现挑战及对应方案,并给出渐进增强、性能优先、无障碍设计等最佳实践,提出虚拟滚动、状态持久化和结构化折叠等后续优化方向。

留言板表情系统技术实现:从代码输入到直观显示的演进

本文记录了博客留言板表情系统的技术演进:从最初的[:表情名:]文本编码因记忆成本高、交互不直观而体验差,重构为“所见即所得”。采用 contenteditable 替代 textarea 实现图片即时插入,并通过实时双向同步将图片转回代码存入后端;页面加载时解析代码转为 <img>。动态生成表情面板,精确在光标位置插入,兼容回复框及移动端响应式布局与触摸事件。加入懒加载、输入防抖等性能优化,对比数据表明表情使用率、用户满意度显著提升。

从A标签跳转后JS失效?我踩过的坑和填坑方法

在博客列表页通过普通 `<a>` 跳转到文章详情时,页面加载正常但灯箱、复制按钮等 JS 功能失效,刷新或直接访问 URL 则一切正常。原因是浏览器在普通跳转时可能复用旧的 JS 环境或缓存页面,导致新页面的脚本未完整重新执行。临时解决办法是给链接加 `target="_self"`,强制完整加载;更根本的做法是改进 JS 初始化时机:在 `DOMContentLoaded`、`load`、`pageshow` 等事件中检查关键元素是否已出现,必要时使用 `setTimeout` 或 `Promise` 等方式等待后再调用 `initLightbox、initCopyButton` 等函数;文中还提供了基于 `PageManager` 的完整初始化管理器,能够在页面恢复、前进/后退等场景下安全重置并逐个等待所需元素。经验教训包括:不要盲目信任 `DOMContentLoaded`,要防御性地检查 DOM,了解浏览器缓存机制,并可考虑使用 `MutationObserver` 监听 DOM 变化。

现代Web表情选择器组件:分类系统与实现详解

本文介绍了构建专业级 Web 表情选择器的核心——分类系统与实现。采用 7 大主题分类(表情、人物、动物、食物、旅行、物体、符号),每类配以图标、表情数量(约 70‑90 条)和代表 Emoji。通过 HTML 结构实现标签页与对应面板的切换,并给出每个分类的具体 Emoji 示例代码,展示如何在页面中组织、渲染并交互式展示完整的表情库。文章还说明了作者对原有库的归类与补充工作。

基于-webkit-line-clamp的评论折叠组件开发

本文针对评论区长文本导致布局错乱的问题,设计并实现了基于 -webkit-line-clamp 的折叠组件。通过外层容器+内部 .comment-content 结构,使用 display:-webkit-box、-webkit-line-clamp 限制行数并配合伪元素渐变遮罩提示未展示内容;利用 JavaScript 动态添加/移除 .collapsed 类、比较 scrollHeight 与 clientHeight 判断是否需要折叠并控制展开/收起按钮。组件在窗口 resize 时重新计算,支持行数配置、非 WebKit 浏览器兼容、事件委托与防抖等性能与安全优化,可广泛用于社区评论、文章摘要等长文本折叠场景。