为什么这个css先例?

时间:2014-03-20 03:56:44

标签: css

我有一个文本框,我添加了一个类(ui-state-error)来添加边框颜色:#CD0A0A但它不起作用。我意识到其他一些css胜过它:

textarea, input[type="text"], select {
    border: 1px solid #B5B8C8;
}

.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {
     background: url("images/ui-bg_glass_95_fef1ec_1x400.png") repeat-x scroll 50% 50% #FEF1EC;
   border: 1px solid #CD0A0A;
   color: #CD0A0A;
}

无论如何我可以添加一个类" ui-state-error"到文本框并让边框css覆盖输入[type =" text"] border css。

我想,因为它在我的css下面会胜过上面的那个?

3 个答案:

答案 0 :(得分:2)

CSS规则的后续排序"胜过" (仅当)时,选择器的相同 Selector Specificity

  

选择器的特异性计算如下:

     
      
  1. 计算选择器中的ID选择器数量(= a)
  2.   
  3. 计算选择器中的类选择器,属性选择器和伪类的数量(= b)
  4.   
  5. 计算选择器中的类型选择器和伪元素的数量(= c)
  6.   
  7. 忽略通用选择器
  8.   

在这种情况下,特异性是

input[type="text"]   -> a=0 b=1 c=1 -> 11  --winner, order doesn't matter
.ui-state-error      -> a=0 b=1 c=0 -> 10

现在,如果后一个选择器规则还包含一个类型选择器

input[type="text"]   -> a=0 b=1 c=1 -> 11 
input.ui-state-error -> a=0 b=1 c=1 -> 11  --winner, by ordering override

答案 1 :(得分:1)

您的第二个CSS规则更具体地说是您的第一个CSS规则。

你可以

  • !important添加到第一个,这通常是一个坏主意,或
  • 使其更具体。

赞扬和其他答案表明textarea.some-class可能有用,但更好,你可以试试:

.parents-class textarea.some-class {...}

您获得的具体内容越多,您的规则被忽略的可能性就越小。

答案 2 :(得分:0)

有两种方法:

  1. 在要应用于输入的属性后添加!important 例如:border: 1px solid #CD0A0A !important; color: #CD0A0A !important;

  2. 使用id(在css中具有高优先级)。例如:#ui_error,.ui-state-error,.ui-widget-content ...

  3. 并且输入将是这样的

    <input type="text" id="ui_error">
    
相关问题