【问题标题】:Numbered Lists not working using PHP, CKEditor and Outlook编号列表无法使用 PHP、CKEditor 和 Outlook
【发布时间】:2017-06-29 00:25:53
【问题描述】:

当我在我的应用程序中使用 CKEditor 编写文本并将其格式化为编号列表时,它会正确显示

Answers to your questions:
  1. First Answer
  2. Second Answer

而后面的html是

<p><span style="color:#1f497d">Answers to your questions:</span></p>

<ol>
    <li><span style="color:#1f497d">First Answer</span></li>
    <li><span style="color:#1f497d">Second Answer</span></li>
</ol>

但是当我在电子邮件 Outlook 中发送此文本时(我的当前版本是 2016 年)没有显示数字,编号列表项的文本被格式化为比其他文本更小的字体,如下图所示.

当我用“显示源代码”检查后面的代码时,它会像这样显示

<p style="margin: 0;padding: 0;font-size: 100%;vertical-align: bottom;font-family: Arial, Verdana, sans-serif;line-height:1.2"><span style="color:#1f497d">Answers to your questions</span></p>

<ol style="margin-right:0px;margin: 0;padding: 0;font-size: 100%;vertical-align: bottom;font-family: Arial, Verdana, sans-serif;line-height:1.2">
    <li style="margin: 0;padding: 0;font-family: Arial, Verdana, sans-serif;line-height:1.4;vertical-align:middle;font-size:12px"><span style="color:#1f497d">First Answer</span></li>
    <li style="margin: 0;padding: 0;font-family: Arial, Verdana, sans-serif;line-height:1.4;vertical-align:middle;font-size:12px"><span style="color:#1f497d">Second Answer</span></li>
</ol>

Outlook 是否可能不理解该标签,或者您对我有什么其他建议吗?在这种情况下可能是什么问题?

感谢您的帮助!

【问题讨论】:

  • 这绝对是您之前评论的问题的重复。您可以使用我之前发布的相同 JSFiddle / 代码来获得它 - 您只需要替换 &bullet;使用您的数字并调整任何间距。编辑添加重复链接:stackoverflow.com/a/22053157/1308792
  • 此外 - Outlook 绝对不理解 OL / UL 标签。它还为段落标签添加了填充,所以我也会避免使用这些。我将发布带有代码和更新小提琴的答案,因为我之前的答案没有解决文本格式问题。

标签: php html outlook format ckeditor


【解决方案1】:

这是一个 JS 小提琴: http://jsfiddle.net/GHC7m/81/

Outlook 不理解 OL/UL 标签,也会给 P 标签添加额外的填充。为了格式化你拥有的文本,我把它们变成了 div 标签。这些需要包含在任何文本周围,包括 TD 中的文本。如果我没记错的话,Outlook 也有一些关于填充/边距与其他电子邮件呈现客户端如何处理这些属性的奇怪之处,但您应该在 SO 上搜索更多信息。

永远不要尝试对您的 TD 或 TR 标签应用填充或边距,这会弄乱您的表格。您还应该在所有 div 上添加字体系列、字体大小和行高。

    <div style="font-family: Times, georgia, serif; font-size: 13px; line-height: 17px;color:#1f497d">Answers to your questions:</div>
    <table cellspacing="0" cellpadding="0">
        <tr><td width="30" align="center" valign="top">
                <div style="font-family: Times, georgia, serif; font-size: 13px; line-height: 17px;color:#1f497d;text-align:center;">1.</div>
            </td>
            <td width="200" align="left" valign="top">
                <div style="font-family: Times, georgia, serif; font-size: 13px; line-height: 17px;color:#1f497d;">
                    First answer 
                </div>
             </td>
        </tr>
        <tr><td width="30" align="center" valign="top">
                <div style="font-family: Times, georgia, serif; font-size: 13px; line-height: 17px;color:#1f497d;text-align: center;">2.</div>
            </td>
            <td width="200" align="left" valign="top">
                <div style="font-family: Times, georgia, serif; font-size: 13px; line-height: 17px;color:#1f497d">
                    Second answer
                  </div>
            </td>
        </tr>
    </table>

【讨论】:

  • 首先感谢您的详细解答。我已经在另一篇文章中提到了我应该使用表格而不是 OL 和 UL 的问题,问题是 CKEditor 提供了多个选项来格式化文本。其中之一是创建有序列表和项目符号列表,并为它们提供默认标签 OL/UL。目前,我解决了用 Outlook 所期望的完全替换构建的 html 的问题(我通过使用 Outlook 创建有序列表并检查源来得到它),但实际上我喜欢附加一个使 ol 标签工作的 css 的选项。
  • 你能澄清一下吗?我正在阅读,当您使用源代码 Outlook 输出并且可以正常工作时,您无法让 OL/UL 正确呈现,但是您希望 CSS 使 OL 标记工作,这些陈述有点矛盾。
  • 目前我使用 jquery 将 LI 元素的类设置为“MsoListParagraph”,因为我看到这是 Outlook 所做的,如果你让它生成一个列表并且使用这个选项它可以显示列表。但我真正想做的是让普通标签与一些样式或类似的东西一起工作。
  • 如果使用 class="MsoListParagraph" 可以正确显示,这意味着您正在使用 Outlook 包含的预设 CSS 样式并且它正在工作,您不需要做任何进一步的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多