计算6的阶乘

1.视觉设计:

        使用渐变色背景和柔和的阴影营造现代感

        卡片式布局配合悬浮动效提升交互体验

        步骤列表采用圆形序号标识和渐显动画

        结果展示使用醒目颜色块突出显示

2.交互功能:

        点击按钮触发分步计算演示

        每个步骤自动延迟显示,便于观察过程

        最终结果自动滚动到可视区域

        响应式设计适配各种屏幕尺寸

3.计算逻辑:

        使用循环结构实现阶乘计算

        通过setTimeout实现步骤的延迟展示

        动态创建DOM元素展示计算过程

        包含详细的初始化步骤和中间过程

4.动画效果:

        步骤条目的渐显和位移动画

        结果框的平滑出现效果

        按钮的悬停状态变化

        卡片容器的悬浮提升效果

5.效果展示:

6.代码重现:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>6的阶乘可视化计算</title>
    <!-- 引入Bootstrap美化样式 -->
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
            min-height: 100vh;
            padding: 2rem;
        }
        .calculation-box {
            background: rgba(255, 255, 255, 0.9);
            border-radius: 15px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
            padding: 2rem;
            margin: 2rem auto;
            max-width: 800px;
            transition: transform 0.3s ease;
        }
        .calculation-box:hover {
            transform: translateY(-5px);
        }
        .step-list {
            list-style-type: none;
            counter-reset: step-counter;
            padding-left: 0;
        }
        .step-list li {
            margin: 1rem 0;
            padding: 1rem;
            background: #f8f9fa;
            border-radius: 8px;
            counter-increment: step-counter;
            opacity: 0;
            transform: translateY(20px);
            animation: fadeIn 0.5s ease forwards;
        }
        .step-list li::before {
            content: counter(step-counter);
            background: #4CAF50;
            color: white;
            font-weight: bold;
            display: inline-block;
            width: 2em;
            height: 2em;
            line-height: 2em;
            text-align: center;
            border-radius: 50%;
            margin-right: 1rem;
        }
        @keyframes fadeIn {
            to {
                opacity: 1;
                transform: translateY(0);
            }
        }
        .result-box {
            background: #4CAF50;
            color: white;
            padding: 1.5rem;
            border-radius: 10px;
            text-align: center;
            font-size: 1.5rem;
            margin-top: 2rem;
            display: none;
        }
        .highlight {
            color: #4CAF50;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="calculation-box">
            <h1 class="text-center mb-4">6的阶乘计算演示 <span class="badge bg-success">可视化</span></h1>
            
            <div class="text-center mb-4">
                <p class="lead">6! = 6 × 5 × 4 × 3 × 2 × 1 = ?</p>
                <button class="btn btn-success btn-lg" onclick="calculateFactorial()">开始计算</button>
            </div>

            <h4 class="mt-4">计算步骤分解:</h4>
            <ul class="step-list" id="steps"></ul>

            <div class="result-box" id="result">
                最终结果:6! = <span class="highlight">720</span>
            </div>

            <!-- 计算原理说明 -->
            <div class="mt-4 p-3 bg-light rounded">
                <h5>计算原理说明:</h5>
                <p>阶乘(Factorial)表示从1乘到该数的连续乘积,记作n!,其数学定义为:</p>
                <p class="text-center">n! = n × (n-1) × (n-2) × ... × 2 × 1</p>
                <p>本演示通过JavaScript逐步计算:</p>
                <ol>
                    <li>初始化结果为1</li>
                    <li>从6开始递减循环相乘</li>
                    <li>每次迭代更新当前结果</li>
                    <li>可视化显示每一步的计算过程</li>
                </ol>
            </div>
        </div>
    </div>

    <script>
        function calculateFactorial() {
            const stepsElement = document.getElementById('steps');
            const resultElement = document.getElementById('result');
            stepsElement.innerHTML = '';
            resultElement.style.display = 'none';

            let result = 1;
            let currentStep = 6;
            
            // 创建步骤的延迟动画
            const createStep = (text, delay) => {
                setTimeout(() => {
                    const li = document.createElement('li');
                    li.innerHTML = text;
                    stepsElement.appendChild(li);
                }, delay);
            };

            // 初始值
            createStep(`初始化结果 = 1`, 100);

            // 循环创建计算步骤
            for(let i = 6; i >= 1; i--) {
                createStep(
                    `当前值:${currentStep}<br>`
                    + `计算:${result} × ${i} = <span class="highlight">${result * i}</span>`,
                    500 + (6 - i) * 800
                );
                result *= i;
                currentStep--;
            }

            // 显示最终结果
            setTimeout(() => {
                resultElement.style.display = 'block';
                resultElement.scrollIntoView({ behavior: 'smooth' });
            }, 6000);
        }
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值