通过响应式设计稿尺寸不一的情况下,通过 resize事件
时判断窗口选用对应客户端的 设计稿宽度
运算,辅以 @media响应式
即可完美复现响应式的设计啦。
计算基准值
将js代码放在
<head>
内,且不依赖任何插件以保证他最早被执行。
(function () {
function recal() {
let docElement = document.documentElement || document.body;
// #region 可根据响应式需求自由调整逻辑
let clientWidth = docElement.clientWidth,
designWidth = 1200; //PC端设计稿宽度(主内容区域)
if (clientWidth < 750) { // 客户端屏幕宽度小于一定尺寸时
designWidth = 640; //转为移动端设计稿宽度
} else if (clientWidth < designWidth) {// 客户端屏幕宽度小于 PC端设计稿宽度 但未需转换成 移动端设计 时
clientWidth -= 80
// 解决在750~1200左右单独设计的情况,让内容主体的展示有一定的留白
} else { //否则直接应用PC端设计稿宽度
clientWidth = designWidth;
}
// #region
docElement.style.fontSize = (clientWidth / designWidth) * 100 + "px";
}
window.addEventListener("resize", recal);
recal();
})();
封装ptr函数
css预处理器编写函数(我这边用的是stylus)
ptr(px){
return unit((px / 100), 'rem');
}
body{
font-size: ptr(12)
}
@media screen and (max-width: 1200px){
.container{
width: ptr(1200);
}
}
@media screen and (max-width: 750px){
.container{
width: ptr(750);
}
}