《恐龙餐厅菜单页面代码说明文档》

一、整体概述

此 HTML 文件构建了一个恐龙餐厅的菜单页面,用户能够浏览菜品、将菜品添加到购物车,并进行支付操作。页面运用 HTML 搭建结构,CSS 进行样式设计,JavaScript 实现交互功能。

二、HTML 结构

1. 文档头部(<head>

html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>恐龙餐厅菜单</title>
    <style>
        /* CSS 样式代码 */
    </style>
</head>

  • <!DOCTYPE html>:声明文档类型为 HTML5。
  • <html lang="zh-CN">:指定文档语言为中文(中国大陆)。
  • <meta charset="UTF-8">:设置字符编码为 UTF - 8,确保中文等字符能正确显示。
  • <meta name="viewport" content="width=device-width, initial-scale=1.0">:让页面在不同设备上能自适应显示。
  • <title>恐龙餐厅菜单</title>:设置浏览器标签页的标题。
  • <style> 标签:包含页面的 CSS 样式代码。

2. 页面主体(<body>

欢迎标题

html

<h1>欢迎来到恐龙餐厅</h1>

显示欢迎信息,字体颜色为绿色,居中显示。

购物车部分

html

<div class="cart">
    <h2>购物车</h2>
    <ul id="cart-items"></ul>
    <p>总价:¥<span id="total-price">0</span></p>
    <div class="payment">
        <input type="number" id="payment-amount" placeholder="输入支付金额">
        <button onclick="processPayment()">支付</button>
    </div>
    <p id="change-message"></p>
</div>

  • .cart 类的 <div>:作为购物车的容器。
  • <ul id="cart-items">:用于显示购物车中的菜品列表。
  • <span id="total-price">:显示购物车中菜品的总价。
  • <input type="number" id="payment-amount">:让用户输入支付金额。
  • <button onclick="processPayment()">:点击该按钮会调用 processPayment() 函数进行支付处理。
  • <p id="change-message">:显示找零信息或支付错误提示。
菜单部分

html

<h1>菜单</h1>
<div class="menu">
    <!-- 多个 .menu-item 元素 -->
</div>

  • <h1>菜单</h1>:显示菜单标题。
  • .menu 类的 <div>:包含所有菜品信息。
菜品信息

html

<div class="menu-item" data-price="10">
    <img src="icecream_banana.jpg" alt="冰淇淋香蕉船">
    <div class="item-info">
        <div class="item-name">冰淇淋香蕉船</div>
        <div class="item-price">¥10</div>
    </div>
    <button onclick="addToCart(this)">点餐</button>
</div>

  • .menu-item 类的 <div>:表示一道菜品,data - price 属性存储菜品价格。
  • <img> 标签:显示菜品图片。
  • .item - info 类的 <div>:包含菜品名称和价格。
  • <button onclick="addToCart(this)">:点击该按钮会调用 addToCart() 函数将菜品添加到购物车。

三、CSS 样式

1. 全局样式

css

body {
    font-family: Arial, sans-serif;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

设置页面主体的字体、最大宽度、居中显示和内边距。

2. 标题样式

css

h1 {
    color: green;
    text-align: center;
    margin-bottom: 30px;
}

设置一级标题的颜色、居中显示和底部外边距。

3. 菜品样式

css

.menu-item {
    display: flex;
    align-items: center;
    margin-bottom: 20px;
    border-bottom: 1px solid #ddd;
    padding-bottom: 15px;
}
.menu-item img {
    width: 100px;
    height: 100px;
    margin-right: 20px;
    border-radius: 10px;
}
.item-info {
    flex-grow: 1;
}
.item-name {
    font-weight: bold;
    font-size: 18px;
}
.item-price {
    color: #e67e22;
    font-size: 16px;
}

  • .menu - item:使用 Flexbox 布局,设置菜品项的显示方式、底部边框和内边距。
  • .menu - item img:设置菜品图片的宽度、高度、右边距和圆角。
  • .item - info:让菜品信息区域自动填充剩余空间。
  • .item - name:设置菜品名称的字体加粗和大小。
  • .item - price:设置菜品价格的颜色和大小。

4. 购物车样式

css

.cart {
    margin-top: 40px;
    padding: 20px;
    border: 1px solid #ddd;
    border-radius: 10px;
}
.cart h2 {
    margin-top: 0;
}

设置购物车容器的外边距、内边距、边框和圆角,以及购物车标题的顶部外边距。

5. 支付部分样式

css

.payment {
    margin-top: 20px;
}
.payment input {
    padding: 5px;
    margin-right: 10px;
}
.payment button {
    padding: 5px 10px;
    background-color: #4CAF50;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

设置支付区域的外边距、输入框和按钮的样式。

四、JavaScript 功能

1. 全局变量

javascript

let cart = [];
let total = 0;

  • cart:数组,用于存储购物车中的菜品信息。
  • total:变量,用于存储购物车中菜品的总价。

2. addToCart() 函数

javascript

function addToCart(button) {
    const item = button.parentElement;
    const name = item.querySelector('.item-name').textContent;
    const price = parseInt(item.getAttribute('data-price'));
    
    cart.push({name, price});
    total += price;
    
    updateCartDisplay();
}

  • 功能:将菜品添加到购物车。
  • 步骤:
    1. 获取点击按钮所在的菜品项元素。
    2. 提取菜品名称和价格。
    3. 将菜品信息添加到 cart 数组中,并更新总价。
    4. 调用 updateCartDisplay() 函数更新购物车显示。

3. updateCartDisplay() 函数

javascript

function updateCartDisplay() {
    const cartItems = document.getElementById('cart-items');
    const totalPrice = document.getElementById('total-price');
    
    cartItems.innerHTML = cart.map(item => 
        `<li>${item.name} - ¥${item.price}</li>`
    ).join('');
    
    totalPrice.textContent = total;
}

  • 功能:更新购物车的显示内容和总价。
  • 步骤:
    1. 获取购物车列表和总价元素。
    2. 将 cart 数组中的菜品信息转换为 HTML 列表项,并更新购物车列表。
    3. 更新总价显示。

4. processPayment() 函数

javascript

function processPayment() {
    const paymentAmount = parseInt(document.getElementById('payment-amount').value);
    const changeMessage = document.getElementById('change-message');
    
    if (isNaN(paymentAmount)) {
        changeMessage.textContent = '请输入有效金额';
        return;
    }
    
    if (paymentAmount < total) {
        changeMessage.textContent = '支付金额不足';
        return;
    }
    
    const change = paymentAmount - total;
    changeMessage.textContent = `找零:¥${change}`;
    
    // 重置购物车
    cart = [];
    total = 0;
    updateCartDisplay();
    document.getElementById('payment-amount').value = '';
}

  • 功能:处理支付操作。
  • 步骤:
    1. 获取用户输入的支付金额。
    2. 检查输入是否为有效数字,若不是则显示错误提示。
    3. 检查支付金额是否足够,若不足则显示错误提示。
    4. 计算找零并显示找零信息。
    5. 清空购物车,重置总价,更新购物车显示,并清空输入框。

分享

在代码说明文档中添加代码中使用的 CSS 样式的具体含义

为上述代码添加一个购物车功能的 JavaScript 脚本说明

说明如何在 HTML 中使用 CSS 样式来设计网页的布局和外观

完整代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>恐龙餐厅菜单</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }
        h1 {
            color: green;
            text-align: center;
            margin-bottom: 30px;
        }
        .menu-item {
            display: flex;
            align-items: center;
            margin-bottom: 20px;
            border-bottom: 1px solid #ddd;
            padding-bottom: 15px;
        }
        .menu-item img {
            width: 100px;
            height: 100px;
            margin-right: 20px;
            border-radius: 10px;
        }
        .item-info {
            flex-grow: 1;
        }
        .item-name {
            font-weight: bold;
            font-size: 18px;
        }
        .item-price {
            color: #e67e22;
            font-size: 16px;
        }
        .cart {
            margin-top: 40px;
            padding: 20px;
            border: 1px solid #ddd;
            border-radius: 10px;
        }
        .cart h2 {
            margin-top: 0;
        }
        .payment {
            margin-top: 20px;
        }
        .payment input {
            padding: 5px;
            margin-right: 10px;
        }
        .payment button {
            padding: 5px 10px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
        }
    </style>
</head>
<body>

    <h1>欢迎来到恐龙餐厅</h1>

    
    <div class="cart">
        <h2>购物车</h2>
        <ul id="cart-items"></ul>
        <p>总价:¥<span id="total-price">0</span></p>
        <div class="payment">
            <input type="number" id="payment-amount" placeholder="输入支付金额">
            <button onclick="processPayment()">支付</button>
        </div>
        <p id="change-message"></p>
    </div>

    <h1>菜单</h1>

        <div class="menu">
            <div class="menu-item" data-price="10">
                <img src="icecream_banana.jpg" alt="冰淇淋香蕉船">
                <div class="item-info">
                    <div class="item-name">冰淇淋香蕉船</div>
                    <div class="item-price">¥10</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="13">
                <img src="dumpling.jpg" alt="韭菜猪肉饺子">
                <div class="item-info">
                    <div class="item-name">韭菜猪肉饺子</div>
                    <div class="item-price">¥13</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="16">
                <img src="pasta.jpg" alt="三文鱼意大利面">
                <div class="item-info">
                    <div class="item-name">三文鱼意大利面</div>
                    <div class="item-price">¥16</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="16">
                <img src="snail_soup.jpg" alt="法式蜗牛汤">
                <div class="item-info">
                    <div class="item-name">法式蜗牛汤</div>
                    <div class="item-price">¥16</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="23">
                <img src="pizza.jpg" alt="牛肉披萨">
                <div class="item-info">
                    <div class="item-name">牛肉披萨</div>
                    <div class="item-price">¥23</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="5">
                <img src="tomato_egg.jpg" alt="西红柿炒鸡蛋">
                <div class="item-info">
                    <div class="item-name">西红柿炒鸡蛋</div>
                    <div class="item-price">¥5</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="7">
                <img src="coke_chicken.jpg" alt="可乐鸡翅">
                <div class="item-info">
                    <div class="item-name">可乐鸡翅</div>
                    <div class="item-price">¥7</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="9">
                <img src="dishu_xian.jpg" alt="地三鲜">
                <div class="item-info">
                    <div class="item-name">地三鲜</div>
                    <div class="item-price">¥9</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="9">
                <img src="pineapple_rice.jpg" alt="菠萝炒饭">
                <div class="item-info">
                    <div class="item-name">菠萝炒饭</div>
                    <div class="item-price">¥9</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="9">
                <img src="rainbow_corn.jpg" alt="彩虹玉米粒">
                <div class="item-info">
                    <div class="item-name">彩虹玉米粒</div>
                    <div class="item-price">¥9</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="10">
                <img src="icecream_banana.jpg" alt="冰淇淋香蕉船">
                <div class="item-info">
                    <div class="item-name">冰淇淋香蕉船</div>
                    <div class="item-price">¥10</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="13">
                <img src="dumpling.jpg" alt="韭菜猪肉饺子">
                <div class="item-info">
                    <div class="item-name">韭菜猪肉饺子</div>
                    <div class="item-price">¥13</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="16">
                <img src="pasta.jpg" alt="三文鱼意大利面">
                <div class="item-info">
                    <div class="item-name">三文鱼意大利面</div>
                    <div class="item-price">¥16</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="16">
                <img src="snail_soup.jpg" alt="法式蜗牛汤">
                <div class="item-info">
                    <div class="item-name">法式蜗牛汤</div>
                    <div class="item-price">¥16</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="23">
                <img src="pizza.jpg" alt="牛肉披萨">
                <div class="item-info">
                    <div class="item-name">牛肉披萨</div>
                    <div class="item-price">¥23</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="5">
                <img src="tomato_egg.jpg" alt="西红柿炒鸡蛋">
                <div class="item-info">
                    <div class="item-name">西红柿炒鸡蛋</div>
                    <div class="item-price">¥5</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="7">
                <img src="coke_chicken.jpg" alt="可乐鸡翅">
                <div class="item-info">
                    <div class="item-name">可乐鸡翅</div>
                    <div class="item-price">¥7</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="9">
                <img src="dishu_xian.jpg" alt="地三鲜">
                <div class="item-info">
                    <div class="item-name">地三鲜</div>
                    <div class="item-price">¥9</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="9">
                <img src="pineapple_rice.jpg" alt="菠萝炒饭">
                <div class="item-info">
                    <div class="item-name">菠萝炒饭</div>
                    <div class="item-price">¥9</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        
            <div class="menu-item" data-price="9">
                <img src="rainbow_corn.jpg" alt="彩虹玉米粒">
                <div class="item-info">
                    <div class="item-name">彩虹玉米粒</div>
                    <div class="item-price">¥9</div>
                </div>
                <button onclick="addToCart(this)">点餐</button>
            </div>
        </div>

    </div>

    <script>
        let cart = [];
        let total = 0;

        function addToCart(button) {
            const item = button.parentElement;
            const name = item.querySelector('.item-name').textContent;
            const price = parseInt(item.getAttribute('data-price'));
            
            cart.push({name, price});
            total += price;
            
            updateCartDisplay();
        }

        function updateCartDisplay() {
            const cartItems = document.getElementById('cart-items');
            const totalPrice = document.getElementById('total-price');
            
            cartItems.innerHTML = cart.map(item => 
                `<li>${item.name} - ¥${item.price}</li>`
            ).join('');
            
            totalPrice.textContent = total;
        }

        function processPayment() {
            const paymentAmount = parseInt(document.getElementById('payment-amount').value);
            const changeMessage = document.getElementById('change-message');
            
            if (isNaN(paymentAmount)) {
                changeMessage.textContent = '请输入有效金额';
                return;
            }
            
            if (paymentAmount < total) {
                changeMessage.textContent = '支付金额不足';
                return;
            }
            
            const change = paymentAmount - total;
            changeMessage.textContent = `找零:¥${change}`;
            
            // 重置购物车
            cart = [];
            total = 0;
            updateCartDisplay();
            document.getElementById('payment-amount').value = '';
        }
    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值