查找类是否在css中有边框

时间:2011-04-29 16:04:12

标签: css border

通过使用属性选择器或任何其他方法查找类是否只有css中的边框。如果它没有,则应用border.Intention is不依赖于jquery。这有可能实现吗?

<小时/> 已编辑以包含来自@nag(OP)的回复:

在IE8中,border没有select。所以我正在尝试像这样重置css:

select, input[type="file"], textarea {
    border: solid 1px #7F9DB9;
 }

问题是由于特异性,它会覆盖任何预先存在的风格。我尝试使用表达式过滤器但在IE8中使用DocType似乎不起作用。

2 个答案:

答案 0 :(得分:1)

CSS没有if/else语句的概念或实现,所以这在CSS中是不可能的。

但是,如果为元素定义border,然后稍后重新定义border,则第二个语句将覆盖第一个语句(假设同样具体的选择器),所以我不确定是为什么您需要仅应用border 如果该元素尚未定义border

div {
    border: none; /* removes the border */
}

/* other stuff */

div {
    border: 1px solid #f90; /* defines the border */
}

类似地:

div {
    border: 5px solid #0f0; /* defines the border */
}

/* other stuff */

div {
    border: 1px solid #f90; /* re-defines the border */
}

如果您可以定义用例,则可以进一步帮助您。

<小时/> 已编辑以解决问题中的更多信息:

  

在IE8中没有选择的边框。所以我正在尝试像这样重置css:

select, input[type="file"], textarea {
    border: solid 1px #7F9DB9;
}
  

问题是由于特异性,它会覆盖任何预先存在的风格。我尝试使用表达式过滤器但在IE8中使用DocType似乎不起作用。

如果问题是特异性的,那么您唯一的选择就是增加您要应用的选择器的特异性,理想情况下使用id或多个{{1在你的选择器中(祖先元素的id很好),因为那是最具体的选择器。

或者,您可以降低您要覆盖的选择器的特异性。

值得注意的是id元素难以可靠地设计,因为它通常由底层操作系统而不是浏览器本身呈现,以便在该操作系统中保持一致的外观。

答案 1 :(得分:0)

您有三种选择:

  1. 使用JavaScript - 具有逻辑,因此您可以检查它是否有边框,然后对结果执行某些操作。您可以使用jQuery或MooTools等库来简化它。
  2. 使此选择器更具体,因此它仅适用于您希望它的元素。
  3. 使用类,ID或嵌套选择器(如form textarea)使您的其他选择器更具体。