撤消CSS级联行为

时间:2011-05-09 09:50:56

标签: jquery css jquery-ui jquery-ui-datepicker

CSS标记:

<td class="ui-datepicker-current-day">
    <a href="#" class="ui-state-default ui-state-active">17</a>
</td>

CSS Rules

.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default
{
    background: url("images/ui-bg_glass_75_e6e6e6_1x400.png") repeat-x scroll 50% 50% #E6E6E6;
    border: 1px solid #D3D3D3;
    color: #555555;
    font-weight: normal;
}

.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active
{
    background: url("images/ui-bg_glass_65_ffffff_1x400.png") repeat-x scroll 50% 50% #FFFFFF;
    border: 1px solid #AAAAAA;
    color: #212121;
    font-weight: normal;
}

添加活动类时,它会覆盖正常的默认样式。但我不想要这种行为。我希望将ui-state-active类添加(覆盖)的样式恢复为ui-state-default中指定的值,而不需要更改原始CSS和/或删除类。 类似于:

.ui-state-active {
background: inherit;
}

似乎有效,但我不确定这是否正确。

修改

我可以在父级上添加类,如下所示:

<td class="ui-datepicker-current-day DISABLE-STATE-ACTIVE-CLASS">
    <a href="#" class="ui-state-default ui-state-active">17</a>
</td>

2 个答案:

答案 0 :(得分:1)

不确定为什么这“似乎有效”,显然不应该这样。如果继承链中没有其他元素定义了'background',则该值应重新设置为'transparent'(这是默认值)。

你不能以这种方式宣布'撤消',尽管可能有充分的理由尝试这样做(如你的情况)。我想回到'ui-state-default'中定义的背景值的唯一方法是从dom元素中删除'ui-state-active'类。这将涉及对插件js代码进行更改,并且很清楚为什么要避免这种情况。

为什么不简单地在css中设置相同的颜色?只需在themeroller中点击几下:)

答案 1 :(得分:0)

您希望背景显示什么?

如果您始终希望此td从其父级继承其背景,则Inherit将起作用。话虽这么说,一般来说,你是如何处理CSS中的覆盖。可以覆盖内联样式设置,在<style>标记中具有相同或更高优先级的覆盖样式,或覆盖带有!important标记的样式。

在您的示例中,我认为background: inherit应该没问题,但如果这对您不起作用,您可以随时尝试background: transparent的旧待机状态。