1.界面设计:
使用渐变背景和柔和阴影营造现代感
选项卡导航采用渐变色设计,带金色下划线指示
卡片式布局配合平滑动画过渡
响应式设计适配各种屏幕尺寸
2.交互功能:
选项卡切换时带有淡入淡出动画
计算按钮带有悬停放大效果
分步骤展示计算过程,每步独立显示在带边框的面板中
结果展示区采用颜色区分和高亮显示
3.计算逻辑:
总和计算使用高斯公式
偶数和计算采用等差数列公式
奇数和计算采用两种方法验证
实时公式显示和过程解释
4.视觉美化:
精心选择的配色方案(蓝紫色渐变)
精细的阴影和圆角处理
专业的排版和间距控制
动态效果(按钮悬停、选项卡切换)
5.效果截图:
①总和计算:
②偶数和:
③奇数和:
6.代码展示:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>数字之和可视化计算器</title>
<style>
/* 基础样式重置 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Arial, sans-serif;
}
body {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
min-height: 100vh;
padding: 2rem;
}
/* 选项卡容器 */
.calculator-container {
max-width: 1000px;
margin: 0 auto;
background: rgba(255, 255, 255, 0.95);
border-radius: 15px;
box-shadow: 0 10px 30px rgba(0,0,0,0.1);
overflow: hidden;
}
/* 选项卡导航 */
.tab-nav {
display: flex;
background: linear-gradient(90deg, #6a11cb 0%, #2575fc 100%);
}
.tab-button {
flex: 1;
padding: 1.2rem;
border: none;
background: transparent;
color: white;
font-size: 1.1rem;
cursor: pointer;
transition: all 0.3s ease;
}
.tab-button.active {
background: rgba(255, 255, 255, 0.15);
border-bottom: 3px solid #ffd700;
}
/* 计算器内容区域 */
.tab-content {
display: none;
padding: 2rem;
}
.tab-content.active {
display: block;
animation: fadeIn 0.5s ease;
}
/* 计算器样式 */
.calculator {
background: #fff;
padding: 2rem;
border-radius: 12px;
margin-bottom: 1.5rem;
box-shadow: 0 5px 15px rgba(0,0,0,0.05);
}
h2 {
color: #2c3e50;
margin-bottom: 1.5rem;
font-size: 1.8rem;
border-left: 4px solid #2575fc;
padding-left: 1rem;
}
.calculation-steps {
background: #f8f9fa;
padding: 1.5rem;
border-radius: 8px;
margin: 1.5rem 0;
line-height: 1.6;
}
button.calculate-btn {
background: #2575fc;
color: white;
border: none;
padding: 0.8rem 1.5rem;
border-radius: 25px;
cursor: pointer;
transition: transform 0.2s, box-shadow 0.2s;
font-size: 1rem;
}
button.calculate-btn:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(39, 117, 252, 0.3);
}
.result {
font-size: 1.4rem;
color: #2c3e50;
margin-top: 1rem;
padding: 1rem;
background: #e8f4ff;
border-radius: 8px;
display: inline-block;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
.step {
margin: 1rem 0;
padding: 1rem;
background: white;
border-radius: 8px;
border-left: 3px solid #2575fc;
}
.step h3 {
color: #2575fc;
margin-bottom: 0.5rem;
}
</style>
</head>
<body>
<div class="calculator-container">
<!-- 选项卡导航 -->
<div class="tab-nav">
<button class="tab-button active" onclick="switchTab('total')">总和计算</button>
<button class="tab-button" onclick="switchTab('even')">偶数和</button>
<button class="tab-button" onclick="switchTab('odd')">奇数和</button>
</div>
<!-- 总和计算界面 -->
<div id="total" class="tab-content active">
<div class="calculator">
<h2>1-100总和计算器</h2>
<div class="calculation-steps">
<div class="step">
<h3>步骤 1: 理解需求</h3>
<p>计算从1到100所有自然数的总和</p>
</div>
<div class="step">
<h3>步骤 2: 选择算法</h3>
<p>使用高斯求和公式:S = n(n+1)/2</p>
<p>其中n=100</p>
</div>
<button class="calculate-btn" onclick="calculateTotal()">立即计算</button>
<div class="result" id="totalResult"></div>
</div>
</div>
</div>
<!-- 偶数和界面 -->
<div id="even" class="tab-content">
<div class="calculator">
<h2>1-100偶数和计算器</h2>
<div class="calculation-steps">
<div class="step">
<h3>步骤 1: 确定范围</h3>
<p>第一个偶数:2,最后一个偶数:100</p>
</div>
<div class="step">
<h3>步骤 2: 计算项数</h3>
<p>等差数列公式:n = ((末项 - 首项)/公差) + 1</p>
<p>n = ((100 - 2)/2) + 1 = 50</p>
</div>
<button class="calculate-btn" onclick="calculateEven()">立即计算</button>
<div class="result" id="evenResult"></div>
</div>
</div>
</div>
<!-- 奇数和界面 -->
<div id="odd" class="tab-content">
<div class="calculator">
<h2>1-100奇数和计算器</h2>
<div class="calculation-steps">
<div class="step">
<h3>步骤 1: 确定范围</h3>
<p>第一个奇数:1,最后一个奇数:99</p>
</div>
<div class="step">
<h3>步骤 2: 计算方法</h3>
<p>方案一:总和 - 偶数和</p>
<p>方案二:使用等差数列公式</p>
</div>
<button class="calculate-btn" onclick="calculateOdd()">立即计算</button>
<div class="result" id="oddResult"></div>
</div>
</div>
</div>
</div>
<script>
// 选项卡切换函数
function switchTab(tabName) {
document.querySelectorAll('.tab-content').forEach(content => {
content.classList.remove('active');
});
document.querySelectorAll('.tab-button').forEach(button => {
button.classList.remove('active');
});
document.getElementById(tabName).classList.add('active');
event.currentTarget.classList.add('active');
}
// 计算总和
function calculateTotal() {
const n = 100;
const result = n * (n + 1) / 2;
document.getElementById('totalResult').innerHTML =
`计算结果:1-100总和 = ${result}<br>
<small>公式:S = 100×101/2 = 5050</small>`;
}
// 计算偶数和
function calculateEven() {
const a1 = 2, an = 100;
const n = ((an - a1)/2) + 1;
const result = n * (a1 + an) / 2;
document.getElementById('evenResult').innerHTML =
`计算结果:偶数和 = ${result}<br>
<small>公式:50×(2+100)/2 = 2550</small>`;
}
// 计算奇数和
function calculateOdd() {
// 方法一:总和减去偶数和
const total = 5050;
const evenSum = 2550;
const result = total - evenSum;
document.getElementById('oddResult').innerHTML =
`计算结果:奇数和 = ${result}<br>
<small>计算方式:5050(总和) - 2550(偶数和) = 2500</small>`;
}
</script>
</body>
</html>