如何封装CSS,特别是对于弹出窗口而不涉及iframe?

时间:2013-02-12 20:02:13

标签: html css encapsulation

刚刚从设计团队获得了一个带css的新网页,用于设计精美的弹出框;

他们不知道或不关心寻找现有的班级和ID;

我需要一个没有IFRAME

的工作解决方案

问题是主css文件中已经有超过20,000条css行,并且在某些时候某些东西会被覆盖,整个网站会发生大爆炸!

这个新网页有非常常见的classid名称,我说的是近100个带css属性的标签;

我想知道encapsulate这个新的css属性和未来的属性是否有方法;

如果有办法做到这一点,怎么办呢?

通过这个网页,我很幸运,我用内容粘贴了标签,就在此之前,我使用了style type"text/css'标签;但我不会永远幸运;

仅仅因为我们使用不同人编写的css代码获取网页,如果某些属性或名称或ID相互交叉,则创建新的css类对我来说不公平。

我现在有大约10个a tag课程,而且大多数情况下属性相同;

1 个答案:

答案 0 :(得分:3)

使用目标规则并让级联为您处理。将弹出窗口放在一个包装器中,并附上您喜欢的名称。

<div id="myPopupDivWithCommonIds">
    <!-- rest of popup -->
</div>

将你的css规则定位到那个div。

#myPopupDivWithCommonIds .error { color: bright-pink; }
#myPopupDivWithCommonIds #main { width: 93.21%; }

等。这会处理css规则并防止你的新东西溢出。你必须小心确保没有其他规则涓涓细流;最好的方法是明智地覆盖任何定义的属性(Pekka说的)。你也可以对它进行核处理并包含一个自定义的'reboot'或'bootstrap'样式表,并再次将所有规则重新定位到你的新弹出div(就像你说的那样,对于20k行的css很难;但是包括另一个文件通过附加#id选择器如上所述,使用针对你的div的重置规则有点帮助。

哦,这仍然无法解决重复ID在技术上是无效标记的问题,并且很可能会干扰您尝试在该页面上运行的任何JavaScript。

如果这听起来像是一团糟,那就好了。你的开发人员和设计人员已经达到了这一点,并且缺乏严肃的重构,你不会回到一个干净的解决方案。对于你的用例来说,iFrame可能看起来像是一个黑客或者不可能的,但它确实会清理你正确预见到的很多问题。