从元素中删除/重置inheritance的css
我知道之前曾问过这个问题,但在将其标记为重复之前,我想告诉你我的情况与我在互联网上发现的情况略有不同。
我正在构建和嵌入脚本,人们可以把它放在他们的网站上。 此脚本创建一个具有特定宽度/高度的div以及其中的一些信息。
我的问题是,有些网站也为我的divinheritance了div的样式。
例如:
div{ background-color:red; }
因此,如果我没有为我的div设置任何背景颜色,即使我不想要它也会显示红色。
我遇到的唯一解决方案是覆盖尽可能多的css属性,这样我的div将完全按照我的要求显示。 这个解决方案的问题是有太多的css属性要覆盖,我希望我的脚本尽可能轻松。
所以我的问题是,如果你知道我的问题的另一个解决方案。 它可以在css / javascript / jQuery中。
谢谢
无法为特定元素“重置”样式,您必须覆盖您不需要/不需要的所有样式。 如果你直接使用css或使用jquery来应用样式取决于你更容易(但我不会为此推荐使用javascript / jquery ,因为它是完全不必要的)。
如果您的div是某种可以包含在其他网站中的“小部件”,您可以尝试将其包装到iframe中 。 这将“重置”样式,因为它的内容是另一个文档,但这可能会影响窗口小部件的工作方式(或者可能完全破坏它),因此在您的情况下可能无法实现。
仅设置相关/重要的CSS属性。
示例(仅更改可能导致div看起来完全不同的属性):
background: #FFF; border: none; color: #000; display: block; font: initial; height: auto; letter-spacing: normal; line-height: normal; margin: 0; padding: 0; text-transform: none; visibility: visible; width: auto; word-spacing: normal; z-index: auto;
选择一个非常特定的选择器,例如div#donttouchme
,
。 此外,您可以在声明中的每个分号前添加`!important。 当此选项失败时,您的客户故意试图弄乱您的布局。
您可以尝试覆盖CSS并使用auto
我不认为这将特别适用于颜色,但我遇到了一个问题,我有一个父属性,如
.parent { left: 0px; }
然后我就能用这样的东西来定义我的孩子
.child { left: auto; }
它有效地“重置”了财产。
试试这个:创建一个普通的div
没有红色div
之外的任何样式或内容。 现在,您可以在plain div
所有样式上使用循环,然后将其分配给内部div
以重置所有样式。
当然,如果有人将样式分配给所有div
(即不使用类,CSS将是div { ... }
),这不起作用。
像这样的问题的通常解决方案是给你的div
一个独特的类。 这样,网站的网页设计师可以调整div
的样式以适应设计的其余部分。
只要它们是类和id等属性,就可以通过javascript / jQuery类修饰符删除它们。
document.getElementById("MyElement").className = "";
除了覆盖它们(或使用其他元素)之外,无法删除特定标记CSS。
您可以使用以下选项。
现在,如果他们在任何你不想应用默认样式的地方你可以使用’no_common_style’类作为类。 例如:
It will not display in red
根据我的理解,你想要使用一个div,它inheritance了没有类,但是你的。 如前面的回复中所述,您无法完全重置divinheritance。 但是,对我来说,对这个问题有用的是使用另一个元素 – 一个不频繁且肯定不会在当前html页面中使用的元素。 一个很好的例子,是使用而不是然后自定义它看起来就像你的理想。
area { background-color : red; }
一种简单的方法是在css中使用!important
修饰符,但这可以从用户以相同的方式覆盖。
也许通过遍历整个DOM来查找(重新)定义的类并删除/强制css样式,可以使用jquery实现解决方案。