JavaScript 实现动态产品展示网页

JavaScript 实现动态产品展示网页

  • 1. HTML 页面结构
  • 2. CSS 样式设计
  • 3. JavaScript 实现功能
  • 功能总结

本文设计了一个基于 JavaScript 的动态产品展示网页案例,核心功能包括:

  1. 动态产品分类过滤:通过点击分类按钮,仅显示属于该分类的产品。
  2. 产品详情弹窗:点击某个产品,显示该产品的详细信息。
  3. 搜索功能:用户可以通过输入关键字快速搜索产品。

1. HTML 页面结构

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Dynamic Product Showcase</title><link rel="stylesheet" href="styles.css">
</head>
<body><!-- 页面头部 --><header><h1>Dynamic Product Showcase</h1><input type="text" id="searchBox" placeholder="Search products..." /></header><!-- 分类按钮 --><div class="categories"><button data-category="all" class="category-button active">All</button><button data-category="electronics" class="category-button">Electronics</button><button data-category="fashion" class="category-button">Fashion</button><button data-category="home" class="category-button">Home</button></div><!-- 产品展示区 --><main><div class="product-list"><div class="product" data-category="electronics"><img src="https://via.placeholder.com/150" alt="Product 1"><h3>Smartphone</h3><p>$299</p></div><div class="product" data-category="fashion"><img src="https://via.placeholder.com/150" alt="Product 2"><h3>Leather Jacket</h3><p>$99</p></div><div class="product" data-category="home"><img src="https://via.placeholder.com/150" alt="Product 3"><h3>Table Lamp</h3><p>$49</p></div><div class="product" data-category="electronics"><img src="https://via.placeholder.com/150" alt="Product 4"><h3>Laptop</h3><p>$899</p></div></div></main><!-- 弹窗显示产品详情 --><div id="productModal" class="modal hidden"><div class="modal-content"><span id="closeModal" class="close">&times;</span><img id="modalImage" src="" alt="Product Image"><h3 id="modalTitle"></h3><p id="modalPrice"></p><p id="modalDescription"></p></div></div><script src="script.js"></script>
</body>
</html>

2. CSS 样式设计

/* 通用样式 */
body {font-family: Arial, sans-serif;margin: 0;padding: 0;
}header {background-color: #333;color: white;padding: 20px;text-align: center;
}input#searchBox {margin-top: 10px;padding: 5px;width: 80%;max-width: 400px;
}.categories {display: flex;justify-content: center;padding: 20px;background-color: #f4f4f4;
}.category-button {margin: 0 10px;padding: 10px 20px;border: none;background-color: #007BFF;color: white;cursor: pointer;border-radius: 5px;
}.category-button.active {background-color: #0056b3;
}.product-list {display: flex;flex-wrap: wrap;gap: 20px;justify-content: center;padding: 20px;
}.product {width: 200px;border: 1px solid #ccc;border-radius: 5px;text-align: center;padding: 10px;cursor: pointer;transition: transform 0.3s;
}.product:hover {transform: scale(1.05);
}/* 模态框样式 */
.modal {display: none;position: fixed;top: 0;left: 0;width: 100%;height: 100%;background-color: rgba(0, 0, 0, 0.8);justify-content: center;align-items: center;z-index: 1000;
}.modal-content {background-color: white;padding: 20px;border-radius: 10px;text-align: center;width: 300px;
}.close {float: right;cursor: pointer;color: red;
}

3. JavaScript 实现功能

// 获取 DOM 元素
const categoryButtons = document.querySelectorAll('.category-button');
const products = document.querySelectorAll('.product');
const searchBox = document.getElementById('searchBox');
const modal = document.getElementById('productModal');
const modalImage = document.getElementById('modalImage');
const modalTitle = document.getElementById('modalTitle');
const modalPrice = document.getElementById('modalPrice');
const modalDescription = document.getElementById('modalDescription');
const closeModal = document.getElementById('closeModal');// 产品分类过滤
categoryButtons.forEach(button => {button.addEventListener('click', () => {const category = button.getAttribute('data-category');// 更新按钮样式categoryButtons.forEach(btn => btn.classList.remove('active'));button.classList.add('active');// 显示/隐藏产品products.forEach(product => {const productCategory = product.getAttribute('data-category');if (category === 'all' || productCategory === category) {product.style.display = 'block';} else {product.style.display = 'none';}});});
});// 搜索功能
searchBox.addEventListener('input', (e) => {const query = e.target.value.toLowerCase();products.forEach(product => {const title = product.querySelector('h3').textContent.toLowerCase();if (title.includes(query)) {product.style.display = 'block';} else {product.style.display = 'none';}});
});// 产品详情弹窗
products.forEach(product => {product.addEventListener('click', () => {const imageSrc = product.querySelector('img').src;const title = product.querySelector('h3').textContent;const price = product.querySelector('p').textContent;modalImage.src = imageSrc;modalTitle.textContent = title;modalPrice.textContent = price;modalDescription.textContent = 'This is a detailed description of ' + title + '.';modal.style.display = 'flex';});
});// 关闭弹窗
closeModal.addEventListener('click', () => {modal.style.display = 'none';
});

功能总结

  1. 点击 分类按钮,仅显示对应分类的产品。
  2. 输入关键字到 搜索框,可实时过滤产品列表。
  3. 点击产品卡片,弹窗显示产品的详情信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64311.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

strace工具使用

下载地址&#xff1a; https://github.com/strace/strace/releases/tag/v6.12 解压后执行以下命令 ./configure --hostarm-linux --prefix/home/wei/Code/strace/strace-6.12/out CC/home/wei/Code/firmware/prebuilts/host/gcc/gcc-arm-10.2-2020.11-x86_64-arm-none-linux…

图像处理-Ch2-空间域的图像增强

Ch2 空间域的图像增强 文章目录 Ch2 空间域的图像增强Background灰度变换函数(Gray-level Transformation)对数变换(Logarithmic)幂律变换(Power-Law)分段线性变换函数(Piecewise-Linear)对比度拉伸(Contrast-Stretching)灰度级分层(Gray-level Slicing) 直方图处理(Histogram …

Linux | Ubuntu零基础安装学习cURL文件传输工具

目录 介绍 检查安装包 下载安装 手册 介绍 ‌cURL是一个利用URL语法在命令行下工作的文件传输工具&#xff0c;首次发行于1997年‌‌12。cURL支持多种协议&#xff0c;包括FTP、FTPS、HTTP、HTTPS、TFTP、SFTP、Gopher、SCP、Telnet、DICT、FILE、LDAP、LDAPS、IMAP、POP3…

cesium通过经纬度获取3dtiles 得feature信息

找到这里3dtiles的两种访问方式&#xff1a; 1.1 3DTileContent#getFeature 这里涉及3DTile 数据结构&#xff0c;暂不了解3DTile 数据结构&#xff0c;因此暂不使用。 1.2 scene.pick 本次使用 scene表示虚拟场景中所有 3D 图形对象和状态的容器&#xff1b;scene中…

内置ALC的前置放大器D2538A/D3308

一、概述 D2538A/D3308是芯谷科技推出的带有ALC&#xff08;自动电平控制&#xff09;的前置音频放大器芯片&#xff0c;最初产品为单声道/立体声收录机及盒式录音机而开发&#xff0c;作为录音/回放的磁头放大器使用&#xff1b;由于产品的高增益、低噪声及ALC外部可调的特性&…

基于SSM的“快递管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“快递管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登陆页面 注册页面 快递员页面 派单员订单管理页面 派单员订单添…

frp(s) 内网穿透 Liunx环境双端Docker部署

FRP(Fast Reverse Proxy)是一款高性能的反向代理应用,主要用于内网穿透、负载均衡和反向代理等多种场景。它能够将内网中的服务暴露给公网,实现远程访问。此外,FRP还可以用于接收类似GitHub或第三方提供的Webhook请求。在微服务架构中,FRP可以作为服务调用的反向代理,提…

STM32F103RCT6学习之五:ADC

1.ADC基础 ADC&#xff08;Analog-Digital Converter&#xff09;模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量&#xff0c;建立模拟电路到数字电路的桥梁12位逐次逼近型ADC&#xff0c;1us转换时间 输入电压范围&#xff1a;0~3.3V&#xff…

实现类似gpt 打字效果

1. css的动画&#xff08;animation) css中实现动画有两种方式&#xff1a;transition过渡动画、 animation自定义动画。 具体的可以看MDN链接&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/CSS/animation 使用keyframes自定义关键帧动画并未其命名使用自定义动…

微软远程桌面APP怎么用

微软远程桌面&#xff08;Remote Desktop&#xff09;客户端&#xff08;RD Client&#xff09;是一款由微软开发的应用程序&#xff0c;允许用户通过网络连接远程访问和控制另一台计算机。同时&#xff0c;微软远程桌面RD Client支持多种设备和操作系统&#xff0c;包括Window…

Unity3d UGUI如何优雅的实现Web框架(Vue/Rect)类似数据绑定功能(含源码)

前言 Unity3d的UGUI系统与Web前端开发中常见的数据绑定和属性绑定机制有所不同。UGUI是一个相对简单和基础的UI系统&#xff0c;并不内置像Web前端&#xff08;例如 Vue.js或React中&#xff09;那样的双向数据绑定或自动更新UI的机制。UGUI是一种比较传统的 UI 系统&#xff…

10分钟掌握项目管理核心工具:WBS、甘特图、关键路径法全解析

一、引言 在项目管理的广阔天地里&#xff0c;犹如一场精心编排的交响乐演奏&#xff0c;每个乐器、每个音符都需精准配合才能奏响美妙乐章。而 WBS&#xff08;工作分解结构&#xff09;、甘特图、关键路径法无疑是这场交响乐中的关键乐章&#xff0c;它们从不同维度为项目管…

代码思想之快慢路径

处理业务代码的过程中&#xff0c;对业务代码有了一些调整&#xff0c;后续发现这是一种代码思想 在一段复杂的逻辑里&#xff0c;我把查询redis操作写在了前面&#xff0c; 业务逻辑&#xff1a; 如果需要不打压就退出本次处理 查询redis拿到商品需要打压的次数 如果次数 …

纯 HTML+CSS+JS 实现一个炫酷的圣诞树动画特效

纯 HTMLCSSJS 实现一个炫酷的圣诞树动画特效 前言 圣诞节快到了&#xff0c;今天给大家带来一个简单但是效果不错的圣诞树动画特效。这个特效完全使用原生 HTML、CSS 和 JavaScript 实现&#xff0c;包含闪烁的星星、随机彩灯等元素&#xff0c;非常适合节日气氛&#xff01;…

【RAG实战】语言模型基础

语言模型赋予了计算机理解和生成人类语言的能力。它结合了统计学原理和深度神经网络技术&#xff0c;通过对大量的样本数据进行复杂的概率分布分析来学习语言结构的内在模式和相关性。具体地&#xff0c;语言模型可根据上下文中已出现的词序列&#xff0c;使用概率推断来预测接…

富芮坤FR800X系列之PWM输出程序应用设计

文章目录 前言1.设计背景2.简介3.如何设计控制调光的接口呢4.硬件设计5.软件设计5.1.软件流程图5.2.软件代码 6.小结 前言 版权归作者所有、未经允许、请勿转载。 读者对象&#xff1a; 本文档主要适用以下工程师&#xff1a; 嵌入式系统工程师 单片机软件工程师 IOT固…

Ftrans数据摆渡系统 搭建安全便捷跨网文件传输通道

一、专业数据摆渡系统对企业的意义 专业的数据摆渡系统对企业具有重要意义&#xff0c;主要体现在以下几个方面‌&#xff1a; 1、‌数据安全性‌&#xff1a;数据摆渡系统通过加密传输、访问控制和审计日志等功能&#xff0c;确保数据在传输和存储过程中的安全性。 2、‌高…

EasyPoi 使用$fe:模板语法生成Word动态行

1 Maven 依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.0.0</version> </dependency> 2 application.yml spring:main:allow-bean-definition-over…

python 渗透开发工具之SQLMapApi Server不同IP服务启动方式处理 解决方案SqlMapApiServer外网不能访问的情况

目录 说在前面 什么是 SQLMapAPI 说明 sqlmapApi能干什么 sqlmapApi 服务安装相关 kali-sqlmap存放位置 正常启动sqlmap-api server SqlMapApi-Server 解决外网不能访问情况 说在前面 什么是sqlmap 这个在前面已经说过了&#xff0c;如果这个不知道&#xff0c;就可以…

使用 Webpack 优雅的构建微前端应用❕

Module Federation 通常译作“模块联邦”&#xff0c;是 Webpack 5 新引入的一种远程模块动态加载、运行技术。MF 允许我们将原本单个巨大应用按我们理想的方式拆分成多个体积更小、职责更内聚的小应用形式&#xff0c;理想情况下各个应用能够实现独立部署、独立开发(不同应用甚…