相互覆盖的 CSS 媒体查询

Posted

技术标签:

【中文标题】相互覆盖的 CSS 媒体查询【英文标题】:CSS Media Queries Overriding Each other 【发布时间】:2016-02-25 17:18:57 【问题描述】:

感谢 Stack Overflow 的帮助。我有一些自定义 css 用于加强设计。我一直遇到这个问题,如果我在一个媒体查询中更改某些内容,比如 iphone 6,那么该更改会影响另一台设备,比如 iphone 5。它成为这个问题的原因是我一直在调整,看不到尽头。这是我正在使用的@media 断点。

/* IPHONE 6 PLUS */
@media only screen 
and (min-device-width : 414px) 
and (max-device-width : 736px) 
and (orientation : portrait)  



/* IPHONE 6 */
@media only screen 
and (min-device-width : 375px) 
and (max-device-width : 667px)
and (orientation : portrait)  


/* IPHONE 5s */
@media only screen 
and (min-device-width : 320px) 
and (max-device-width : 568px) 
and (orientation : portrait) 



/* IPAD LAYOUTS */
@media only screen 
and (min-device-width : 768px) 
and (max-device-width : 1024px)  
      


/* IPAD LANDSCAPE */
@media only screen 
  and (min-device-width: 768px) 
  and (max-device-width: 1024px) 
  and (orientation: landscape) 
  and (-webkit-min-device-pixel-ratio: 1) 


任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

我同意 Birdman 的观点,您应该考虑移动优先的方法。然而,移动优先意味着最小的设备尺寸完全在任何媒体查询之外。下一个大小将启动第一个媒体查询。您只需要一个最小宽度,因为这些新样式将添加到基本样式中,而不是覆盖它们。创建的每个媒体查询都将继续与已调用的媒体查询相结合。

而不是担心 iPad 或平板电脑...担心您的设计元素何时开始看起来很糟糕。所有主流浏览器都有足够智能的模拟器来测试不同的设备尺寸。

这是一篇关于利弊的好文章。我总是先编写移动代码,从不担心样式冲突,除非我是故意这样做的 :)

https://codemyviews.com/blog/mobilefirst

【讨论】:

【参考方案2】:

当设备宽度落在媒体查询的范围内时,将应用样式。因此,如果设备的宽度为 500 像素,它将首先具有 6plus 样式,然后将被 6 的样式覆盖,然后是 5s'。通常,不建议尝试为特定设备定制 CSS,但如果您愿意,您需要确保没有任何范围重叠,否则它们将被最后出现的样式覆盖。

【讨论】:

谢谢@birdman。如果是这种情况并且我只关心纵向视图,我可以删除 max-device-width 以避免重叠。我知道我已经阅读了我应该关注断点而不是设备的地方,但我还没有成功地做到这一点。再次感谢您的任何见解或建议。 如果您只想使用最小宽度,请确保您按升序排列。从 5s 开始,然后升级到 6plus。这将防止它们被覆盖。

以上是关于相互覆盖的 CSS 媒体查询的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 CSS 媒体查询被忽略或覆盖?

覆盖 Bootstrap 3 媒体查询

在 Bootstrap 中覆盖媒体查询 css 规则

使用 HTML 中的自定义 CSS 覆盖 CSS 文件中的媒体查询

论:响应式布局之css3媒体查询器

不覆盖原始样式的媒体查询样式