【问题标题】:Changing media queries from min-width to use max-width to avoid overriding?将媒体查询从最小宽度更改为使用最大宽度以避免覆盖?
【发布时间】:2014-10-30 12:05:56
【问题描述】:

而不是拥有一个巨大的 responsive.css 文件。我将媒体查询包含在同一个样式表中以将所有内容放在一起,例如我有wizard.css文件,其中:

 span.crumbsTxt {
   font-weight: normal;
   font-size: 16px;
   line-height: 1.25em;
 }

然后在同一个 wizard.css 文件的底部,我有:

    /* col-sm - Small tablets */
    @media (min-width: 768px){
         span.crumbsTxt {
         font-size: 14px;
       }
    }

我遇到的问题是媒体查询中的所有样式都覆盖了我的原始样式,即使它没有命中小屏幕媒体查询。

所以在这个例子中,我在一个大屏幕上,但由于某种原因,它使用了媒体查询中的所有样式!

我不想使用 !important,但不明白为什么要这样做,因为它破坏了我的整个网站!

谢谢

编辑: 那么我的媒体查询设置是否错误 - 需要更改什么?

那么我的媒体查询是否有误,需要更改哪些内容才能避免我的问题? :-

 /* col-xs - mobile screens */
 @media only screen and (max-width: 767px) {}

 /* col-sm - Small tablets */
 @media (min-width: 768px) {}

 /* col-md - Medium screens */
 @media (min-width: 992px) {}

 /* col-lg - Large Desktop screens */
 @media (min-width: 1250px) {}

似乎我的 bootstrap.min.css 也使用了最小宽度。关于如何更改上述媒体查询以解决我遇到的最重要问题的任何想法?

解决方案:

这会更适合 - 首先是普通 css,然后将媒体查询从最大到最小排序,然后使用 max-width 而不是 min-width?我唯一不确定的是我添加的屏幕尺寸值 - 这些可以吗?

 Normal css first

 /* col-lg - Large Desktop screens */
 @media (max-width: 1824px) {}

 /* col-md - Medium screens */
 @media (max-width: 1250px) {}

 /* col-sm - Small tablets */
 @media (max-width: 992px) {}

 /* col-xs - mobile screens */
 @media only screen and (max-width: 767px) {}

【问题讨论】:

标签: html css twitter-bootstrap responsive-design


【解决方案1】:

你的最大宽度和最小宽度混淆了。

max-width 适用于设置宽度以下的任何位置,min-width 适用于高于设置的任何位置

@media (max-width: 768px){
    span.crumbsTxt {
     font-size: 14px;
   }
}

DEMO

编辑:
您有两种选择来订购媒体查询: 选项一(如上所述),将它们从大到小排序,因为它总是首先应用最近声明的样式。 二、让媒体查询独占块:

@media (min-width: 320px) and (max-width: 768px){
    span.crumbsTxt {
     font-size: 14px;
   }
}

DEMO 2

让我们以媒体查询为例:
(假设我们的屏幕尺寸为 1000 像素)

 @media (max-width: 1824px) {} /* this media query will apply because the screen is less than 1824px */

 @media (max-width: 1250px) {} /* this media query will then apply (on-top-of the first media query) */

 @media (max-width: 992px) {} /* this media query will not apply because the screen size is greater than 992px */

 @media only screen and (max-width: 767px) {}  /* this media query will not apply because the screen size is greater than 767px */

如果你想避免这种级联效应,你可以像这样修改你的媒体查询:

 @media (max-width: 1824px) and (min-width: 1251px) {} 
 @media (max-width: 1250px) and (min-width: 993px) {} 
 @media (max-width: 992px) and (min-width: 768px) {} 
 @media only screen and (max-width: 767px) {}

*注意,在此独家版本中,媒体查询的顺序无关紧要

【讨论】:

  • 尝试刷新我编辑过的页面伙伴?与我最初的解决方案相比,这还可以吗?
  • 我在上面的回答中解决了您的其他问题
  • 最好使用您的版本以避免您提到的级联效应,因为我必须一直覆盖样式。你认为这是更好的选择吗?对于这些问题,我很抱歉,因为我对此很陌生!
  • 是的,这是我自己使用的选项...最大的优点是您不需要确保始终覆盖样式(例如,如果您的大型媒体查询添加/更改 100 行CSS,您的中型媒体查询只能更改 1,而不会被大型媒体查询所做的所有更改所困扰)——它有点封装了单个媒体查询,而不是让它们相加
  • 帮助很大,解决了我的头疼问题,也很好地解释了,谢谢! :-)
猜你喜欢
  • 2012-03-19
  • 2015-05-01
  • 1970-01-01
  • 2013-11-19
  • 2012-07-09
  • 2021-05-31
  • 2017-07-29
  • 2013-12-22
相关资源
最近更新 更多