MST
星途 面试题库

面试题:如何利用CSS Grid网格布局实现响应式布局且保持元素的顺序灵活性?

设计一个响应式页面,在大屏幕上,元素按顺序依次为A、B、C;在小屏幕上,元素顺序变为B、A、C。使用CSS Grid网格布局来实现此需求,要求详细说明实现思路,并给出完整的HTML和CSS代码。
38.0万 热度难度
前端开发CSS

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用CSS Grid布局,通过display: grid将容器设置为网格布局模式。
  2. 利用媒体查询@media来区分大屏幕和小屏幕。
  3. 在大屏幕下,通过grid-template-columns定义列布局,让元素按A、B、C顺序排列。
  4. 在小屏幕下,同样利用grid-template-columns重新定义列布局,使元素顺序变为B、A、C。

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="styles.css">
    <title>Responsive Grid Layout</title>
</head>
<body>
    <div class="container">
        <div class="box" id="A">A</div>
        <div class="box" id="B">B</div>
        <div class="box" id="C">C</div>
    </div>
</body>
</html>

CSS代码

.container {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}

.box {
    background-color: lightblue;
    padding: 20px;
    text-align: center;
    font-size: 20px;
}

/* 大屏幕样式 */
@media (min-width: 768px) {
   .container {
        grid-template-columns: repeat(3, 1fr);
    }
    #A {
        grid-column: 1;
    }
    #B {
        grid-column: 2;
    }
    #C {
        grid-column: 3;
    }
}

/* 小屏幕样式 */
@media (max-width: 767px) {
   .container {
        grid-template-columns: repeat(3, 1fr);
    }
    #A {
        grid-column: 2;
    }
    #B {
        grid-column: 1;
    }
    #C {
        grid-column: 3;
    }
}