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

使用Media Query后移动端背景图不显示,求问题排查

移动端Media Query背景图无法显示排查求助

我是一名正在学习HTML和CSS的新手,目前在开发项目中使用Media Query。先完成了桌面版开发(相对简单),但开发移动端时,设置的背景图无法显示(图片路径已确认正确)。尝试多种方法无果,附上代码求帮忙排查错误。

HTML代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- displays site properly based on user's device -->

  <link rel="icon" type="image/png" sizes="32x32" href="./images/favicon-32x32.png">
  <link rel="stylesheet" href="styles.css">
  <!--fonts styles-->
  <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Lexend+Deca&display=swap" rel="stylesheet">

  <title>Frontend Mentor | Stats preview card component</title>
</head>
<body>
  <main class="container">

    <div class="first">
    <!--container for background image-->
    </div>

    <div class="second">
    <h1>Get <span>insights</span> that help your business grow.</h1>
    <p>Discover the benefits of data analytics and make better decisions regarding revenue, customer 
    experience, and overall efficiency.</p>
    <div class="stats">
      <dl>
        <div>
          <dt>10k+</dt>
          <dd>companies</dd>
        </div>

        <div>
          <dt>314</dt>
          <dd>templates</dd>
        </div>

        <div>
          <dt>12M+</dt>
          <dd>queries</dd>
        </div>

      </dl>
   </div>
   </div>
  </main>
</body>
</html>

CSS代码

/* Base styles */
* {
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

html {
    font-size: 15px;
}
/*Card Styles*/
body {
    background-color:hsl(233, 47%, 7%);
    font-family: 'Inter', sans-serif;
    font-weight: 400;
}

main {
    width: 80%;
    margin: 1.5em;
    background-color: hsl(244, 38%, 16%);
    display: grid;
    grid-template-columns: 1fr 1fr;
    margin: 8.5em auto;
    border-radius: 6px;
}

.first {
    background-image:url('images/image-header-desktop.jpg');
    background-color:  hsl(277, 64%, 61%);
    background-blend-mode: multiply;
    order: 1;
}
.second {
    padding: 3em;
}

h1 {
    color: hsl(0, 0%, 100%);
    width: 350px;
}

h1 > span {
    color:  hsl(277, 64%, 61%);
}

p {
    color: hsla(0, 0%, 100%, 0.75);
    margin-top: 1em;
    width: 400px;

    font-family: 'Lexend Deca', sans-serif;
    font-weight: 400;

    line-height: 1.4;

}

dl {
    margin-top: 3em;
    display: flex;
    justify-content: space-between;
}
dl dt {
    color: hsl(0, 0%, 100%);

    font-weight: 700;
    font-size: 1.25rem;
}

dl dd {
    font-variant-caps: all-petite-caps;
    color: hsla(0, 0%, 100%, 0.6);
}

/*media query styles */
@media(max-width:480px) {
    body {
        min-height: 100vh;
        padding: 0.5em;
    }
    main {
        width: 100%;
        grid-template-columns: 1fr;
    }
    .first {
        background-image: url('images/image-header-mobile.jpg');
        background-color:  hsl(277, 64%, 61%);
        background-blend-mode: multiply;
    }
}

问题排查与修复方案

核心问题:容器无高度导致背景图无法显示

桌面版中,.first作为网格项,高度由旁边.second的内容撑开,所以背景图能正常显示。但移动端改成单列网格后,.first是空容器,没有设置高度,自然无法展示背景图。

修复步骤:

  1. 给.first添加背景适配与高度属性
    无论是桌面还是移动端,都需要确保背景图能适配容器,同时给容器设置高度:

    .first {
        background-image:url('images/image-header-desktop.jpg');
        background-color:  hsl(277, 64%, 61%);
        background-blend-mode: multiply;
        order: 1;
        /* 新增:让背景图铺满容器 */
        background-size: cover;
        background-position: center;
        height: 100%; /* 桌面版继承网格项高度 */
    }
    
    @media(max-width:480px) {
        .first {
            background-image: url('images/image-header-mobile.jpg');
            /* 新增:移动端设置最小高度,确保图片显示 */
            min-height: 250px;
            background-size: cover;
            background-position: center;
            order: 0; /* 移动端把图片放在内容前更符合布局逻辑 */
        }
    }
    
  2. 修复移动端文本溢出问题
    当前h1和p设置了固定宽度,移动端会超出容器,改成自适应宽度并居中:

    @media(max-width:480px) {
        h1 {
            width: auto;
            text-align: center;
        }
        p {
            width: auto;
            text-align: center;
            line-height: 1.6;
        }
        dl {
            flex-direction: column;
            align-items: center;
            gap: 1.5em;
        }
        .second {
            padding: 2em;
        }
    }
    
  3. 清理网格布局的边距冲突
    桌面版main同时设置了margin: 1.5em和margin: 8.5em auto,后者会覆盖前者,统一保留后者即可,再加上overflow: hidden确保背景图不会超出容器圆角:

    main {
        width: 80%;
        background-color: hsl(244, 38%, 16%);
        display: grid;
        grid-template-columns: 1fr 1fr;
        margin: 8.5em auto;
        border-radius: 6px;
        overflow: hidden; /* 新增:隐藏超出圆角的内容 */
    }
    

内容的提问来源于stack exchange,提问作者Adebimpe Abdulhamid Eniola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 05:33:24