刚刚从设计团队获得了一个带css的新网页,用于设计精美的弹出框;
他们不知道或不关心寻找现有的班级和ID;
我需要一个没有IFRAME
问题是主css文件中已经有超过20,000条css行,并且在某些时候某些东西会被覆盖,整个网站会发生大爆炸!
这个新网页有非常常见的class
和id
名称,我说的是近100个带css属性的标签;
我想知道encapsulate
这个新的css属性和未来的属性是否有方法;
如果有办法做到这一点,怎么办呢?
通过这个网页,我很幸运,我用内容粘贴了标签,就在此之前,我使用了style type"text/css'
标签;但我不会永远幸运;
仅仅因为我们使用不同人编写的css代码获取网页,如果某些属性或名称或ID相互交叉,则创建新的css类对我来说不公平。
我现在有大约10个a tag
课程,而且大多数情况下属性相同;
答案 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可能看起来像是一个黑客或者不可能的,但它确实会清理你正确预见到的很多问题。