Css 如何将div和decedents的所有样式重置为Chrome默认值
我不确定这是否可行,但我想为div和子体将所有用户样式设置回chrome默认值 我正在构建一个Chrome插件,它可以在任何网页上创建一个弹出窗口,但是由于每个网页都有过多的自定义样式,试图追踪每个不一致性,并用我的divs(和后代)自定义样式覆盖它,这正成为一场噩梦 每次我认为我已经涵盖了所有的基础,另一个网站实现了其他需要覆盖的东西 在这种情况下,标准化弹出窗口的最简单方法是什么 我能想到的一种方法是(咬紧牙关)掌握默认的Chrome CSS样式,并将它们实现为一系列“一网打尽”的后代选择器,但肯定有更好的方法。若您想绝对确保元素的样式不受网页CSS的影响,有两种可能的解决方案:Css 如何将div和decedents的所有样式重置为Chrome默认值,css,google-chrome,google-chrome-extension,Css,Google Chrome,Google Chrome Extension,我不确定这是否可行,但我想为div和子体将所有用户样式设置回chrome默认值 我正在构建一个Chrome插件,它可以在任何网页上创建一个弹出窗口,但是由于每个网页都有过多的自定义样式,试图追踪每个不一致性,并用我的divs(和后代)自定义样式覆盖它,这正成为一场噩梦 每次我认为我已经涵盖了所有的基础,另一个网站实现了其他需要覆盖的东西 在这种情况下,标准化弹出窗口的最简单方法是什么 我能想到的一种方法是(咬紧牙关)掌握默认的Chrome CSS样式,并将它们实现为一系列“一网打尽”的后代选择器
iframe
实现弹出窗口。(此解决方案“安全”且足够简单,但基于弹出窗口和网页之间的交互方式,可能会变得很麻烦。)- 介绍性的
- 将“影子DOM”概念合并到Chrome扩展中的一个实际示例:
RobW的
- 还有第三个选项值得讨论和拒绝,那就是将div及其子代的所有样式属性重置为默认值。伪代码:
#my-div, #my-div * {
@for-every-css-property {
%propertyName: initial !important;
}
}
显示了对这种解决方案的尝试。它使用特定值而不是initial
,这将在没有initial
关键字的旧浏览器中工作,但不会正确重置默认值与基本值不同的元素(例如,user566245提到textarea
元素应该有边框)
问题:
- 不幸的是
- 如果我们不使用
以上,则页面可能会提供一条规则,该规则包含更具体的选民,而该选民会凌驾于我们自己的选民之上。例如,如果页面为!重要信息
指定了属性,那么这将应用于我们的规则,因为该选择器比table>tr>td
更具体#my div*
- 因为我们使用的是
,重置后要进行的任何自定义样式也必须使用!重要信息
,适用于所有酒店!重要信息
- 如果页面恰好在我们使用
然后这些可以覆盖我们的重置的页面之后插入任何其他CSS样式!重要信息
- 这是相当低效的。我们要求浏览器对div下的每个元素应用大量CSS规则
- 还应重置特定于供应商的属性。(例如,
)-webkit动画名称
- 如果将来出现新的CSS属性,则需要更新列表
解决方案
我不知道是否有人尝试过这一点,但更有效的解决方案可能是使用Javascript来检测哪些站点定义的CSS属性可能有问题,并仅重置这些属性。总是很乐意提供帮助!(如果你真的喜欢答案,请随意投票:)我很想看到一个使用shadowdom实现这一点的例子。它将很快出现在Firefox中,并且已经出现在Safari和Chrome中。当然应该有更好的方法。:)我们可以这样做,但我们想做相反的事情:从页面范围的CSS中退出!