【问题标题】:Width of div is not applied by media query媒体查询不应用 div 的宽度
【发布时间】:2020-04-16 05:05:20
【问题描述】:

我正在尝试使用display:inline-blockfloat:left 方法制作全宽水平菜单。一切正常,除了媒体查询没有应用width:100% 声明。应用了测试颜色,但这表明媒体查询正在工作。

HTML 文档中的相关部分

<nav class="display">
  <!-- Weird comments to prevent space between elements -->
  <div class="navitem">Section 1</div><!--
  --><div class="navitem">Section 2</div><!--
  --><div class="navitem">Section 3</div><!--
  --><div class="navitem">Section 4</div>
</nav>

<nav class="float">
  <div class="navitem">Section 1</div>
  <div class="navitem">Section 2</div>
  <div class="navitem">Section 3</div>
  <div class="navitem">Section 4</div>
</nav>

样式表中的相关部分

.display .navitem {
  display: inline-block;
  width: 25%;
}

.float .navitem {
  float: left;
  width: 25%;
}

.float::after {
  clear: left;
  content: "";
  display: table;
}

@media screen and (max-width:800px) {
  .navitem {
    width: 100%;
    color: blue;
  }
}

我已经尝试了一个小时,但无法弄清楚为什么宽度不会改变。我错过了什么?

完整代码:jsfiddle.net

【问题讨论】:

    标签: html css css-float width


    【解决方案1】:

    你可以使用 display:flex

    html

      <nav>
        <div>Section 1</div>
        <div>Section 2</div>
        <div>Section 3</div>
        <div>Section 4</div>
      </nav>
    

    css

    nav > div {
      flex: none;
      color: black;
    }
    
    @media screen and (min-width:800px) {
    
      nav {
        display: flex;
      }
    
      nav > div {
        flex: 1;
        color: blue;
      }
    }
    

    https://jsfiddle.net/z7w2ms34/

    【讨论】:

    • 谢谢,但我想了解为什么我的代码不能按预期工作。
    • 因为您在一个实例中将样式应用于 .float .navitem ,然后在第二个实例中仅应用于 .navitem 。如果您将媒体查询中的 100% 宽度应用于 .float .navitem ,则它可以工作。你有这样的造型吗?它似乎过于复杂,而不是您希望如何将任何东西投入生产。 jsfiddle.net/7jqemaLk
    • 解决了!我从没想过 .navitem 还不够,因为我认为它与普通选择器一样工作。该代码仅用于学习如何使用不同方法创建菜单。感谢您找到解决方案!
    • 我发现在指定嵌套选择器时需要小心,否则最终会丢失它们。在您学习时,下面的人为您提出了一个很好的观点 - 先做移动设备并使用媒体查询来设置更大的视口样式。
    【解决方案2】:

    您应该使用移动优先的方法来设置媒体查询。另外,请确保.navitemdisplay 属性未设置为inline,否则您将无法对其应用宽度。

    .display .navitem {
      border: 1px solid #ccc;
      color: blue;
      display: inline-block;
      width: 100%;
    }
    
    .float .navitem {
      border: 1px solid #ccc;
      color: blue;
      float: left;
      width: 100%;
    }
    
    @media screen and (min-width: 800px) {
      .display .navitem,
      .float .navitem {
        color: black;
        width: 25%;
      }
    }
    

    【讨论】:

    • 我试过你的答案,但它不起作用。关于能够应用宽度,是的,两个 div 都可以使用它,因为它们分别是 inline-block 和 block (默认)。我的媒体查询也可以正常工作,如颜色变化所示,唯一的问题是为什么不应用 width:100%。
    猜你喜欢
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 2014-12-04
    • 2018-06-28
    • 2013-07-25
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多