为什么媒体查询的顺序在 CSS 中很重要?

2023-12-23

最近,我一直在设计响应速度更快的网站,并且经常使用 CSS 媒体查询。我注意到的一种模式是,定义媒体查询的顺序实际上很重要。我没有在每个浏览器中测试它,只是在 Chrome 上测试。这种行为有解释吗?有时,当您的网站无法正常工作并且您不确定是否是查询问题或查询编写顺序的问题时,会让人感到沮丧。

这是一个例子:

HTML

<body>
    <div class="one"><h1>Welcome to my website</h1></div>
    <div class="two"><a href="#">Contact us</a></div>
</body>

CSS:

body{
font-size:1em; /* 16px */
}

.two{margin-top:2em;}



/* Media Queries */

@media (max-width: 480px) {
    .body{font-size: 0.938em;}

}
/* iphone */
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
    body {font-size: 0.938em;}
}
/*if greater than 1280x800*/
@media (min-width: 1200px) {
       .two{margin-top:8em;}
            }
/*1024x600*/
@media (max-height: 600px) {
       .two{margin-top:4em;}
}
/*1920x1024*/
@media (min-height: 1020px) {
       .two{margin-top:9em;}
}
/*1366x768*/
@media (min-height: 750px) and (max-height: 770px) {
       .two{margin-top:7em;}
}

但是,如果我最后编写了 1024x600 的查询,浏览器将忽略它并应用 CSS 开头指定的边距值 (margin-top:2em)。

/* Media Queries - Re-arranged version */

@media (max-width: 480px) {
    .body{font-size: 0.938em;}
}
/* iphone */
@media only screen and (-webkit-min-device-pixel-ratio: 2) {
    body {font-size: 0.938em;}
}
/*if greater than 1280x800*/
@media (min-width: 1200px) {
       .two{margin-top:8em;}
}
/*1920x1024*/
@media (min-height: 1020px) {
       .two{margin-top:9em;}
}
/*1366x768*/
@media (min-height: 750px) and (max-height: 770px) {
       .two{margin-top:7em;}
}
 /*1024x600*/
@media (max-height: 600px) {
       .two{margin-top:4em;}
}

如果我对媒体查询的理解是正确的,那么顺序应该不重要,但看起来确实如此。可能是什么原因?


这是 CSS 设计的——层叠样式表。

这意味着,如果您应用两个与相同元素发生冲突的规则,它将选择最后一个声明的规则,除非第一个规则具有!important标记或更具体(例如html > body与只是body,后者不太具体)。

所以,给定这个 CSS

@media (max-width: 600px) {
  body {
    background: red;
  }
}

@media (max-width: 400px) {
  body {
    background: blue;
  }
}

如果浏览器窗口的宽度为 350 像素,则背景将为蓝色,而使用此 CSS

@media (max-width: 400px) {
  body {
    background: blue;
  }
}

@media (max-width: 600px) {
  body {
    background: red;
  }
}

和相同的窗口宽度,背景将是红色的。两条规则确实匹配,但应用第二条规则,因为它是最后一条规则。

最后,与

@media (max-width: 400px) {
  body {
    background: blue !important;
  }
}

@media (max-width: 600px) {
  body {
    background: red;
  }
}

or

@media (max-width: 400px) {
  html > body {
    background: blue;
  }
}

@media (max-width: 600px) {
  body {
    background: red;
  }
}

背景将为蓝色(窗口宽度为 350 像素)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么媒体查询的顺序在 CSS 中很重要? 的相关文章

  • 为什么使用 iPhone 或 iOS 设备在“iframe”中查看“position:fixed”时不起作用?

    我研究过 stackoverflow 似乎position fixed在 iOS 移动设备的 iframe 中 https stackoverflow com questions 15874910 position fixed and if
  • 使用纯 CSS 创建向上和向下箭头图标或按钮

    我正在尝试使用纯 CSS 且无背景图像创建如下所示的 向上和向下 控制按钮 但是当我在 中添加箭头的CSS时li className after or li className before 主盒子的位置移动了 这是我遇到的问题的小提琴 g
  • 是否可以设置输入文本值的样式?

    我想知道是否可以设置输入框值的样式 such http jsfiddle net aCwhY as
  • CSS3变换:悬停时翻译,带有过渡[重复]

    这个问题在这里已经有答案了 这应该很简单 我的 HTML 中有一堆锚点 如下所示 a href Link 1 a a href Link 2 a a href Link 3 a a href Link 4 a a href Link 5 a
  • 在其他不可滚动的 div 上滚动时如何滚动可滚动的 div?

    我知道这个问题听起来很令人困惑 但这就是我想要做的 在下面的代码片段中 如果用户在绿色 div 上滚动 我希望黄色 div 相应地滚动 就像滚动黄色 div 一样 请注意 黄色 div 有overflow auto 但绿色的则不然 docu
  • 如何将大于整个页面 100% 的元素居中对齐?

    我有一个宽度为 100 的 div 并且隐藏了一个宽度为 3000px 的 div 我希望3000px的div左右均匀地被切断 我会使用背景位置 中心 然而 事情比这更复杂 3000px div 包含 30 100px div 我尝试过在
  • 如何强制折断不可折断的字符串?

    我有一个根据数据库中包含的数据生成的 HTML 页面 数据库有时包含浏览器无法分解的长字符串 因为这些字符串不包含可分解的字符 空格 点 逗号等 有没有办法使用 html css 甚至 javascript 来解决这个问题 看到这个link
  • 在流体设计中将元素的宽度调整为其高度的百分比,反之亦然? [复制]

    这个问题在这里已经有答案了 我正在制作响应式设计 无论屏幕尺寸是什么 它都必须保持其元素的比例 高度与宽度 所以我不知道任何元素的像素大小 并且我只能以 工作 我可以将宽度或高度设置为浏览器大小的百分比 但我不知道如何设置其他属性值 仅使用
  • 引导标签输入宽度

    我正在尝试使用引导程序标签输入 http timschlechter github io bootstrap tagsinput examples 以模态中包含的形式 像这样 div class form group div
  • 使 Material UI Grid 项目的子项拉伸以适合父容器的剩余高度

    1 现状 我有一个包含 4 个网格项的 Material UI 网格容器 每个 Grid 项中都有一个 Typography 组件 其中包含标题和包含一些内容的 Card 如下所示 2 期望的外观 我希望卡片填充网格项目的剩余高度并且不超过
  • 如何防止弹性项目高度因其内容而溢出[重复]

    这个问题在这里已经有答案了 我刚刚开始学习 Flex 到目前为止我印象深刻 但是 我对包含页眉 页脚和三列的全页应用程序遇到了问题 第一列包含一个项目列表 由于我无法为其父级设置固定高度 因此每次列表增长时 它都会将页脚向下推 这是一个带有
  • Twitter bootstrap 3表单水平和单行多个输入列

    我需要将多列输入放在单行中 如下所示 我通过将多个输入分组为一个来做到这一点form group 但是这样我不能使用has error class div class form group div
  • 动态表单标签宽度的 CSS

    我目前正在重构我们的表单控制器之一 以便我们可以将其用于面向公众的网站 目前它正在为表单生成表格布局 但我正在尝试使用 CSS 表单来完成它 我正在尝试重现看起来像这样的东西http www stylephreak com uploads
  • CSS:水平滚动时背景不存在

    好的 我的背景设置如下 HTML div div CONTENT HERE div div CSS container background url image gif content width 800px margin auto 因此
  • 使用deployJava.runApplet来定位特定元素

    经过多年成功维护一个使用旧有的小程序 嵌入Java小程序的方法 我们无法捂住耳朵唱 啦啦啦 不再了 是时候使用 deployJava runApplet 当我使用点击处理程序触发此方法时 此处通过 jQuery 在按钮上使用事件侦听器 但这
  • 如何使用 a-href 标签链接回文件夹? [复制]

    这个问题在这里已经有答案了 好吧 我在文件夹中有一个页面 该页面称为 jobs html 该文件夹简称为 jobs 它是我的 网站 文件夹的子文件夹 在 main 文件夹的主目录中是我的 home html 文件 当我尝试做的时候 a hr
  • 如何为背景图像添加边距?

    我想向背景图像添加边距 以便将其与屏幕中间保持距离 但将其添加到该类中会为整个主体添加边距 body poppage background url Imagenes tip3 png 50 200px no repeat E2E4E9 我怎
  • 如何将送货地址复制到帐单地址

    我想知道是否可以将送货地址复制到帐单地址 当用户单击与送货地址相同的复选框时 送货地址值将被复制到账单输入字段 我完成了大部分部分 但我不确定如何将选择菜单 状态 值复制到帐单地址 我真的很感谢任何帮助 My code document r
  • 悬停时为 SVG 制作动画

    我正在尝试在悬停时为 SVG 文件设置动画 默认情况下 它可以使用 svg 函数实现出色的动画效果 例如
  • 为范围旋钮 ionic-range 添加边框颜色

    我正在使用离子范围添加范围滑块 并想向范围旋钮添加边框 由于它的 ionic4 和范围旋钮是 Shadow dom 的一部分 我无法使用范围旋钮的 border 属性直接更改边框 我已附上我想要实现的图像 范围旋钮周围有白色边框 现有属性只

随机推荐

  • 当使用 nerdctl 代替 docker 时,应该使用什么来代替“host.docker.internal”?

    使用 docker 桌面时 我们将使用 URL host docker internal 从容器连接到主机 但是 当我使用时 容器无法连接到主机 即我的机器 nerdctl https github com containerd nerdc
  • 如何禁用图例单击以阻止饼图切片在 Highcharts 中消失?

    如何禁用图例单击以阻止饼图切片在 Highcharts 中消失 请参阅此处的示例 http www highcharts com demo pie legend http www highcharts com demo pie legend
  • 如何更改 UIImage 的饱和度?

    我有一个 UIImage 想将其饱和度调整大约 10 是否有可用于此目的的标准方法或函数 为此有一个 CoreImage 过滤器 CIColorControls只需设置inputSaturation 1 0 增加饱和度 例如 这是我在类别中
  • GMSMapStyle 未解析的标识符

    我想在 ios 中更改我的谷歌地图样式 为此 我正在尝试实现此代码 GMS地图样式 https developers google com maps documentation ios sdk styling 我正在进口import Goo
  • 如何检查对象是否正在@synchronized

    有时我会编写以下代码来同步例程 synchronized objToBeSync 当两个线程尝试同时访问同步块时 其中一个线程会阻塞其他线程 直到其中一个线程退出同步块 但是 有时我不希望一个对象阻塞另一个对象 但其他对象检查对象是否正在同
  • CSS 中字体大小的最佳单位

    各自的优点和缺点是什么 em px and pt 我当前的选择是百分比 唯一的原因是因为我可以全局更改所有元素的字体大小 只需修改根元素 主体 上的字体大小即可 我会推荐 EM 只是因为我使用 Baseline CSS 来设置基本的表单 布
  • google+ 分享和 onendinteraction - 无需确认

    我正在设置一个 google 分享按钮 并想知道何时有人分享了该链接 以便我可以执行操作 您可以使用以下命令在共享按钮上注册回调onendinteraction属性 并且文档指出 只要共享框关闭以及共享完成 就会调用此函数 我的函数是在窗口
  • Tensorflow 无法工作:无法加载动态库“nvcuda.dll”; dlerror:找不到 nvcuda.dll

    几周前 我安装了适用于 CPU Windows 的 TensorFlow 并且运行良好 然而 今天我尝试为 GPU 安装它 但我的 GPU 不受支持 所以我删除了 GPU 版本并重新安装了 CPU 版本 现在 当我尝试运行一个简单的卷积神经
  • 在 Tomcat 中运行后台 Java 程序 [重复]

    这个问题在这里已经有答案了 有人可以在这里提供建议吗 我遇到过这样的情况 用户将通过 Java JSP 和 servlet 以交互方式向我的应用程序提交数据挖掘请求 该应用程序将动态计算出数据等的关联规则 由于这样的工作可能需要一段时间 我
  • PHP 中的分段错误(核心转储)

    好的 我正在 Ubuntu 上的命令行上运行 PHP 应用程序 它以 分段错误 核心转储 结束 我该如何从这里开始调试它 我很确定没有内存泄漏 因为我已经使用 get memory usage 检查过它 编辑 好吧 正如 Brendan 和
  • 什么决定(如何配置)php PDO 驱动程序对日期和时间戳字段的值使用什么格式字符串?

    我有 Firebird 3 0 数据库 其中包含日期和时间戳字段 并且我正在使用 interbase 扩展 是的 仍然是 interbase 和 PHP 7 x 中的 Yii2 框架 我有 Yii 代码 Yii app gt db gt c
  • Rails - 删除未保存的关联记录

    假设我有一个包含很多文章的用户模型 如果我多次调用 user articles new 我将有许多与该用户关联的未保存的文章对象 当您运行 user articles 时 它们是可见的 调用 user save 将保存所有未保存的记录 如何
  • 使用 LINQ 展平分层数据集 - 但需要注意

    我有以下数据集 需要将其展平为列表
  • Java 中的 RegEx:如何处理换行符

    我目前正在尝试学习如何使用正则表达式 所以请忍受我的简单问题 例如 假设我有一个输入文件 其中包含一堆由换行符分隔的链接 www foo com Archives monkeys htmMonkey 网站的描述 www foo com Ar
  • java.io.IOException:不支持标记/重置

    这段代码不起作用 我已经准备好一堂课了 因为它可以找到here http javafree uol com br topic 879623 Executar wav html 但音乐不起作用 我怎样才能解决这个问题 private void
  • 如何检查我的 Python Discord 机器人是否具有必要的权限?

    我制作了一个实用机器人来帮助记录消息并帮助将通道从一台服务器迁移到另一台服务器 我需要检查它是否具有执行命令所需的权限 但以下代码不起作用 我使用 client event并且不想使用 bot command 这是我的权限检查代码 if n
  • 如何在调用sqlcmd时更改端口

    我有这个命令 sqlcmd exe E i C joe db scripts joe db tasks Install sql 我需要添加特定的非标准端口 32001 我该怎么做 我在想一些像这样的标志 p或其他东西 但我不知道语法 根据这
  • 在select语句中显示表名

    我需要在 select 语句中显示表名 如何 确切的问题 我们在两个表中有公共列 我们正在使用以下方式显示记录 select column name from table name 1 union select column name fr
  • 如何使用 Google CardBoard Android SDK 和 Rajawali 制作一个简单的 VR 视频播放器

    我是这些领域的新人 我正在尝试改变一个program https github com ejeinc RajawaliCardboardExample现在在 github 中播放 Cardboard 视频 我使用 StreamingText
  • 为什么媒体查询的顺序在 CSS 中很重要?

    最近 我一直在设计响应速度更快的网站 并且经常使用 CSS 媒体查询 我注意到的一种模式是 定义媒体查询的顺序实际上很重要 我没有在每个浏览器中测试它 只是在 Chrome 上测试 这种行为有解释吗 有时 当您的网站无法正常工作并且您不确定