css 如何打造大屏3栏、移动的2栏的React式画廊?

ruyhziif  于 2023-03-14  发布在  React
关注(0)|答案(2)|浏览(99)

本质上,我试图通过 Bootstrap 创建一个图片库,在大屏幕上有3列,在移动的上有2列。我想保持每张图片的长宽比,但有一个固定的宽度,以便它们在列内对齐。我是一个新手,但我设法实现了大屏幕上的外观。当它在移动设备上时,问题来了。虽然它确实遵循预期的格式,最后一列基本上只是堆叠在第一列下面。我想我可能需要重做我的整个方法,因为我想图像基本上填补了任何可用的空间。我已经尝试了其他类似的职位在这里,但问题是,他们的图像有类似的长宽比。解决方案可能不是 Bootstrap ,但我不知道确切的地方继续下去。
这是我的尝试:

<div class="container">
        <div class="row">
            <div class="break"></div>
            <h4 class="headline text-center">illustrations.</h4>
            <div class="break"></div>
            <div class="col-md-4 fcontainer">
                <div class="row iframe">
                    <img class="item" src="Assets/Illustrations/Test3.jpg" alt="Test6">
                </div>
                <div class="row iframe">
                    <img class="item" src="Assets/Illustrations/Test4.jpg" alt="Test5">
                </div>
                <div class="row iframe">
                    <img class="item" src="Assets/Illustrations/Test6.jpg" alt="Test4">
                </div>
                <div class="row iframe">
                    <img class="item" src="Assets/Illustrations/Test1.jpg" alt="Test3">
                </div>
                <div class="row iframe">
                    <img class="item" src="Assets/Illustrations/Test5.jpg" alt="Test2">
                </div>
                <div class="row iframe">
                    <img class="item" src="Assets/Illustrations/Test2.jpg" alt="Test1">
                </div>
            </div>
            <--! multiply above div 2 more times for 3 columns -->
        </div>
    </div>
    <div class="break"></div>
ngynwnxp

ngynwnxp1#

col-4用于移动的显示器,col-md-6用于其他大屏幕显示器。https://getbootstrap.com/docs/5.3/layout/grid/#grid-options

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://getbootstrap.com/docs/5.3/assets/css/docs.css" rel="stylesheet">
    <title>Bootstrap Example</title>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
  </head>
  <body class="p-3 m-0 border-0 bd-example bd-example-row">

    <!-- Example Code -->
    
    <div class="container text-center">
      <div class="row">
        <div class="col-4 col-md-6">col-sm-4</div>
        <div class="col-4 col-md-6">col-sm-4</div>
        <div class="col-4 col-md-6">col-sm-4</div>

        <div class="col-4 col-md-6">col-sm-4</div>
        <div class="col-4 col-md-6">col-sm-4</div>
        <div class="col-4 col-md-6">col-sm-4</div>
      
      </div>
    </div>
    
    <!-- End Example Code -->
  </body>
</html>
holgip5t

holgip5t2#

这是纯粹的css而不是bootstrap。希望这有帮助。如果你有任何问题,请在下面评论。

html { font-size: 22px; }
body { padding: 1rem; }

.card {
  background-color: dodgerblue;
  color: white;
  padding: 1rem;
  height: 4rem;
}

.cards {
  max-width: 1200px;
  margin: 0 auto;
  display: grid;
  gap: 1rem;
  grid-template-columns: repeat(3, 1fr)
}
   
@media (max-width: 600px) {
  .cards { grid-template-columns: repeat(2, 1fr); 
}
<div class="cards">
  <div class="card">ONE</div>
  <div class="card">TWO</div>
  <div class="card">THREE</div>
  <div class="card">FOUR</div>
  <div class="card">FIVE</div>
  <div class="card">SIX</div>
  <div class="card">SEVEN</div>
  <div class="card">EIGHT</div>
  <div class="card">NINE</div>
  <div class="card">TEN</div>
  <div class="card">ELEVEN</div>
  <div class="card">TWELVE</div>
</div>

使用media queries可自定义个性化屏幕尺寸

@media (max-width: 600px) {
  .cards { grid-template-columns: repeat(2, 1fr); 
}

相关问题