html - 使用多个@media (max-width) CSS

标签 html css

我正在尝试制作一个响应式网站,并且正在使用 @media only screen and (max-width:...) & @media only screen and (min-width: ...) 尝试调整所有内容的大小。

在一个div 上使用多个@media 时,它似乎不起作用。

fiddle here将解释我正在尝试做什么。

HTML

<div class="mainNavi2">
  <p> test </p> 
</div>

CSS

@media only screen and (max-width: 800px) {
  .mainNavi2{
    border:1px solid orange; 
  }
}

@media only screen and (min-width: 851) {
  .mainNavi2{
    border:1px solid green;
  }
}

@media only screen and (max-width: 850) {
  .mainNavi2{
    border:1px solid blue;
  }
}

我基本上想做的是:

  • when the screen is at 800px (or less), an orange border will be displayed
  • for width of 850px (or less) a blue border will be displayed
  • for a width of 851 (or more) a green border will be displayed.

它们都是单独工作的,但是当它们放在一起时,只有 max-width:800px 可以工作。

最佳答案

由于媒体查询的顺序,橙色被蓝色覆盖了。重新排列它们就可以了:

@media only screen and (max-width: 850px) {
    .mainNavi2 {
        border:1px solid blue;
    }
}
@media only screen and (max-width: 800px) {
    .mainNavi2 {
        border:1px solid orange;
    }
}
@media only screen and (min-width: 851px) {
    .mainNavi2 {
        border:1px solid green;
    }
}

Demo

更好的方法可能是效仿 Bootstrap 的做法,以移动为先,仅使用递增的 min-width 语句:

.mainNavi2 {
    border:1px solid orange;
}
@media only screen and (min-width: 801px) {
    .mainNavi2 {
        border:1px solid blue;
    }
}
@media only screen and (min-width: 851px) {
    .mainNavi2 {
        border:1px solid green;
    }
}

Demo 2

关于html - 使用多个@media (max-width) CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31294681/

相关文章:

html - CSS 背景滤镜模糊效果在 Chrome 中未对齐

html - 如何在字母周围画一个圆圈?

javascript - 是否可以限制自动完成框的行数?

javascript - 为什么此代码在 Safari 中有效,但在 Chrome 中无效?啊啊

php - 左右划分php mysql结果

css 过渡_没有_悬停?

html - css 关键帧垂直旋转单词

javascript - ColdFusion:修改 cfgrid 中的组合框选项

javascript - 如何修改指令中 ng-repeat 创建的每个元素的单独范围?

javascript - 最初放入 Bootstrap 容器中的没有预定义宽度的固定元素不会从父级继承宽度