【问题标题】:Why are my media queries not applying?为什么我的媒体查询不适用?
【发布时间】:2015-08-07 04:13:20
【问题描述】:

编辑添加,所以没有其他人将此作为答案发布:我的代码中已经有一个视口标签。


我已经阅读了这里对类似问题的许多回复,我确信我的问题可能在于我的查询声明的顺序中的某个地方,但我终其一生都无法弄清楚在哪里。

Bootply example here.

我有两个 div,一个应该在宽布局中显示,一个应该在窄布局中显示。

<!-- for small layouts -->
<div class="container-fluid slogan text-center" id="home-slogan-container-small">
   small
</div>

<!-- for 800 px and wider -->
<div class="container-fluid slogan text-center" id="home-slogan-container-large">
   large
</div>

(这些非常精简;实际内容在 div 内具有不同的布局。)

我遇到的问题是,无论我将浏览器缩放到什么大小(在 FF 中使用 ctrl-shift-m 进行测试以获得移动视图,并在 Chrome 中使用开发工具中的移动视图按钮进行测试),小布局显示。

这是我的 CSS:

#home-slogan-container-small {
    padding-top: 15px;
    text-align: center !important;
    display: none;
}

#home-slogan-container-large {
    padding-top: 15px;
    text-align: center !important;
    display: none;
}


@media only screen and (max-width: 1500px) {
        #home-slogan-container-small { display: none !important;}
        #home-slogan-container-large { display: block !important;}
}

@media only screen and (max-width: 1200px) {
    #home-slogan-container-small { display: none !important;}
    #home-slogan-container-large { display: block !important;}
}


@media only screen and (max-width: 960px) {
    #home-slogan-container-small { display: none !important;}
    #home-slogan-container-large { display: block !important;}
}

@media only screen and (max-width: 800px) {
    #home-slogan-container-small { display: block !important;}
    #home-slogan-container-large { display: none !important;}
}


@media only screen and (max-width: 799px) {
    #home-slogan-container-small { display: block !important;}
    #home-slogan-container-large { display: none !important;}
}

@media only screen and (max-width: 420px) {
    #home-slogan-container-small { display: block !important;}
    #home-slogan-container-large { display: none !important;}
}

@media only screen and (min-width: 300px) {
    #home-slogan-container-small { display: block !important;}
    #home-slogan-container-large { display: none !important;}
}

我是一名 PHP/mySQL 开发人员,我有一个引导站点。 CSS 不是我的强项。任何解释将不胜感激。

【问题讨论】:

    标签: php html css media-queries


    【解决方案1】:

    问题出在这里

    @media only screen and (min-width: 300px) {
        #home-slogan-container-small { display: block !important;}
        #home-slogan-container-large { display: none !important;}
    }
    

    它是 min-width... 意味着任何宽度大于该宽度的东西(例如所有浏览器)都将具有这些属性。把它改成 max-width 就好了。


    编辑:以下所有内容都是正确的,但不是@EmmyS 问题的原因。解决方法如上。

    我最近遇到了 Foundation 的这个问题,我怀疑 bootstrap 也有这个问题。您的 html 可能缺少元声明:

    <meta name="viewport" content="width=device-width, initial-scale=1">
    

    将它添加到 HTML 的头部,它可能会正常工作。你遇到这个问题的原因是因为移动浏览器决定“好吧,我不知道如何显示这个网站,所以我要像我是一个大浏览器一样缩放它,即使我是不是。”

    【讨论】:

    • 不,恰恰相反——它就像一个小型浏览器一样缩放它,即使它不是。而且我的 html 中确实有 viewport 标签。
    • 没错。编辑了我的答案以找出你的根本原因......我读你的问题太快了!
    【解决方案2】:

    你必须删除最后一个媒体查询

    @media only screen and (min-width: 300px) {
       #home-slogan-container-small { display: block !important;}
       #home-slogan-container-large { display: none !important;}
    }
    

    原因是,这最后一个是唯一具有最小宽度规则的,并且推翻了之前的所有规则(wieport

    【讨论】:

    • 谢谢!不知道我是怎么错过的。
    【解决方案3】:

    像这样重写所有样式:

    /* Styles for size 0px - 799px */
    .small {
      display: block;
    }
    
    .middle {
      display: none;
    }
    
    .large {
      display: none;
    }
    
    /* Styles for size 800px - 1200px */
    @media (min-width: 800px) {
      .small {
        display: none;
      }
    
      .middle {
        display: block;
      }
    
      .large {
        display: none;
      }
    }
    
    
    /* Styles for size 1200px and more */
    @media (min-width: 1200px) {
      .small {
        display: none;
      }
    
      .middle {
        display: none;
      }
    
      .large {
        display: block;
      }
    }
    

    我选择了 800px 和 1200px 作为断点。您可以修改它们或添加新的。

    【讨论】:

      猜你喜欢
      • 2021-01-02
      • 2016-11-26
      • 2016-07-29
      • 2021-03-02
      相关资源
      最近更新 更多