React项目如何通过flex/grid实现一行展示3个卡片组件

问题点
- CSS类选择器遗漏
.前缀,.cards样式完全未生效 - 每个
Card组件自带独立的.cards容器,每个容器仅包含1张卡片,自然只能单行展示1个 - flex布局未配置
flex-wrap: wrap,卡片无法自动换行 - 组件导入导出命名不一致,存在渲染异常隐患
修正代码
Card组件
import React from "react"; import "../index.css"; const Card = (props) => { return ( <div className="card"> <img src={props.imgSrc} alt="Dark" className="card-img" /> <div className="card-info"> <span className="card-category">{props.cat}</span> <h3 className="card-title">{props.title}</h3> <a href={props.link}> <button>watch now</button> </a> </div> </div> ); }; export { Card };
入口文件
import React from "react"; import ReactDOM from "react-dom"; import { Card } from "./learningReact/Cards"; // 可替换为实际业务数据 const cardData = [ {imgSrc: "图片地址1", cat: "分类1", title: "标题1", link: "跳转地址1"}, {imgSrc: "图片地址2", cat: "分类2", title: "标题2", link: "跳转地址2"}, {imgSrc: "图片地址3", cat: "分类3", title: "标题3", link: "跳转地址3"}, // 可继续添加更多卡片数据 ] ReactDOM.render( <div className="cards"> {cardData.map((item, idx) => <Card key={idx} {...item} />)} </div>, document.getElementById("root") );
CSS样式
.cards { display: flex; flex-wrap: wrap; justify-content: center; align-items: flex-start; gap: 20px; margin: 100px auto; max-width: 830px; /* 250px*3 + 20px*4 刚好容纳3张卡片加左右留白,可自行调整 */ } .card { width: 250px; height: 300px; border: none; background: rgb(248, 239, 248); border-radius: 10px; transition: transform 0.3s ease; /* 可选:添加过渡让hover效果更顺滑 */ } .card img { width: 250px; height: 200px; border-top-left-radius: 10px; border-top-right-radius: 10px; } .card:hover { transform: scale(1.1); }
内容的提问来源于stack exchange,提问作者sumitkhatrii
相关产品推荐
相关产品推荐

