使用媒体查询后,如何使背景图像显示在代码的移动版本中?

How can i make background image show in mobile version of my code after using media query?

提问人:Adebimpe Abdulhamid Eniola 提问时间:10/21/2023 最后编辑:Mark SchultheissAdebimpe Abdulhamid Eniola 更新时间:10/22/2023 访问量:80

问:

我是学习HTML和CSS的初学者。我目前正在做一个项目,我正在使用媒体查询。我首先设计了桌面版本,因为这对我来说看起来更容易。那么为什么要设计移动版,我不明白为什么移动版不显示背景图片(而且拍打背景图片非常正确)。我已经尽力了,这就是为什么我决定上台提问。这是我的代码,请我想知道我的错误。

<!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>
/* 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;
    }


}

请任何帮助将不胜感激。

我想在代码的移动版本中显示背景图像,但它没有显示

HTML CSS 媒体查询 background-image 前端优化

评论


答:

1赞 iorgv 10/21/2023 #1

您必须为 .first 指定最小高度才能显示图像。 您可以根据需要调整值。

在桌面上,有一个特定的空间,内容(带高度)可以看到。min-height 用于在移动设备上增加该“空间”,因为它是 0,并且是响应式的,但您可以定义一个简单的高度

移动设备上的方向通常是纵向的。内容是垂直放置的,而不是水平放置的。因此,应用适应这种风格的风格会更好。

实际上,我们必须将样式从列(水平)更改为行(垂直)。

也就是说,我们添加(或者更好的是:)来重置“水平”值,并添加以定义垂直位置。grid-template-columns: auto;grid-template-columns: initial;grid-template-rows: 1fr 1fr;

是 的默认状态,当我们将其放在媒体查询下时,会更改继承的值,即 。然后,我们必须使用 定义元素的新状态,如下所示:autogrid-template-columns480pxgrid-template-columns: 1fr 1frmaingrid-template-rows: 1fr 1fr;

/* 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: auto; /*to disable the inheritance*/
    grid-template-rows: 1fr 1fr;
  }
  .first {
    background-image: url('https://picsum.photos/200/300'); /*for demonstration purpose, can be anything else*/
    background-color: hsl(277, 64%, 61%);
    background-blend-mode: multiply;
    /*min-height: 300px;*/
  }
}
<!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>

评论

0赞 Adebimpe Abdulhamid Eniola 10/21/2023
谢谢。但是在桌面版本中,我没有使用任何最小高度,它可以工作为什么它不适用于移动版本?还必须是最小高度,为什么不是其他属性,例如高度?
0赞 iorgv 10/21/2023
不客气。我已经更新了我的答案。
0赞 Adebimpe Abdulhamid Eniola 10/21/2023
我还是不明白,先生。我不仅想应用修复程序,还想从中学习
0赞 iorgv 10/22/2023
我已经更新了我的答案,以更好地满足你的好奇心。我希望它现在更有意义。添加只是一个表面修复,它不是正确的解决方案。height
0赞 Adebimpe Abdulhamid Eniola 10/22/2023
谢谢。当我第一次阅读更新的解决方案时,我想知道添加 grid-template-columns 的本质是什么,因为我们使用的值是“auto”。但是当我在没有 grid-template-columns: auto 的情况下尝试它时,图像没有显示,但添加 grid-template-columns:auto 会使图像出现。请先生,您能解释一下原因吗,不要介意我的好奇心?