当前位置: 首页 > news >正文

JavaScript 网页交互进阶:5 个经典案例实现(二)—— 覆盖 UI 组件开发与工具函数封装 - 教程

在前端开发中,高频复用的交互组件和软件函数是提升开发效率的关键。本文整理了 10 个经典 JavaScript 案例,涵盖 UI 组件、数据管理、性能优化等场景,每个案例均包含核心功能技术点说明及可直接运行的完整代码,适合新手学习参考,也可直接集成到项目中应用。

本文分享了5个实用的JavaScript前端开发案例,包括:

  1. 颜色选择器:实现RGB/HEX双向转换与实时预览
  2. 二维码生成器:协助文本转换与图片下载功能
  3. 五星级评分组件:实现半星评分与本地存储持久化
  4. 手风琴折叠面板:支持单开/多开两种交互模式
  5. 滚动进度条:实时表现页面滚动百分比

案例 1:颜色选择器(RGB/HEX 转换 + 预览)

核心功能

  • 支持通过滑块调整 RGB 三色值(0-255 范围)
  • 实时展示对应的 HEX 颜色值并支持手动输入
  • 实时预览所选颜色效果
  • RGB 与 HEX 格式双向自动转换

技术点

  • RGB 与 HEX 颜色格式数学转换算法
  • 表单输入事件监听与数据同步
  • 实时值边界处理与格式验证
  • DOM 实时更新与视图渲染优化

效果图

实现代码

高级颜色选择器

支持直接输入HEX值(如#FF0088)进行颜色选择

<script>// 获取DOM元素const colorPreview = document.getElementById('colorPreview');const redSlider = document.getElementById('redSlider');const greenSlider = document.getElementById('greenSlider');const blueSlider = document.getElementById('blueSlider');const redValue = document.getElementById('redValue');const greenValue = document.getElementById('greenValue');const blueValue = document.getElementById('blueValue');const hexInput = document.getElementById('hexInput');// RGB转HEX函数function rgbToHex(r, g, b) {// 将十进制转为十六进制并补零const toHex = (num) => {const hex = num.toString(16);return hex.length === 1 ? '0' + hex : hex;};const hex = `#${toHex(r)}${toHex(g)}${toHex(b)}`.toUpperCase();return hex;}// HEX转RGB函数function hexToRgb(hex) {// 移除#号hex = hex.replace(/^#/, '');// 处理3位HEX值(如#FFF)if (hex.length === 3) {hex = hex.split('').map(char => char + char).join('');}// 解析RGB值const r = parseInt(hex.substring(0, 2), 16);const g = parseInt(hex.substring(2, 4), 16);const b = parseInt(hex.substring(4, 6), 16);// 验证有效性if (isNaN(r) || isNaN(g) || isNaN(b)) {return null;}return { r, g, b };}// 更新颜色预览function updateColorPreview() {const r = parseInt(redSlider.value);const g = parseInt(greenSlider.value);const b = parseInt(blueSlider.value);// 设置预览颜色colorPreview.style.backgroundColor = `rgb(${r}, ${g}, ${b})`;// 更新HEX输入框const hex = rgbToHex(r, g, b);hexInput.value = hex;}// 同步RGB输入值function syncRGBValues() {redValue.value = redSlider.value;greenValue.value = greenSlider.value;blueValue.value = blueSlider.value;updateColorPreview();}// 从HEX值更新RGBfunction updateFromHex() {const hex = hexInput.value.trim();const rgb = hexToRgb(hex);if (rgb) {redSlider.value = rgb.r;greenSlider.value = rgb.g;blueSlider.value = rgb.b;syncRGBValues();}}// 事件监听redSlider.addEventListener('input', syncRGBValues);greenSlider.addEventListener('input', syncRGBValues);blueSlider.addEventListener('input', syncRGBValues);redValue.addEventListener('change', () => {// 确保值在0-255范围内const value = Math.min(255, Math.max(0, parseInt(redValue.value) || 0));redValue.value = value;
http://www.zskr.cn/news/66611.html

相关文章:

  • EverEdit 4.3 函数提示设置指南
  • 2025年南通笔记本电脑售后维修点推荐:哪个维修点更靠谱?七大品牌实测对比与选择指南
  • 2025年常州笔记本电脑售后维修点推荐:哪家口碑更优?七大品牌维修服务质量排名分析
  • 代码大全(1) - A
  • 2025年大连笔记本售后服务点推荐:三星戴尔联想等品牌哪家更可靠?全面评测与用户反馈解析
  • 2025年重庆惠普宏碁三星维修点推荐:哪家维修质量更优?多维度实测与用户口碑调查
  • 2025年贵阳笔记本电脑售后维修点推荐:哪个技术更可靠?多品牌维修能力全面评测
  • Spring BeanDefinitionRegistry 接口
  • Milvus:利用Docker安装Milvus向量数据库(一)
  • 重读《代码大全2》3
  • 题解:P14623 [2018 KAIST RUN Fall] Coloring Roads
  • 强制maven更新依赖并清除缓存
  • NOIP2025 退役记 OI回忆录
  • 想要会独立开发app,第一步应该学什么语言?
  • 主域名和二级域名的区别在哪?
  • 2025-11-30-Nature 本周最新文献速递
  • 深入解析:【图像】图像的颜色深度(Color Depth)和存储格式(File Format)
  • 2025 年 geo 优化服务商:权威优选实力清单
  • 2025 年武汉 geo 优化公司:实测效果出众
  • 疲劳、敏感、恢复慢?可能是免疫系统在求救!2025年,该给你的免疫力升级了
  • app端相对于web端测试的区别
  • 深入解析:faster-whisper热词详解与程序设计
  • NMN产品哪个口碑好?2025年十大NMN抗衰保健品性价比品牌推荐,精准匹配抗衰需求
  • 国内哪家过碳酸钠供应商比较好?工业级碳酸钠生产厂家:销量比较好的过碳酸钠厂家
  • 国内哪家过碳酸钠供应商比较好?过碳酸钠进口CIF价格供应商TOP前十名单推荐,企业采购名单
  • 2025年度护肝片十大品牌权威推荐,专家告诉你哪款最值得买
  • 痛风反复发作?2025年什么是“从根源改善”的最好降尿酸科技?告别“只降酸”时代!
  • 时间序列信息异常检测算法(5)——PCA异常检测
  • 2025降糖高口碑产品深度解析:这九款真实体验佳,闭眼入不踩雷
  • 2025护肝片十大品牌权威推荐,官方旗舰店指路,告诉你哪款最值得买