为啥@media 查询不改变特定屏幕尺寸上的元素?

Posted

技术标签:

【中文标题】为啥@media 查询不改变特定屏幕尺寸上的元素?【英文标题】:Why doesn't the @media query change elements on particular screen sizes?为什么@media 查询不改变特定屏幕尺寸上的元素? 【发布时间】:2016-12-14 08:39:48 【问题描述】:

在 Bootstrap 3 中使用@media 查询。以下查询结构在查看教程时多次出现。但是,我仍然遇到问题。

min-width: 1200px 正确渲染字体大小(92px)和背景(红色),min-width: 992px 正确渲染字体大小(48px)和背景(绿色)。

但是,当我低于这两个 min-width: 768px 和 max-width: 768px 时,它们的属性不会应用于元素。感谢任何帮助!

    @media(max-width:767px)
      .jumbotron h1 
        font-size: 12px;
      
    
       body 
        background: yellow;
      
    
    
    @media(min-width:768px)
      .jumbotron h1 
        font-size: 24px;
      
    
       body 
        background: blue;
      
    
    
    
    @media(min-width:992px)
      .jumbotron h1 
        font-size: 48px;
      
    
       body 
        background: green;
      
    
    
    @media(min-width:1200px)
      .jumbotron h1 
        font-size: 92px;
      
    
      body 
        background: red;
      
    
<body>
  <p class="jumbotron">
    <h1>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</h1>
  </p>
</body>

【问题讨论】:

你在哪些浏览器中测试过这个? @Miloshio 在 Chrome 和 Firefox 中都以这种方式呈现,在 IE 11 中根本不起作用。 @lookininward 媒体查询按预期工作。我可以在较小的屏幕尺寸上看到黄色和蓝色背景。请检查问题中的 sn-p。 @feeela 这很奇怪。一旦我点击:@media(min-width:768px) .jumbotron h1 font-size: 24px; 身体 背景:蓝色; 它默认为白色背景。 @lookininward 我看不到您描述的行为。也许应用了其他一些样式表,这不是这个问题的一部分? 【参考方案1】:

唯一的问题是段落中有标题。更多信息请参考这个问题:Should a heading be inside or outside a <p>?

简而言之,标题不能在段落中。如果您希望获得相同的结果但没有遇到此问题,请改用 span

@media(max-width:767px)
      .jumbotron span 
        font-size: 12px;
      
    
       body 
        background: yellow;
      
    
    
    @media(min-width:768px)
      .jumbotron span 
        font-size: 24px;
      
    
       body 
        background: blue;
      
    
    
    
    @media(min-width:992px)
      .jumbotron span 
        font-size: 48px;
      
    
       body 
        background: green;
      
    
    
    @media(min-width:1200px)
      .jumbotron span 
        font-size: 92px;
      
    
      body 
        background: red;
      
    
<body>
  <p class="jumbotron">
    <span>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</span>
  </p>
</body>

【讨论】:

或者,只使用&lt;div class="jumbotron"&gt; 而不是&lt;p&gt; 这是正确的,但考虑到 OP 可能希望在没有 的情况下换行,我选择了跨度。 这实际上是违反直觉的。使用div,OP 可以在其中使用多个段落,但使用p 标签,他们可以使用&lt;br/&gt;,因为其他任何内容都是无效的。

以上是关于为啥@media 查询不改变特定屏幕尺寸上的元素?的主要内容,如果未能解决你的问题,请参考以下文章

css @media screen 不能完全工作

关于css3媒体查询Media的一些用法小结

如果宽度大于屏幕尺寸,iOS/Android 上的高度也会改变(约束问题)

CSS高级篇——媒体查询 (Media Queries)

CSS高级篇——媒体查询 (Media Queries)

CSS高级篇——媒体查询 (Media Queries)