【问题标题】:Grid won't stack columns when resizing using media query使用媒体查询调整大小时,网格不会堆叠列
【发布时间】:2020-07-18 02:30:15
【问题描述】:

当使用媒体查询调整大小低于 500 像素时,我的网格不会堆叠列。我的目标是在调整大小后让列堆叠并居中,以便移动友好。我知道当前的媒体查询正在工作,因为当背景低于 500 像素时,背景会变为蓝绿色,但网格不会像我期望的那样改变。

body {
  margin: 0;
}

img {
  max-width: 100%;
}

ul {
  list-style: none;
}

a:link {
  text-decoration: none;
}

.section-3 {
  background-color: #f1f1f1;
  padding-top: .7em;
  padding-bottom: 2em;
  min-height: 50vh;
  margin: 0 auto;
  border-top: 2px solid teal;
  max-width: 100%;
}

.section-3-body {
  text-align: center;
  max-width: 100%;
}

.section-3 .title .meet {
  color: teal;
  border-top: 2px solid teal;
  border-bottom: 2px solid teal;
  border-radius: 4px;
  padding: .7em;
  display: inline-block;
}

.section-3 .grid-container {
  display: grid;
  grid-gap: 2em;
  grid-template-columns: repeat(3, 1fr);
  margin-top: 15px;
  max-width: 100%;
  overflow: hidden;
}

.grid-container>div {
  border: 2px solid #123;
  border-radius: 5px;
  background-color: #ffd8a8;
  padding: 1em;
}

.grid-container h1 {
  size: 12px
}

h3+h3 {
  margin: 0;
}

h1+h3 {
  margin: 0;
}

.section-3 .footer {
  margin-top: 30px;
}

.section-3 .footer .learn-more {
  color: teal;
  padding: .7em;
  border-radius: 14px;
  border: 2px solid teal;
  font-size: 20px;
  font-weight: bold;
}

.section-3 .footer .learn-more:hover {
  background-color: teal;
  color: white;
}

@media screen and (max-width:500px) {
  .grid-container {
    display: grid;
    grid-template-columns: repeat(1, 1fr);
    grid-gap: 1rem;
    background-color: teal;
  }
}
<section class="section-3">
  <div class="section-3-body">
    <div class="title">
      <h1 class="meet">Testing the Testing</h1>
    </div>
    <div class="grid-container">
      <div class="grid-left column">
        <img src="https://unsplash.it/400">
        <h1 class="name">Testing Names Name</h1>
        <h3 class="testing-2">Testing 2</h3>
        <h3 class="testing-3">Testing 3</h3>
        <h3 class="testing-4">Testing 4</h3>
      </div>
      <div class="grid-center column">
        <img src="https://unsplash.it/400">
        <h1 class="name">Testing Names Name</h1>
        <h3 class="testing-2">Testing 2</h3>
        <h3 class="testing-3">Testing 3</h3>
        <h3 class="testing-4">Testing 4</h3>
      </div>
      <div class="grid-right column">
        <img src="https://unsplash.it/400">
        <h1 class="name">Testing Names Name</h1>
        <h3 class="testing-2">Testing 2</h3>
        <h3 class="testing-3">Testing 3</h3>
        <h3 class="testing-4">Testing 4</h3>
      </div>
    </div>
    <div class="footer">
      <a href="#learn" class="learn-more">Test the button</a>
    </div>
  </div>
</section>

【问题讨论】:

    标签: html css media-queries css-grid


    【解决方案1】:

    这是一个特异性问题。

    在你的大屏代码中,容器设置为:

    .section-3 .grid-container {
      display: grid;
      grid-gap: 2em;
      grid-template-columns: repeat(3, 1fr);
      margin-top: 15px;
      max-width: 100%;
      overflow: hidden;
    }
    

    但在小屏幕的媒体查询中,有这样的:

    .grid-container {
      display: grid;
      grid-template-columns: repeat(1, 1fr);
      grid-gap: 1rem;
      background-color: teal;
    }
    

    如您所见,.section-3 .grid-containerspecificity 高于.grid-container,因此媒体查询中的grid-template-columns 无法接管。

    但是,由于其他规则中没有 background-color 属性,所以青色背景会随着媒体查询而生效。

    作为一种解决方案,在媒体查询中使用相同的选择器 (.section-3 .grid-container),以便特异性匹配,并且由于它出现在代码的后面,它可以在触发时接管。

    jsFiddle demo

    【讨论】:

    • 我对特异性逻辑一无所知。非常感谢您通知我并帮助我解决问题!。
    猜你喜欢
    • 2017-06-13
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    相关资源
    最近更新 更多