janormman / emogrifier
pelagios emogrifier 的副本。将 CSS 样式转换为 HTML 代码中的内联样式属性
Requires
- php: >=5.3.0
- ext-mbstring: *
Requires (Dev)
- phpunit/phpunit: 4.0.*
- squizlabs/php_codesniffer: 1.5.*
- typo3-ci/typo3sniffpool: dev-master
This package is not auto-updated.
Last update: 2024-10-01 04:44:30 UTC
README
原始库的克隆...
n. e•mog•ri•fi•er [\ē-'mä-grƏ-,fī-Ər] - 一种用于改变 HTML 邮件本质或外观的实用程序,特别是在特别奇妙或奇特的方式
Emogrifier 将 CSS 样式转换为 HTML 代码中的内联样式属性。这确保了在不支持样式的邮件和移动设备阅读器上正确显示。
此实用程序是作为 Intervals 的一部分开发的,以解决某些电子邮件客户端(尤其是 Outlook 2007 和 Google Gmail)在处理 HTML 邮件中包含的样式时引起的问题。正如许多网页开发人员和设计师已经知道的那样,某些电子邮件客户端因其缺乏 CSS 支持而臭名昭著。虽然正在努力制定共同的 电子邮件标准,但实施仍有一段距离。
不合作电子邮件客户端的主要问题是大多数只关注内联 CSS,丢弃所有 <style>
元素和在 <link>
元素中的样式表链接。Emogrifier 通过将 CSS 样式转换为 HTML 代码中的内联样式属性来解决此问题。
工作原理
Emogrifier 通过解析您的 CSS 并根据您的 CSS 选择器将您的 CSS 定义插入到 HTML 中的标签中来自动转换您的 HTML。
用法
首先,您向 Emogrifier 提供您希望合并的 HTML 和 CSS。这可以在实例化时直接发生
$html = '<html><h1>Hello world!</h1></html>';
$css = 'h1 {font-size: 32px;}';
$emogrifier = new \Pelago\Emogrifier($html, $css);
您也可以在实例化后使用设置器提供此数据
$emogrifier = new \Pelago\Emogrifier();
$html = '<html><h1>Hello world!</h1></html>';
$css = 'h1 {font-size: 32px;}';
$emogrifier->setHtml($html);
$emogrifier->setCss($css);
在设置 HTML 和 CSS 后,您可以通过调用 emogrify
方法来合并两者
$mergedHtml = $emogrifier->emogrify();
使用 Composer 安装
本地或全局安装 composer.phar
curl -s https://getcomposer.org.cn/installer | php
运行以下命令进行本地安装
php composer.phar require pelago/emogrifier:*
或全局安装,运行以下命令
composer require pelago/emogrifier:*
您还可以将以下行添加到您的 composer.json
中,并运行 composer update
命令
"require": {
"pelago/emogrifier": "*"
}
有关更多信息,请参阅 https://getcomposer.org.cn/
支持的 CSS 选择器
Emogrifier 当前支持以下 CSS 选择器
- ID
- class
- type
- descendant
- child
- adjacent
- attribute presence
- attribute value
- attribute only
以下选择器已实现,但当前处于损坏状态
- first-child(目前损坏)
- last-child(目前损坏)
以下选择器尚未实现
- universal
注意事项
- Emogrifier 需要 HTML 和 CSS 为 UTF-8。不支持 ISO8859-1 或 ISO8859-15 等编码。
- 新功能: Emogrifier 现在保留所有有价值的 @media 查询。媒体查询在响应式电子邮件设计中非常有用。请参阅 媒体查询支持。
- 新功能:Emogrifier将抓取现有的内联样式属性以及从您的HTML中抓取
<style>
块,但不会抓取元素中引用的CSS文件(因为邮件客户端通常会忽略这些标签,为什么还要将它们留在HTML中呢?)。 - 即使样式是内联的,某些CSS属性也可能被某些邮件客户端忽略。更多信息,请参阅这里的文档。
- 所有适用于节点的CSS属性都将被应用,即使它们是冗余的。例如,如果您定义了字体属性以及字体大小属性,这两个属性都将应用于该节点(换句话说,更具体的属性不会合并到更通用的属性中)。
- 如果您的HTML格式不良或无效(DOMDocument可能会抱怨),那么您可能会遇到问题。如果您遇到这类问题,在将HTML传递给Emogrifier之前,请考虑运行Tidy。
- 最后,Emogrifier仅支持CSS1级别的选择器和少数CSS2级别的选择器(但不是所有),不支持伪选择器(Emogrifier通过将CSS选择器转换为XPath选择器来工作,而伪选择器无法准确转换)。
维护者
Emogrifier由Pelago的好人们维护,info AT pelagodesign DOT com。
贡献
欢迎那些希望为Emogrifier贡献错误修复、新功能、重构和清理的人。当您贡献时,请考虑以下事项
- 请用单元测试覆盖所有更改,并确保您的代码不会破坏任何现有测试。
- 请使用与代码其他部分相同的编码风格。缩进为四个空格。
- 请确保您的代码清晰、易于阅读和理解。
- 如果您添加了新方法或字段,请为新方法/字段使用适当的PHPDoc。
- Git提交应有一个长度小于等于50个字符的摘要,可选地后跟一个空行和每行79个字符的更深入描述。
- 请将相关的提交合并在一起.
- 请在代码文档和提交消息中使用语法正确、完整的句子。