我正在做一份报告,在报告中我必须提供来自不同提供商的电子邮件,这些电子邮件附带自己的css(通常是内联css,但有时它们会应用一般样式).我通常使用iframe封装css所以它不会破坏我的但我现在不能使用它.
有没有办法在不使用iframe的情况下封装css?
这是我遇到的问题的一个例子:
<html> <head> <style> // I enclose it to content so it doesn't override the email css #my_content table,#my_content p { color: black; } </style> </head> <body> <div id='my_content'> ... some stuff ... <div id='email'> <html> <head> <style> table { margin-left: 100cm; // screws up all my tables } .... some styles that should only apply inside the email div ... </style> </head> <body> .... email content ... </body> </html> </div> </div> </body> </html>
我可以提取html结构,只是获取正文,但不是我的所有电子邮件都看起来应该是这样.此外,HTML必须有效,所以任何建议都会很棒!
解决方法
@H_403_13@ 您可以将#email添加到您的css选择器中,使它们仅适用于您的div.例如,改变
.classname {display:block}
至
#email .classname {display:block}
编辑:如果您无法控制电子邮件CSS,如arxanas所示,请考虑使用LESS. Less是一个CSS预处理器,允许嵌套CSS选择器.如果你包含less.js,那么你可以这样做:
#email { CSS goes here }
less.js将解析它并将其转换为CSS.