刚刚从设计团队获得了一个带有css的新网页,用于制作精美的盒子弹出窗口;
他们不知道或不关心寻找现有的课程和ID;
问题是主css文件中已经有超过20,000个css行,并且在某些时候某些东西会被覆盖,整个网站将会发生大爆炸!
这个新的网页有很常见的类和id名称,我说的是几乎100个带有css属性的标签;
我想知道是否有一种方法来封装这个新的css属性和未来的属性;
如果有办法做到这一点,怎么办呢?
有了这个网页,我很幸运,我用内容粘贴了标签,就在此之前,我使用了样式类型“text / css”标签;但我不会总是很幸运;
仅仅因为我们得到了由不同人编写的css代码的网页,如果某些属性或名称或id彼此相交,创建新的css类对我来说是不公平的.
解决方法
使用目标规则,让级联为您处理.将弹出窗口放在一个包装器中,并附上您喜欢的名称详细信息.
<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可能看起来像是一个黑客或者不可能,但它确实会清理你正确预见到的许多问题.