PC端如何实现rem布局

ppylox
·4/6/2021·0 阅读
AI 摘要模型根据正文自动生成,仅供参考

PC端rem布局基于CSS3规定1rem等于根元素html的font-size。为便于计算,将设计稿(如1366px宽)下html的font-size设为100px,则1rem=100px,设计稿px值除以100即得rem值。通过initFontSize函数,以比例值(100/1366)乘以当前窗口宽度动态计算并设置html的font-size,同时隐藏横向溢出。监听window的resize事件实时调用该函数更新font-size,页面rem样式随之重新渲染,实现自适应布局。

\n

首先要了解的是css3规定:1rem的大小就是根元素<html>的font-size的值。

\n\n\n\n

所以我们为了方便计算,可以将font-size的大小设置为100px,也就是此时的1rem = 100px

\n\n\n\n

initFontSize() {

\n\n\n\n

        let whdef = 100 / 1366;  // 1366为设计稿的宽度,100为当前设计稿下的html标签的font-size大小,也可以为其他值,取100为了便于计算

\n\n\n\n

        let wH = window.innerHeight;// 当前窗口的高度

\n\n\n\n

        let wW = window.innerWidth;// 当前窗口的宽度

\n\n\n\n

        let rem = wW * whdef;// 以默认比例值乘以当前窗口宽度,得到该宽度下的相应FONT-SIZE值

\n\n\n\n

        document.documentElement.style.fontSize = rem + 'px'; //设置html标签的font-size值

\n\n\n\n

        document.documentElement.style.overflowX = 'hidden';

\n\n\n\n

      }

\n\n\n\n

设置为根元素html标签的font-size为100px的好处就是如果设计稿给的是px,那么直接用px的值除以100就可以得到rem的值,比如:

\n\n\n\n

设计稿是在1366px宽度下,一个div的高度是20px,那么可以计算出在1366px下,这个div的高度为0.2rem(20px/100px = 0.2rem),那么在写代码的时候直接写成height: 0.2rem 就可以了,但是在PC端用户可能会改变浏览器的宽度,那么此时需要监听浏览器的宽度变化,通过resize方法实现:

\n\n\n\n

window.addEventListener('resize', () => {

\n\n\n\n

        this.initFontSize();

\n\n\n\n

      })

\n\n\n\n

监听后需要实时更改html标签的font-size值,更新font-size后页面也会再次渲染通过rem设置的样式了。

\n

相关文章

评论 (0)

暂无评论,来写第一条吧