如何替换富文本里的px为vw

初级

适合简单的文本内容,但遇到图片链接、a链接时也会去匹配替换,从而使链接失效。

html = html?.replace(/((\d+)px|(\d+)\.(\d+)px)/g, (s, t) => {
      s = s.replace("px", "");
      let value = px2vw(s);
      return value + "vw";
    });

进阶

将匹配替换的范围限定在 style 里,从而避免影响到其它地方。

html = html?.replace(
      /style='[^\']*?'|style="[^\"]*?"/g,
      (match, capture) => {
        match = match?.replace(/((\d+)px|(\d+)\.(\d+)px)/g, (s, t) => {
          s = s.replace("px", "");
          let value = px2vw(s);
          return value + "vw";
        });
        return match;
      }
    );

转换方法

/**
 * px 转 vw
 * @param {number} value 要转化的px值
 * @param {object} option { @param length 转换后的精度,即小数点位数 @param viewportWidth UI设计稿的宽度 }
 * @returns number
 */
export function px2vw(value, option = {}) {
  let { length = 6, viewportWidth = 390 } = option;
  const vw = (value / (viewportWidth / 100)).toFixed(length);
  return Number(vw);
}

© 版权声明
THE END
喜欢就支持一下吧
点赞0

Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYAHdZEZ' (Errcode: 28 - No space left on device) in /www/wwwroot/583.cn/wp-includes/class-wpdb.php on line 2345
admin的头像-五八三
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

图形验证码
取消
昵称代码图片