CSS有“重启”功能吗?

时间:2010-04-27 18:52:57

标签: ruby-on-rails css select calendar

我在Rails应用程序中使用calendar_date_select(以下称为CDS),并且有一个愚蠢的问题。当我将CDS组件嵌入已经CSS样式的页面中间时,各种各样的事情都会出现问题(间距,字体等)。很明显,CDS中的元素已经从已经在包含页面中工作的样式中继承了不需要的东西。

现在,我可以使用Safari的CSS调试组合,并逐个元素地分析错误。但那是(A)乏味,而且(B)可能会加载我的组件的样式与大量容器失败的特殊情况。如果不出意外,我肯定会在将来更改包含页面的样式,并且必须维护特殊情况。

我的问题:是否可以在一个基本上支持所有现有样式的页面中使用DIV?是否有一个简单的单行程可以做到这一点?如果不这样做,可以逐个元素地完成吗?

E.g。我知道CDS生成了什么标签,所以我可以列出每个标签:

{     p:“# - NOTHING - #”;     a:“# - NOTHING - #”;   }

其中# - NOTHING - #是Magic Turn Off All Inherited Styles incantation。

http://code.google.com/p/calendardateselect/

谢谢,偷看。

3 个答案:

答案 0 :(得分:2)

你可能希望用div包围你的CDS组件,或者给它一个CDS_wrap或其他东西。

然后在CSS中,将样式重置为该div及其所有内容,如下所示:

div#CDS_wrap * {
  padding: 0;
  margin: 0;
  font-size: 12px;
  etc...
}

答案 1 :(得分:1)

在CSS3中,initial应该是您正在寻找的东西。如果你(像大多数人一样)以CSS1-CSS2为目标,你除了改变自己的CSS之外没有其他机会,因此CDS永远不会受到它的影响。

答案 2 :(得分:0)

Braxo走在正确的轨道上,但没有说明规则优先权。除了日历容器上的(名义)#CDSReset和Braxo的建议规则之外,您还需要使用伪造的逗号分隔的id选择器重载该规则,直到其优先级位于您想要的位置:

#CDSReset, #bogusAlfa, #bogusBravo, #bogusCharlie /* &c. */ {
  ...
}

当我在样式表中执行此操作时,我习惯于评论那些重载规则,这样我就不会将选择器误认为是为了表达游戏优先级规则的目的而包含的虚假位。