我已经创建了一个在几个电子邮件客户端我测试过正确显示HTML电子邮件,但是当我提供的是一个预览我的网页上,在innerHTML
影响嵌入式风格父母。必须可以避免这种情况,因为当我在gmail中查看电子邮件时,它将正确显示而不会改变gmail本身的样式。停止从风格影响母公司
这里的一些HTML显示问题(但显示在Gmail中无副作用):
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
* { font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; }
</style>
</head>
<body>
<pre style="white-space:pre-wrap;">Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test </pre>
</body>
</html>
我使用的是4角,所以我包括在我的页面是这样的:
<div [innerHTML]="myHtml | safeHtml">
</div>
...和safeHtml仅仅是为绕过HTML的角度检查我注射管:
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer, SafeHtml } from "@angular/platform-browser";
@Pipe({name: 'safeHtml'})
export class SafeHtmlPipe implements PipeTransform {
constructor(private sanitizer:DomSanitizer){}
transform(html) {
return this.sanitizer.bypassSecurityTrustHtml(html);
}
}
它作品,因为它确实在div中显示html,但样式信息会改变页面上的所有内容。我明白了 - 我硬是在我的嵌入式样式使用*
。 ......但正如我所说的,gmail设法以某种方式'包含',所以它不会重新设置父元素。我该如何做到这一点?
理想情况下,我希望总体样式隔离 - 就像我不希望父级样式受到父级影响的子级或子级样式(这似乎是gmail的行为方式) 。
更新
更改HTML到下面有它的电子邮件的工作,并且包含了CSS,但没有奏效嵌入角:
<!DOCTYPE HTML>
<html class="my-class">
<head>
<style type="text/css">
.my-class * {
font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
color: blue;
}
.my-class pre {
white-space:pre-wrap;
}
</style>
</head>
<body>
<pre>Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test </pre>
</body>
</html>
这是因为(它似乎)的html
和body
标签被剥离出来,当你嵌入此在div
(这有一定的道理)。因此,只需添加含有div
和班上的父母和所有的工作 - 无论是嵌入在电子邮件:
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
.my-class * {
font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif;
color: blue;
}
.my-class pre {
white-space:pre-wrap;
}
</style>
</head>
<body>
<div class="my-class">
<pre>Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test Test test </pre>
</div>
</body>
</html>
角4被设计为处理这应该保持它从与父元件干涉每组件的基础上的CSS。也许你可以使用Angular组件代替[innerHTML]来防止这个问题。这里是一个参考页:https://angular.io/guide/component-styles – petryuno1
但它已经在影响完全无关的部件 - 它影响了整个页面,不管是什么成分包含HTML。就像我的菜单上的字体改变一样,它甚至不是父组件。 – WillyC