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

React中如何实现三张Bootstrap卡片横向并排显示?

实现Bootstrap电影卡片每行3张的横向布局

我正在开发一个结合Java后端与React前端的个人项目,需要用Bootstrap卡片展示电影数据,但目前卡片是垂直排列的,希望实现每行3张的横向布局。尝试过设置display: inline-block等样式,都没有效果。

初始代码

Moviespage.js

function Moviespage() {
  const [title, setTitle] = useState("");
  const [movies, setMovies] = useState([]);

  useEffect(() => {
    loadMovies();
  }, []);

  const loadMovies = () => {
    MovieAPI.getMovies()
      .then((res) => {
        setMovies(res.data.movies);
      })
      .catch((err) => {
        console.log(err);
      });
  };

  const getMoviesByTitle = (title) => {
    MovieAPI.getMoviesByTitle(`${title}`)
      .then((res) => {
        setMovies(res.data.movies);
      })
      .catch((err) => {
        console.log(err);
      });
  };

  const handleSearchChange = (event) => {
    event.preventDefault();
    setTitle(event.target.value);
    getMoviesByTitle(title);
  };

  return (
    <div>
      <Bootstrap.Container>
        <Bootstrap.Form.Control
          style={{ margin: "1% 0 0 0" }}
          type="text"
          placeholder="Search"
          value={title}
          onChange={handleSearchChange}
        />
      </Bootstrap.Container>
      <MovieCardList movies={movies} />
    </div>
  );
}

export default Moviespage;

MovieCardList.js

function MovieCardList(props) {
  return (
    <div>
      {props.movies.map((movie) => (
        <MovieCard key={movie.id} movies={movie}></MovieCard>
      ))}
    </div>
  );
}

export default MovieCardList;

MovieCard.js

function MovieCard(props) {
  return (
    <Bootstrap.Container>
      <Bootstrap.Row>
        <Bootstrap.Col className="col-sm-4">
          <Bootstrap.Card
            className="card-style"
            style={{ margin: "3% 0 0 0" }}
            key={props.movies.id}
          >
            <Bootstrap.Card.Body>
              <Bootstrap.Image src={props.movies.thumbnail} width="100%" />
              <Bootstrap.Card.Title>{props.movies.title}</Bootstrap.Card.Title>
              <Bootstrap.Card.Text>
                {props.movies.releaseYear}
              </Bootstrap.Card.Text>
              <Bootstrap.Card.Text>{props.movies.rating}</Bootstrap.Card.Text>
              <Bootstrap.Card.Text>{props.movies.genre}</Bootstrap.Card.Text>
            </Bootstrap.Card.Body>
          </Bootstrap.Card>
        </Bootstrap.Col>
      </Bootstrap.Row>
    </Bootstrap.Container>
  );
}

export default MovieCard;

问题解决

已经解决卡片布局问题,方法是移除MovieCard.js中的Bootstrap.Container和Bootstrap.Row组件,同时在MovieCardList.js中添加Bootstrap.Row组件统一控制行布局。

修改后的代码

MovieCard.js

return (
    <Bootstrap.Col className="col-sm-4">
        <Bootstrap.Card style={{ margin: "3% 0 0 0", borderColor:"#bbbbbb"}} key={props.movies.id}>
            <Bootstrap.Card.Body>
                <Bootstrap.Image src={props.movies.thumbnail} style={{ width: "100%", height: `calc(1.75 * 322px)`, }} />
                <Bootstrap.Card.Title>{props.movies.title}</Bootstrap.Card.Title>
                <Bootstrap.Card.Text>{props.movies.releaseYear}</Bootstrap.Card.Text>
                <Bootstrap.Card.Text>{props.movies.rating}</Bootstrap.Card.Text>
                <Bootstrap.Card.Text>{props.movies.genre}</Bootstrap.Card.Text>
                <Bootstrap.Card.Text>{props.movies.id}</Bootstrap.Card.Text>
                {
                    localStorage.getItem("user-info").includes('ADMIN') && (
                        <Bootstrap.Button style={{ backgroundColor: "red", borderColor: "gray" }}
                            onClick={handleSubmit}><RiDeleteBin5Fill style={{ backgroundColor: "red" }} /></Bootstrap.Button>
                    )
                }
            </Bootstrap.Card.Body>
        </Bootstrap.Card>
    </Bootstrap.Col>
)
}

MovieCardList.js

return (
    <div>
        <Bootstrap.Row>
            {
                props.movies.map(movie =>
                    <MovieCard key={movie.id} movies={movie}></MovieCard>
                )
            }
        </Bootstrap.Row>
    </div>
)
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:50:33