You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中使用.map渲染数组时,如何为每个项设置样式并生成独立盒子

实现菜单菜品独立盒子布局方案

一、修改React代码(修复语法问题+拆分菜品结构)

首先要注意React中需用className替代原生HTML的class,同时给每个菜单项添加独立容器类,并为map循环添加唯一key:

import data from "../data";
import "./Food.css"

const Food = () => {
    return (
        <div className="menu-section">
            <h2 className="section-title">Appetizers</h2>
            
            <div className="menu-container">
                {data.appetizers.map((food, index) => {
                    return (
                        <div key={index} className="food-item">                        
                            <div className="food-header">
                                <div className="food-name">{food.name}</div>
                                <div className="food-price">{food.price}</div>
                            </div>
                            <div className="food-description">{food.description}</div>
                            <div className="random-tag">{Math.floor(Math.random() * 10000)}</div>
                        </div>
                    )
                })}
            </div>
        </div>
    );
};

export default Food;

二、编写CSS样式(实现参考图布局)

通过Flex布局实现菜品名称与价格左右对齐,每个菜品作为独立盒子展示:

/* 菜单板块整体容器 */
.menu-section {
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

/* 板块标题样式 */
.section-title {
  text-align: center;
  color: #333;
  margin-bottom: 30px;
  border-bottom: 2px solid #ddd;
  padding-bottom: 10px;
}

/* 菜品列表容器 */
.menu-container {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* 单个菜品独立盒子 */
.food-item {
  padding: 15px;
  background-color: #f9f9f9;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

/* 菜品名称+价格行 */
.food-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.food-name {
  font-weight: bold;
  font-size: 1.1rem;
  color: #222;
}

.food-price {
  font-size: 1rem;
  color: #666;
}

.food-description {
  font-size: 0.9rem;
  color: #555;
  line-height: 1.4;
  margin-bottom: 5px;
}

.random-tag {
  font-size: 0.8rem;
  color: #999;
}

关键说明

  • 每个菜单项通过.food-item类成为独立盒子,添加阴影、圆角增强视觉区分
  • 用Flex布局的.food-header实现名称左对齐、价格右对齐的效果
  • 菜单容器通过flex-direction: column和gap控制菜品垂直间距

内容的提问来源于stack exchange,提问作者Kozan Tys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 08:42:15