vh,vh适配的方法
将视口宽度 window.innerWidth
和视口高度 window.innerHeight
等分为 100 份,且将这里的视口理解成 idealviewport 更为贴切,并不会随着 viewport 的不同设置而改变。
- vw : 1vw 为视口宽度的 1%
- vh : 1vh 为视口高度的 1%
- vmin : vw 和 vh 中的较小值
- vmax : 选取 vw 和 vh 中的较大值
如果设计稿为 750px,那么 1vw = 7.5px,100vw = 750px。其实设计稿按照设么都没多大关系,最终转化过来的都是相对单位,上面讲的 rem 也是对它的模拟。这里的比例关系也推荐不要自己换算,使用 pxtoviewport 的库就可以帮我们转换。当然每种方案都会有其弊端,这里就不展开讨论。
纯Rem适配的思路与问题
适配方案 1
1 | //移动垂直屏幕适配方案 |
适配方案 2
通过对 initial-scale = 1/dpr 的设置,已将对屏幕的描述从物理像素转化到了物理像素上了,这将是后续推导的基础,且设计稿为 750px。
- 物理像素为 750 = 375 * 2,若屏幕等分为 10 份,那么 1rem = 75px,10rem = 750px;
- 物理像素为 1125 = 375 * 3,若屏幕等分为 10 份,那么 1rem = 112.5px, 10rem = 1125px;
- 物理像素为 1242 = 414 * 3, 若屏幕等分为 10 份,那么 1rem = 124.2px, 10rem = 1242px;
因此可推导出 rem 的设定方式:
1 | document.documentElement.style.fontSize = |
下面我们将 750px 下,1rem 代表的像素值用 baseFont 表示,则在 baseFont = 75 的情况下,是分成 10 等份的。因此可以将上面的公式通用话一些:
1 | document.documentElement.style.fontSize = |
整体设置可参考如下代码:
1 | (function (baseFontSize) { |
动态绑定的原理
https://segmentfault.com/a/1190000011294519?utm_source=tag-newest#articleHeader8
这个链接的代码,emmm 感觉可以深研究
1 | var oInput1 = document.getElementById("input1"); |
取代$ajax的方式
原生
1 | fetch(url) |
兼容的话就是用 xmlhttprequest 实现 promise 方法,GitHub 有这个,自己也可以简化。
取代选择器$()的方式
1 | function $(elem) { |