美文网首页
2020-04-18 用MJML开发EDM - 字体自适应

2020-04-18 用MJML开发EDM - 字体自适应

作者: abramyang | 来源:发表于2020-04-18 14:17 被阅读0次

字体自适应

本项目的UI童鞋坐标日本分公司,估摸着和我一样也是初次对邮件进行设计,对于设计稿只出了PC版,字体最大有66px,因为时间仓促,无法赶出mobile版本设计稿,只能simply按比例缩小字体写进media query来适配。

按照比例来生成font.mjml

*假设你已经知道如何将类应用到mj元素上

时间仓促,我就简单的写了一个font.js,然后插入在网页上,复制粘贴至font.mjml。

const getFontSize = (fontSize, screenSize) => (screenSize / 600) * fontSize; //屏幕÷设计稿宽度×设计稿文字大小

const renderFontStyle = (type) => {
  const screens = [600, 375]; //pc屏幕600,mobile 375为基准的文字大小,然后屏幕小于480的时候便认为是mobile
  const breakpoints = [600, 480]; 

  let screen = screens[type];
  let breakpoint = breakpoints[type];

  return ` <mj-style ${type ? "" : `inline="inline"`}>
    ${type ? `@media only screen and (max-width:${breakpoint}px) {` : ""}
      .f-66 div {
         font-size: ${getFontSize(66, screen)}px !important;
      }

      .f-48 div {
        font-size: ${getFontSize(48, screen)}px !important;
     }
     ${type ? `}` : ""}
     </mj-style>
    `;
};

先大致预览设计稿,导出至Zeplin,然后查看要用到的字体,写在js的return语句中,最后手动生成Mjml文件,当然,有时间伙伴们可以尝试下用node.js来生成这个文件。

字体class写法注意事项

如果你没有了解过Mjml,请先移步通读 Mjml documentation,并且 try it live 查看mjml生成了什么。
假设你写了 .foo { font-size: 16px;} 这个class,然后应用到<mj-text>标签里属性css-class="foo"却没有生效。
首先因为在任何类的属性后面需要加上!important,其次这个类是应用到了<td>标签上而不是文字节点的父节点的<div>上,因此要写成:

.foo div { font-size: 16px!important;}

如果父节点是<a>标签,那么写成:

.foo a { font-size: 16px!important;}

如果父节点是其他标签,那么就改成其他标签试试。如果你try it live你就会更加清楚你写的东西是如何应用在html上。

相关文章

网友评论

      本文标题:2020-04-18 用MJML开发EDM - 字体自适应

      本文链接:https://www.haomeiwen.com/subject/kgbvvhtx.html