【问题标题】:How can I use a class to display specific element after display: none?如何在显示后使用类显示特定元素:无?
【发布时间】:2016-09-17 18:57:17
【问题描述】:

我正在创建一封包含不同变量字段的电子邮件,这些字段将由电子邮件客户端推送,然后将更新一个类的名称。

最初我是这样设置的:

.%%payment_frequency%%
{
    display: none;

将更新为分期付款或年度,然后将其应用于不应显示的各种 HTML 元素。这适用于某些电子邮件客户端,但不适用于 Outlook,我发现它在 Outlook 中不起作用,因为由于 3 个不同的变量选项和 3 个单独的类,某些元素具有多个类。

问题是,我可以反向执行此操作并将“显示:无”样式应用于元素,然后在需要时使用类来显示该特定元素吗?我已经尝试过但无法解决这个问题,所以任何建议都会有所帮助。

【问题讨论】:

  • 您可以使用!important 规则覆盖内联样式:css-tricks.com/override-inline-styles-with-css。我想说的是,尽管您应该尽量避免使用它(除非它是一次性电子邮件模板),因为它可能会导致将来出现维护噩梦或样式问题
  • 我不确定您使用什么来预处理您的电子邮件,但与其隐藏您不想显示的元素,不如干脆不 i> 包括您不想显示的元素。这样你就不用搞双班了。
  • @Milanzor 我们正在使用 Silverpop 发送电子邮件,但在实施过程中,我们不得不使用他们的 Transact 产品,该产品不允许动态内容。我们有 24 个不同版本的同一模板,其中包含小的更改,因此将使用相同的模板并使用可变提要来显示该电子邮件所需的特定元素。这比管理 24 封电子邮件更容易,因为它只是一个不同的表格行。
  • @Sam 您必须使用 CSS 特性来否决您的显示:无类。首先我要说的是,可能有一些电子邮件客户端不能正确地解释你的 CSS(有些甚至去掉它),众所周知,Outlook 的 HTML+CSS 电子邮件呈现非常糟糕,所以要小心。我会在回答中澄清

标签: html css class outlook styles


【解决方案1】:

您可以使用更具体的 CSS 类来再次显示元素。 您提供的代码:

.%%payment_frequency%%
{
    display: none;
}

将编译为,例如:

.Annual{
    display: none;
}

所以为了让某些“.Annual”行显示而不是隐藏,创建一个更具体的 CSS 类来实际显示它。

我想你有一张这样的桌子:

<table>
    <tr class="Annual">
        <td>Some stuff</td>
        <td>Some more stuff</td>
    </tr>
    <tr class="Annual ForceShowAnnual">
        <td>Some stuff</td>
        <td>Some more stuff</td>
    </tr>
</table>

我添加了 ForceShowAnnual 类,因此我们可以执行以下操作:

.Annual{
    display: none;
}

.Annual.ForceShowAnnual{
    display: block;
}

这意味着 .Annual.ForceShowAnnual 是一个更具体的 CSS 选择器,与 .Annual 选择器相对,使其覆盖显示:无;

此解决方案确实需要您向要显示的行添加额外的“ForceShowAnnual”类。

【讨论】:

  • 我发现的问题是 Outlook 只能识别每个元素的一个类,所以我不能在同一个 中同时使用“Annual”和“ForceShowAnnual”。如果可以的话,我原来的方法会奏效,但不幸的是,我仅限于一节课。
  • 我期待 Outlook 会出现问题,因为什么时候不会!如果您无法使用此解决方案,则必须尝试在其上添加内联 'style="display: none;"'。就是这样,或者联系制作软件/CMS 的开发人员,以提供一种做你想做的事情的方法。
  • 我不得不关闭内联选项,我正在尝试解决变量问题,以便在需要时将其隐藏(或显示它们已经全部隐藏)。如果 Outlook 不会引起足够多的问题,Gmail 会引起更大的问题,因为它完全去除了页眉和页脚,所以我不能在那里使用任何类!感谢您对此的帮助
  • 是的,Gmail 也有自己的方式,可以消除“安全风险”。你最好的方法是通过 Mailchimps 'Beaker' (我想他们过去这么称呼它)、templates.mailchimp.com/resources/inline-css 或 Foundation 'Inliner'、foundation.zurb.com/emails/inliner-v2.html 来预处理你的电子邮件,所以所有的 CSS 都被移动到内联样式属性中,给您在所有电子邮件客户端中的最佳呈现。但我知道这在您当前的设置中可能是一个挑战。
【解决方案2】:

你可以创建两个类

.show{
  display:block;
}

其他类

.hide{
display:none;
}

或者您可以使用 css 可见性属性

.visible{
visibility: visible;
}
.non-visible{
visibility: hidden;
}

【讨论】:

  • 我总共有 11 个元素需要在不同的点进行更改,并将这些元素用于他们共享的 3 个主要主题。我可以放置 3 个主题的变量字段,这将允许它隐藏其他主题,只需要以相反的方式使用它
猜你喜欢
相关资源
最近更新 更多
热门标签