MJML Designs
MJML er et markup-sprog designet specifikt til at bygge responsive emails. I stedet for at kæmpe med HTML-tabeller og inline-styles for at opnå ensartet visning på Gmail, Outlook og Apple Mail, skriver du ren, semantisk markup, og MJML kompilerer det til gennemtestet HTML, der virker overalt.
Clerk.io’s email-kampagneeditor inkluderer en indbygget MJML-editor, hvilket gør det til den anbefalede metode til at skabe email-designs, der ser godt ud på enhver enhed eller klient.
Hvornår bruges det #
Brug MJML, når du opretter eller redigerer designs til Nyhedsbreve eller Triggere i Clerk.io Email.
Til on-site-designs — Search, Recommendations og visningslaget af Email Embeds — brug i stedet Design Editor eller Code Designs. MJML er kun relevant for selve emailsending-laget.
Grundlæggende struktur #
Ethvert MJML-dokument omslutter indhold i <mjml>, med en valgfri <mj-head> til globale styles og en <mj-body> til det synlige layout:
<mjml>
<mj-head>
<!-- Globale styles og attributter -->
</mj-head>
<mj-body>
<mj-section>
<mj-column>
<!-- Dit indhold her -->
</mj-column>
</mj-section>
</mj-body>
</mjml>
De vigtigste byggeklodser er:
<mj-section>— en række i fuld bredde<mj-column>— en kolonne i en række; brug flere for side-ved-side layouts<mj-text>— en tekstblok<mj-image>— et responsivt billede<mj-button>— en stiliseret call-to-action-knap<mj-divider>— en horisontal linje<mj-spacer>— tilføjer lodret afstand mellem sektioner
MJML-dokumentationen dækker hele listen over tilgængelige komponenter.
Produktvariabler #
Clerk.io’s
Liquid template-sprog fungerer inde i MJML på samme måde som i ethvert andet design. Omslut produktdata i {{ }} for at vise det.
<mj-section>
<mj-column width="35%">
<mj-image src="{{ product.image }}" href="{{ product.url }}" />
</mj-column>
<mj-column width="65%">
<mj-text font-size="16px" font-weight="bold">
{{ product.name }}
</mj-text>
<mj-text font-size="14px" color="#666666">
{{ product.price | money }}
</mj-text>
<mj-button href="{{ product.url }}" background-color="#000000">
Shop nu
</mj-button>
</mj-column>
</mj-section>
Produktloops #
Brug en {% for %}-loop for at gentage et layout-blok for hvert anbefalet produkt. Loopen gengiver én sektion pr. produkt i listen returneret af Clerk.io.
{% for product in products %}
<mj-section background-color="#ffffff" padding="10px 20px">
<mj-column width="35%">
<mj-image src="{{ product.image }}" href="{{ product.url }}" border-radius="4px" />
</mj-column>
<mj-column width="65%">
<mj-text font-size="16px" font-weight="bold">
{{ product.name }}
</mj-text>
<mj-text font-size="18px" font-weight="bold">
{{ product.price | money }}
</mj-text>
<mj-button href="{{ product.url }}" background-color="#000000">
Shop nu
</mj-button>
</mj-column>
</mj-section>
{% endfor %}
Betinget logik #
Brug {% if %} til at vise eller skjule dele af designet baseret på produktdata. Et almindeligt brugsscenarie er at vise den originale pris, når et produkt er på tilbud:
{% for product in products %}
<mj-section background-color="#ffffff">
<mj-column>
<mj-image src="{{ product.image }}" href="{{ product.url }}" />
<mj-text font-size="15px" font-weight="bold">
{{ product.name }}
</mj-text>
{% if product.price < product.list_price %}
<mj-text font-size="13px" color="#999999">
<s>{{ product.list_price | money }}</s>
</mj-text>
{% endif %}
<mj-text font-size="18px" font-weight="bold" color="#cc0000">
{{ product.price | money }}
</mj-text>
</mj-column>
</mj-section>
{% endfor %}
Du kan også bruge {% else %} for at vise et alternativ, hvis betingelsen ikke er opfyldt:
{% if product.in_stock %}
<mj-button href="{{ product.url }}" background-color="#000000">
Shop nu
</mj-button>
{% else %}
<mj-text font-size="13px" color="#999999" align="center">
Ikke på lager
</mj-text>
{% endif %}
Globale styles #
Brug <mj-attributes> inde i <mj-head> for at sætte standardstyles, der gælder for hele designet. Dette undgår at gentage samme skrifttype eller farve på hver komponent.
<mj-head>
<mj-attributes>
<mj-all font-family="Arial, sans-serif" />
<mj-text font-size="14px" color="#333333" line-height="1.6" />
<mj-button background-color="#000000" color="#ffffff" border-radius="4px" />
</mj-attributes>
</mj-head>
Enhver attribut sat her kan stadig overstyres på individuelle komponenter.
Fler-kolonne layout #
Brug flere <mj-column> elementer inden i én <mj-section> for at skabe side-ved-side layouts. Sæt eksplicitte width-værdier for at styre proportionerne.
Et produktgrid i to kolonner:
{% for product in products %}
<mj-section background-color="#ffffff" padding="10px">
<mj-column width="50%">
<mj-image src="{{ product.image }}" href="{{ product.url }}" />
<mj-text font-size="14px" font-weight="bold" align="center">
{{ product.name }}
</mj-text>
<mj-text font-size="13px" color="#666666" align="center">
{{ product.price | money }}
</mj-text>
<mj-button href="{{ product.url }}">Shop nu</mj-button>
</mj-column>
</mj-section>
{% endfor %}
For et reelt to-pr.-række grid, loop med loop.index og gruppér produkterne manuelt, eller brug en enkelt sektion med to hårdkodede kolonner, der refererer til products[0] og products[1].
Komplet eksempel #
Herunder er et komplet nyhedsbrevsdesign med globale styles, header, produkt-rækker med tilbudslogik og en footer.
<mjml>
<mj-head>
<mj-attributes>
<mj-all font-family="Arial, sans-serif" />
<mj-text font-size="14px" color="#333333" line-height="1.6" />
<mj-button background-color="#000000" color="#ffffff" border-radius="4px" font-size="13px" />
</mj-attributes>
</mj-head>
<mj-body background-color="#f4f4f4">
<!-- Header -->
<mj-section background-color="#ffffff" padding="24px 20px 12px">
<mj-column>
<mj-text font-size="24px" font-weight="bold" align="center">
Udvalgt til dig
</mj-text>
<mj-divider border-color="#eeeeee" padding="12px 0 0" />
</mj-column>
</mj-section>
<!-- Produkt-rækker -->
{% for product in products %}
<mj-section background-color="#ffffff" padding="10px 20px">
<mj-column width="35%">
<mj-image
src="{{ product.image }}"
href="{{ product.url }}"
border-radius="4px" />
</mj-column>
<mj-column width="65%">
<mj-text font-size="15px" font-weight="bold">
<a href="{{ product.url }}" style="color:#333333; text-decoration:none;">
{{ product.name }}
</a>
</mj-text>
{% if product.price < product.list_price %}
<mj-text font-size="13px" color="#999999">
<s>{{ product.list_price | money }}</s>
</mj-text>
{% endif %}
<mj-text font-size="18px" font-weight="bold" color="#000000">
{{ product.price | money }}
</mj-text>
{% if product.in_stock %}
<mj-button href="{{ product.url }}" padding="10px 0 0">
Shop nu
</mj-button>
{% else %}
<mj-text font-size="13px" color="#999999">
Ikke på lager
</mj-text>
{% endif %}
</mj-column>
</mj-section>
<mj-section background-color="#ffffff" padding="0 20px">
<mj-column>
<mj-divider border-color="#eeeeee" padding="0" />
</mj-column>
</mj-section>
{% endfor %}
<!-- Footer -->
<mj-section background-color="#f4f4f4" padding="20px">
<mj-column>
<mj-text font-size="12px" color="#999999" align="center">
Du modtager denne email, fordi du har tilmeldt dig opdateringer.
</mj-text>
</mj-column>
</mj-section>
</mj-body>
</mjml>
Forhåndsvisning og test #
Clerk.io’s MJML-editor kompilerer markuppen og viser et live-preview, mens du redigerer. For at teste på tværs af email-klienter før udsendelse, indsæt den kompilerede HTML i et værktøj som Litmus eller Email on Acid.
For komplet komponentreference, se MJML-dokumentationen.
Denne side er oversat af en hjælpsom AI, og der kan derfor være sproglige fejl. Tak for forståelsen.