flexible.px2rem

39 篇文章 1 订阅
32 篇文章 0 订阅

需求场景
现在大部分M站的页面布局都是通过 flexible 的方案解决,flexible.js 里面提供了 px2rem 的函数方法,有些页面需要 js 中动态转换 px 为 rem 给元素设置样式,这时候就有两种方案:

  • 自己写一个函数方法,
  • 使用 flexible 提供的 px2rem;
    本着图省事的方案,采用直接找 flexible 的方法。但是竟然在 window 下没找到。

问题排查过程

  • 第一步,在 index.ejs 中找到了 flexible 的初始化代码,并且把 flexible 挂在了 window.lib 下,
    在这里插入图片描述

  • 第二步,但是页面初始化完成之后,打印 winlow.lib,得到的却是以下结果:
    在这里插入图片描述

  • 第三步,思考,应该是 window.lib 被某一步复写了。找到了罪魁祸首:public/lib/debug/lib.js 中,var lib, 直接把 lib 挂在到了 window,lib 被复写!
    在这里插入图片描述

  • window.lib 被调用的地方:最后会被 webpack 以 script src 的方式引入到页面中
    在这里插入图片描述

解决方案

  1. 修改 public/lib/debug/lib.js(开发环境)和 public/lib/min/lib.b545ebd6b.js (生产环境)的 var 为 let;亲测可行,风险小(但是不保证无风险);
  2. 修改 flexible 初始化挂载的时候不挂载在 window.lib,修改为 window.H5fit,如下图示:(应该无风险,但是不保证)
    在这里插入图片描述
  3. flexible 初始化挂载的时候再增加一个window对象的赋值,无风险(冗余代码,让新人摸不着头脑):
    在这里插入图片描述
    结论:
    个人建议第二种,并且希望在后续的模板规划中规避这个问题。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值