覆盖 CSS 媒体查询

Posted

技术标签:

【中文标题】覆盖 CSS 媒体查询【英文标题】:Override CSS media queries 【发布时间】:2012-07-10 15:11:21 【问题描述】:

我每天都在处理一个使用我不喜欢的 CSS 媒体查询的页面;我宁愿使用整页(其中大多数与 Twitter Bootstrap 菜单在窄于 768 像素时折叠有关)。

有没有办法用 CSS 覆盖 Bootstrap 的媒体查询?最好不要定义我自己的媒体查询来单独覆盖所有规则,因为我觉得这需要很长时间。

编辑:我无法控制源代码,否则我只会杀死引导响应代码。

【问题讨论】:

【参考方案1】:

您为什么不首先删除它们?

如果不能,您仍然可以使用规则覆盖 CSS 声明:

具有相同的选择器优先级并 MQ 块之后 比 MQ 块中的规则具有更高的选择器优先级 在值和分号之间有 !important
    /* one id, one class AND one element => higher priority */
    #id element.class  property: value2; 

    /* !important will nuke priorities. Same side effects as a nuke,
       don't do that at home except if you've tried other methods */
    #id .class  property: value2 !important; 

    @media(blah) 
      /* Overridden. Thrice. */
      #id .class  property: value1; 
    

    /* same selector, same everything except it comes after the one in @media?
       Then the latter is applied.
       Being in a @media doesn't give any more priority (but it won't be applied
       everywhere, depending on "blah", that's the point of MQ) */
    #id .class  property: value2; 

在前面的示例中,@media 块之外的任何声明都将覆盖内部的声明,例如应用 value2 而不是 value1 的原因有 3 个。

【讨论】:

我同意,如果您不喜欢/不需要它们,为什么不完全删除 bootstrap-responsive.css 文件? 我无法控制源代码。【参考方案2】:

也想覆盖 bootstraps responsive.css。

我有一半的网站要使用默认的 responsive.css,而另一半的媒体查询会导致布局错误,因此我想将其删除。

根据我的研究css 不允许删除媒体查询

所以我会去复制 responsive.css 并删除媒体查询。如果您无权访问源代码,则覆盖可能是唯一的选择。

【讨论】:

CSS 不允许在编写后删除任何内容。您只能覆盖一条指令(使用新值,特别是此属性的默认值)。如果该指令位于媒体查询中的规则中,您可以通过为该 MQ、相同的选择器、相同的属性和新的/默认值(并放置它在被覆盖的指令之后)

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

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

覆盖 Bootstrap 3 媒体查询

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

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

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

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