1. <body>
    2. <div class="container">
    3. <div class="box">
    4. <img src="./1.png" alt="" />
    5. <p>接触动物和动物产品后,要用肥皂和水洗手</p>
    6. </div>
    7. <div class="box">
    8. <img src="./2.png" alt="" />
    9. <p>咳嗽和打喷嚏时,用弯曲的肘部或纸巾捂住口鼻</p>
    10. </div>
    11. <div class="box">
    12. <img src="./3.png" alt="" />
    13. <p>如果发烧和咳嗽,避免旅行</p>
    14. </div>
    15. <div class="box">
    16. <img src="./4.png" alt="" />
    17. <p>如果发烧,咳嗽和呼吸困难,请尽早就医</p>
    18. </div>
    19. <!-- <div class="box">
    20. <img src="./5.png" alt="">
    21. <p>如果您咳嗽或打喷嚏,请戴上口罩,并且必须知道如何使用并妥善处理</p>
    22. </div> -->
    23. <div class="box">
    24. <div class="title">瀑布流布局</div>
    25. <p class="sub-title">仅仅使用 CSS Grid</p>
    26. </div>
    27. <div class="box">
    28. <img src="./6.png" alt="" />
    29. <p>只吃煮熟的食</p>
    30. </div>
    31. <div class="box">
    32. <img src="./7.png" alt="" />
    33. <p>避免与生病的动物密切接触</p>
    34. </div>
    35. </div>
    36. </body>
    1. *{
    2. margin: 0;
    3. padding: 0;
    4. box-sizing: border-box;
    5. font-family: '微软雅黑', sans-serif;
    6. }
    7. body{
    8. display: flex;
    9. align-items: center;
    10. justify-content: center;
    11. min-height: 100vh;
    12. background: #222;
    13. }
    14. body img{
    15. max-width: 128px;
    16. }
    17. .container{
    18. position: relative;
    19. max-width: 100%;
    20. display: grid;
    21. grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    22. grid-template-rows: minmax(100px, auto);
    23. grid-auto-flow: dense;
    24. margin: 40px;
    25. grid-gap: 10px;
    26. }
    27. .container .box{
    28. background: #333;
    29. padding: 20px;
    30. display: grid;
    31. font-size: 20px;
    32. place-items: center;
    33. text-align: center;
    34. color: #fff;
    35. transition: 0.5s;
    36. }
    37. .container .box:hover{
    38. background: #e91e63;
    39. }
    40. .container .box img{
    41. position: relative;
    42. max-width: 100px;
    43. margin-bottom: 10px;
    44. }
    45. .container .box:nth-child(1){
    46. grid-column: span 2;
    47. grid-row: span 1;
    48. }
    49. .container .box:nth-child(2){
    50. grid-column: span 1;
    51. grid-row: span 2;
    52. }
    53. .container .box:nth-child(4){
    54. grid-column: span 1;
    55. grid-row: span 3;
    56. }
    57. .container .box:nth-child(5){
    58. grid-column: span 3;
    59. grid-row: span 2;
    60. }
    61. @media (max-width: 991px) {
    62. .container{
    63. grid-template-columns: repeat(auto-fill, minmax(50%, 1fr));
    64. grid-template-rows: minmax(auto, auto);
    65. }
    66. .container .box{
    67. grid-column: unset !important;
    68. grid-row: unset !important;
    69. }
    70. }
    71. .title{
    72. font-family: "League-Gothic", Courier;
    73. font-size: 60px;
    74. text-transform: uppercase;
    75. color: #fff;
    76. text-shadow: 0 0 20px #fefcc9, 10px -10px 30px #feec85, -20px -20px 40px #ffae34, 20px -40px 50px #ec760c, -20px -60px 60px #cd4606, 0 -80px 70px #973716, 10px -90px 80px #451b0e;
    77. }
    78. .sub-title{
    79. font-size: 20px;
    80. text-shadow: 0 0 10px #fff, 0 0 20px #fff, 0 0 30px #fff, 0 0 40px #ff00de, 0 0 70px #ff00de, 0 0 80px #ff00de, 0 0 100px #ff00de, 0 0 150px #ff00de;
    81. }

    关键点:
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    grid-template-rows: minmax(100px, auto);
    image.png
    这是实现自适应的第一步

    image.png
    这部分,用于自适应控制大小
    配合: grid-auto-flow: dense;
    image.png
    实现自动填充

    最后:
    @media (max-width: 991px) {
    .container{
    grid-template-columns: repeat(auto-fill, minmax(50%, 1fr));
    grid-template-rows: minmax(auto, auto);
    }
    .container .box{
    grid-column: unset !important;
    grid-row: unset !important;
    }
    }
    用于实现响应式