GVKun编程网logo

何时在CSS中使用!important属性(css中的!important)

13

如果您对何时在CSS中使用!important属性感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于何时在CSS中使用!important属性的详细内容,我们还将为您解答css

如果您对何时在CSS中使用!important属性感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于何时在CSS中使用!important属性的详细内容,我们还将为您解答css中的!important的相关问题,并且为您提供关于css – 为什么不鼓励使用`!important`?、css – 为什么我的!important属性不适用于Google Chrome?、css – 如何使用LESS将变量声明为!important?、css – 将“!important”添加到mixin中的有价值信息。

本文目录一览:

何时在CSS中使用!important属性(css中的!important)

何时在CSS中使用!important属性(css中的!important)

考虑:

#div p {    color: red !important;}...#div p {    color: blue;}

我了解!important运作方式。在这种情况下,div将呈现红色,因为现在它具有优先级(!important)。但是我仍然找不到适合的情况来使用它。是否有!important节省时间的示例?

答案1

小编典典

这是现实生活中的场景

想象一下这种情况

  1. 您有一个全局CSS文件,该文件可以全局设置网站的外观。
  2. 您(或其他人)对元素本身使用内联样式,这 通常是 非常不好的做法。

在这种情况下,您可以将全局CSS文件中的某些样式设置为重要样式,从而覆盖直接在元素上设置的内联样式。

实际的真实世界示例?

当您无法完全控制HTML时,通常会发生这种情况。例如,考虑一下SharePoint中的解决方案。您希望对零件进行全局定义(样式化),但是存在一些您无法控制的内嵌样式。!important使这种情况更易于处理。

其他现实生活场景还包括一些写得不好的 jQuery插件 ,这些 插件 也使用内联样式…

我想您现在已经有了主意, 也可以提出其他 想法

您何时决定使用!important

我建议您不要使用,!important除非您无法以其他任何方式使用它。只要有可能避免它,就避免它。使用很多!important样式会增加维护难度,因为您破坏了样式表中的自然_层叠_ 。

css – 为什么不鼓励使用`!important`?

css – 为什么不鼓励使用`!important`?

标记为 css的几个答案不鼓励使用!important有利于特异性.为什么?

解决方法

您可以使用实际数学来预测,控制和反向设计CSS规则的影响.通过使用!important,你打破了它.以 this JS fiddle为例,它不使用!important: http://jsfiddle.net/hXPk7/

如果您使用Firebug或Chrome开发工具检查标题元素“理查德”,您应该按以下顺序查看这些规则:

/**************************/
/* /hXPk7/show/ (line 20) */
/**************************/
#myExample #title .name {
    color: yellow;
}

/********************************************************/
/* /hXPk7/show/ (line 14) - Inherited fromdiv#myExample */
/********************************************************/
#myExample {
    color: blue;
}

请注意,这不是它们在CSS样式表中出现的顺序 – 而是按照它们的特异性降序排列.首先列出优先级,其他(其规则被更具体的规则覆盖)可能具有划掉的属性.这表明特殊性可以很容易地跟踪(调试?)元素从哪里获取其CSS属性.

现在,与this JS fiddle进行比较 – 实际上是相同的,但是现在使用了一条新规则!important:http://jsfiddle.net/hXPk7/1/

使用Firebug或Chrome开发工具检查相同的元素,您将看到如下内容:

/**************************/
/* /hXPk7/1/show/ (line 20) */
/**************************/
#myExample #title .name {
    color: yellow;
}

/**************************/
/* /hXPk7/1/show/ (line 26) */
/**************************/
span {
    color: black !important;
}

/********************************************************/
/* /hXPk7/1/show/ (line 14) - Inherited fromdiv#myExample */
/********************************************************/
#myExample {
    color: blue;
}

同样,规则是根据它们的特殊性排序的 – 但请注意,这次,虽然最先列出的最具体的规则指定了黄色,但浏览器却将文本呈现为黑色!这是因为!important声明打破了特异性的正常行为,优先采用可能难以追踪的方式.想象一个更现实的网站,可能有数百条规则,控制颜色的网站并不容易找到或改变.

现在,也许这是开发人员工具的一个问题,但我认为它反映了这样一个事实:重要的是需要一个通常易于预测的优先系统并使其更具挑战性.也许有时候使用它,但它不应该是你编写CSS时的第一个工具.

css – 为什么我的!important属性不适用于Google Chrome?

css – 为什么我的!important属性不适用于Google Chrome?

我的网络应用程序中有两个CSS文件:reset.css和screen.css.它们以html中的顺序出现(重置然后屏幕).

在reset.css中,发生以下样式定义:

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td {
  border-bottom-width:0;
  border-color:initial;
  border-left-width:0;
  border-right-width:0;
  border-style:initial;
  border-top-width:0;
  font-family:inherit;
  font-size:100%;
  font-style:inherit;
  font-weight:inherit;
  margin-bottom:0;
  margin-left:0;
  margin-right:0;
  margin-top:0;
  outline-color:initial;
  outline-style:initial;
  outline-width:0;
  padding-bottom:0;
  padding-left:0;
  padding-right:0;
  padding-top:0;
  vertical-align:baseline;
}

您可以看到该范围位于此列表中,默认情况下,字体大小为100%.

在我的screen.css中,我有以下内容:

dl.labels-left dt span.req {
  display:inline;
  font-size:14px !important;
}

我的HTML有以下摘录:

<div>
    <dl>
        <dt>
            <label>Name:</label>
            <span>*</span>
        </dt>
...

我遇到的问题是font-size:14px!important;被重置文件中的CSS覆盖,但仅限于谷歌浏览器.我无法理解为什么!

这是一个Firebug Lite截图,显示了划掉的字体大小:
Firebug Screenshot http://www.damianbrady.com.au/images/firebug_screenshot.png

为什么我的reset.css样式被认为比特定的类定义更重要?

根据我对W3C CSS 2.1 Specificity的理解,这不应该发生!

解决方法

也许检查员正在不正确地穿越它但视觉上是正确的?

css – 如何使用LESS将变量声明为!important?

css – 如何使用LESS将变量声明为!important?

是否可以使用LESS将变量声明为!important?目前,我收到以下语法错误.

例如:

@fontColor: #000000 !important;

p {
    color: @fontColor;
}

应呈现为:

p {
    color: #000000 !important;
}

我知道有一种逃避的方法,提到HERE,使用以下内容:

@fontColor: #000000 ~'!important';

很久以前有人谈到将它作为简单的语法实现,就像我的第一个例子一样,只是不确定它们是否曾经 – https://github.com/less/less.js/issues/1401

使用Visual Studio 2013(更新4)

解决方法

我想你@fontColor的声明:#000000!important;确实没有意义,你指定什么?一个字符串,一个列表的东西?
最合理的是一个字符串,在使用时应引用并确实转义:

因此,以下代码似乎是正确的(对我来说)

@fontColor: "#000000 !important";

p {
    color: ~"@{fontColor}";
}

我还发现了以下代码:

@wrong: red noncolor;
selector {
property: @wrong;
}

@wrongtoo: red !important;
selector {
propertytoo: @wrongtoo;
}

输出:

selector {
  property: red noncolor;
}
selector {
  propertytoo: red;
}

编译器(Less v2)在两种情况下都不会抛出错误.但在第二种情况下!重要的是没有在CSS代码中编译.也是红色!noncolor编译成CSS代码.可能!重要的是某种关键字,但对我而言,现在似乎是inconsequence in the compiler.

另请注意,文档描述了如何使用!important与mixins在http://lesscss.org/features/#mixins-feature-the-important-keyword

css – 将“!important”添加到mixin中

css – 将“!important”添加到mixin中

我想添加!重要的是mixin.我尝试了以下两种方式,并返回错误:

@include linear-gradient(hsl(68%,94%,90%),hsl(68%,90%,80%)); !important

@include linear-gradient(hsl(68%,80%)) !important;

有没有办法正确地做到这一点?

解决方法

你不能在Mixin上使用!important.

它最终会给你一个SASS语法错误.

见this question for more information

关于何时在CSS中使用!important属性css中的!important的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于css – 为什么不鼓励使用`!important`?、css – 为什么我的!important属性不适用于Google Chrome?、css – 如何使用LESS将变量声明为!important?、css – 将“!important”添加到mixin中等相关内容,可以在本站寻找。

本文标签: