我想知道如何忽略父样式并使用默认样式(无)。我将以我的具体案例为例,但我很确定这是一个普遍的问题。
<style>
#elementId select {
height:1em;
}
</style>
<div id="elementId">
<select name="funTimes" style="" size="5">
<option value="test1">fish</option>
<option value="test2">eat</option>
<option value="test3">cows</option>
</select>
</div>
我不想解决这个问题:
例如使用萤火虫我可以关闭父式,一切都很好,这就是我想要的效果。
设置样式后,是否可以禁用或必须覆盖它?
答案 0 :(得分:54)
您可以通过覆盖它来关闭它:
身高:自动!重要;
答案 1 :(得分:30)
必须覆盖它。你可以使用:
<!-- Add a class name to override -->
<select name="funTimes" class="funTimes" size="5">
#elementId select.funTimes {
/* Override styles here */
}
确保在css样式中使用!important
标志,例如margin-top: 0px !important
What does !important mean in CSS?
您可以使用属性选择器,但由于旧版浏览器不支持(阅读IE6等),最好添加类名
答案 2 :(得分:4)
你应该使用这个
身高:自动!重要;
答案 3 :(得分:3)
你可以在CSS样式表中创建另一个更低的定义,它基本上会颠倒初始规则。你也可以在所说的规则上添加“!important”以确保它坚持下去。
答案 4 :(得分:1)
我在joomla网站上工作时有类似的情况。
为要受影响的模块添加了类名。在你的情况下:
<select name="funTimes" class="classname">
然后在css中进行了以下单行更改。添加了
行#elementId div.classname {style to be applied !important;}
运作良好!
答案 5 :(得分:1)
如果我正确理解了这个问题:
您可以在css中使用“自动”,例如width:auto
,然后它将返回默认设置
答案 6 :(得分:1)
由于进行了编辑,该问题被推到了顶部。答案变得有些陈旧,如今已不如在标准中添加其他解决方案那样有用。
现在有一个“全部”速记属性。
#elementId select.funTimes {
all: initial;
}
这会将所有css属性设置为其初始值... note 某些初始值是继承的;结果仍在元素上进行某些格式化。
由于在阅读代码或将来进行审核时需要暂停,因此,除非您最多,否则不要使用它,因为审核过程很容易导致错误/错误!编辑页面时。但是很明显,如果有大量属性需要重置,那么“全部”是可行的方法。
答案 7 :(得分:1)
CSS 中的 all 属性重置所有选定元素的属性,除了控制文本方向的方向和 unicode-bidi 属性。
.module {
all: unset;
}
它的重点是允许组件级的样式重置。有时,从头开始设计样式比与已有的一切作斗争要容易得多。
/* -------- For Your code -------- */
#elementId select.funTimes {
all: unset;
}
答案 8 :(得分:0)
CSS有一种方法可以简单地添加一个额外的样式(例如,在页面的head部分,它会覆盖链接的样式表),例如:
<head>
<style>
#elementId select {
/* turn all styles off (no way to do this) */
}
</style>
</head>
并关闭所有以前应用的样式,但无法执行此操作。您必须覆盖height属性并将其设置为页面头部的新值。
<head>
<style>
#elementId select {
height:1.5em;
}
</style>
</head>
答案 9 :(得分:-1)
请参阅下面的打字稿,以将css类再次重新应用于元素以覆盖父容器(通常是框架组件)css样式并强制使用自定义样式。您的应用程序框架(可能是角度的/反应的,可能是这样做的,因此重新应用了父容器css,而css-class-name中的预期效果均未显示给您的子元素。调用this.overrideParentCssRule(childElement,' css-class-name');执行框架刚刚做的事情(在document.ready或事件处理程序的结尾中调用):
overrideParentCssRule(elem: HTMLElement, className: string) {
let cssRules = this.getCSSStyle(className);
for (let r: number = 0; r < cssRules.length; r++) {
let rule: CSSStyleRule = cssRules[r];
Object.keys(rule.style).forEach(s => {
if (isNaN(Number(s)) && rule.style[s]) {
elem.style[s] = rule.style[s];
}
});
}
}
答案 10 :(得分:-1)
有一堆可用于撤消CSS规则的值:初始,未设置和还原。 来自W3C的CSS工作组的更多详细信息:
https://drafts.csswg.org/css-cascade/#defaulting-keywords
由于这是“草稿”,因此并非所有版本都完全受支持,但大多数主流浏览器都支持unset和initial,因此revert的支持较少。