RainyX 2019-11-19
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
场景实战这块内容每个人的内容都不一样。所以最近的更新基本都是我遇到并解决掉的问题。后期会把他们的内容贴地址。
amfe/lib-flexible 是手淘的可伸缩布局方案,学习的话可以点进去,都是中文的,我就不用复制了吧。
它是把屏幕分成了10份,1份==1rem。如750/10=75。
之后在 <html> 标签上增加 data-dpr属性和 font-size样式。然后我们就可以快乐的使用rem来基于根节点设置了。
viewprot 他会使用页面旧有的。基于第二点,在部分曲面屏手机上或者大屏幕手机(三星 note8)上,会出现右边出现大片空白。解决方案如下
因为默认 flexible 是根据系统缩放的。我们为了测试方便,我们可以人为设置一下<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover">。
注意以上方案上线时记得去掉。否则部分小页面会出问题。
因为我司历史产品原因,有部分老年用户(不说老年了,我爸也是调)。因为手机字体太小,调节了手机的字体大小和字体缩放大小。
这就导致基础值被异常的放大了,页面显示乱了。
vw 方案,我不用字体大小还不行吗?嗯,这个方案的确可以。既然你放大了,那我给你缩小不就好了。
font-size 缩小。你别说,这个方案还真行。修改 flexible 增加 zoom 的控制。嗯,完美解决。
;(function(win, lib) {
// 默认1:1
var zoom = 1;
try{
// 构建一个真实的DOM
var dom = document.createElement('vv-ln-test-fontsize');
// 设置为一个理想值
dom.style.fontSize = '16px'
// 追加到DOM树中
document.head.appendChild(dom)
// 获取理想值和实际值的比例
zoom = 16/parseFloat(window.getComputedStyle(dom).fontSize);
console.log(zoom, document.documentElement.style.fontSize)
}catch(e){
console.log(e)
}
var vv_fontSizeZoom = lib.vv_fontSizeZoom || (lib.vv_fontSizeZoom = zoom);
})(window, window['lib'] || (window['lib'] = {}));function refreshRem(){
var width = docEl.getBoundingClientRect().width;
if (width / dpr > 750) {
width = 750 * dpr;
}
var rem = width / 10 * lib.vv_fontSizeZoom;//计算值进行比例换算
docEl.style.fontSize = rem + 'px';
flexible.rem = win.rem = rem;
}前端培训-初级阶段(9 -12) 之 移动端适配原理 rem(px、em、rem、%、vm)