从元素中删除/重置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实现解决方案。