美文网首页
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