下载地址:www.wenshushu.vip/download.ph…
口令下载码:XKHXE
最近在B站看到不少恶搞银行余额的P图视频,作为前端开发者,我决定用HTML+CSS+JS实现一个纯前端的银行余额模拟器。这个项目不仅能学习基础开发技能,还能制作出以假乱真的银行界面截图。
核心功能:
- 实时模拟账户余额变化
- 生成带银行LOGO的界面截图
- 支持存款/取款操作
- 自动生成交易流水记录
二、技术实现详解
- 基础HTML结构
电子账户
交易记录
- CSS样式设计
/* 银行主题色 */ :root { --bank-blue: #1a73e8; --bank-green: #52c41a; } .bank-container { max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #ddd; border-radius: 10px; box-shadow: 0 2px 12px rgba(0,0,0,0.1); background: #fff; } .bank-header { text-align: center; margin-bottom: 20px; } .bank-header img { width: 120px; height: 120px; border-radius: 50%; } .balance { font-size: 2.5em; margin: 20px 0; color: var(--bank-blue); font-weight: bold; } .operation button { padding: 10px 20px; margin: 0 10px; border: none; border-radius: 5px; cursor: pointer; } #deposit-btn { background-color: var(--bank-green); color: white; } #withdraw-btn { background-color: #f5222d; color: white; } .transaction-history table { width: 100%; border-collapse: collapse; margin-top: 20px; } .transaction-history th, .transaction-history td { padding: 8px; text-align: left; border-bottom: 1px solid #eee; } .transaction-history tr:nth-child(even) { background-color: #f9f9f9; } .transaction-history .income { color: var(--bank-green); font-weight: bold; } .transaction-history .expense { color: #f5222d; }
- JavaScript核心逻辑
document.addEventListener('DOMContentLoaded', function() { // 初始化账户数据 let balance = 88888.88; const transactions = []; const accountNumber = '6222 0000 0000 0000 00'; // 更新界面显示 function updateUI() { document.getElementById('balance').textContent = balance.toLocaleString(); renderTransactions(); } // 渲染交易记录 function renderTransactions() { const table = document.getElementById('transaction-table'); table.innerHTML = transactions.map(tr => <tr> <td>${tr.date}</td> <td class="${tr.type}">${tr.type === 'income' ? '+' : '-'}${tr.amount}</td> <td>${tr.description}</td> <td>${tr.balance}</td> </tr>).join(''); } // 存款操作 document.getElementById('deposit-btn').addEventListener('click', function() { const amount = parseFloat(prompt('请输入存款金额')); if (isNaN(amount) || amount <= 0) return; balance += amount; transactions.push({ date: new Date().toLocaleString(), type: 'income', amount: amount.toFixed(2), description: '存款', balance: balance.toFixed(2) }); updateUI(); }); // 取款操作 document.getElementById('withdraw-btn').addEventListener('click', function() { const amount = parseFloat(prompt('请输入取款金额')); if (isNaN(amount) || amount <= 0 || amount > balance) return; balance -= amount; transactions.push({ date: new Date().toLocaleString(), type: 'expense', amount: amount.toFixed(2), description: '取款', balance: balance.toFixed(2) }); updateUI(); }); // 初始化显示 updateUI(); // 模拟历史交易 function generateMockTransactions() { const startDate = new Date(); startDate.setDate(startDate.getDate() -7); for (let i = 0; i < 10; i++) { const amount = Math.random() * 5000 + 1000; const type = Math.random() > 0.5 ? 'income' : 'expense'; transactions.unshift({ date: new Date(startDate.setDate(startDate.getDate() -i)).toLocaleString(), type, amount: amount.toFixed(2), description: type === 'income' ? '工资' : '消费', balance: (balance - (type === 'expense' ? amount : 0)).toFixed(2) }); } } // 生成模拟数据 generateMockTransactions(); });
三、项目扩展与优化建议
- 增加银行LOGO切换功能:支持多家银行LOGO的切换,提升娱乐性
- 添加截图功能:使用html2canvas库实现界面截图
- 优化交易算法:引入蒙特卡洛模拟生成更真实的交易数据
- 增加数据导出:支持将交易记录导出为CSV文件
- 移动端适配:添加响应式设计,支持手机端操作