html动态设置根字体大小(页面字体使用rem单位可根据屏幕大小自适应)

html动态设置根字体大小(页面字体使用rem单位可根据屏幕大小自适应),第1张

html动态设置根字体大小(页面字体使用rem单位可根据屏幕大小自适应)

1.新建rem.js文件

(function(doc, win) {

let docEl = doc.documentElement,

    resizeEvt ='orientationchange' in window ?'orientationchange' :'resize',

    recalc =function() {

let clientWidth = docEl.clientWidth

      if ( !clientWidth )return

      if ( clientWidth ===320 ) {

docEl.style.fontSize =24 * (clientWidth /320) +'px'

      }

else {

docEl.style.fontSize =20 * (clientWidth /320) +'px'

      }

}

if ( !doc.addEventListener )return

  win.addEventListener(resizeEvt, recalc, false)

doc.addEventListener('DOMContentLoaded', recalc, false)

})(document, window)

2,将文件引入到main.js执行

1.rem

rem是相对于 根元素 的字体大小的单位

rem能等比例适配所有的屏幕,根据html的字体的大小来控制rem的大小

2.dpr设备像素

dpr = 物理像素 / 逻辑像素

物理像素:设计图量出的px(设备显示的px)

逻辑像素:css中设置的px

如果设计图的宽度是640px 或者 750px    dpr = 2

如果设计图的宽度是1080px              dpr = 3

3.vw

视窗宽度

1vw 等于视窗宽度的1%

100vw 等于视窗宽度的100%

4.vw 与 px 之间的换算

如果设计图的宽度是640px  则 dpr = 2

所以:逻辑像素 = 640px /2 = 320px

所以:320px = 100vw

所以:1vw = 3.2px

所以:31.25vw = 100px = 1rem

如果设计图的宽度是750px  则 dpr =2所以:逻辑像素 = 750px /2= 375px

所以:375px = 100vw

所以:1vw =3.75px

所以:26.67vw = 100px = 1rem

如果设计图的宽度是1080px  则 dpr = 3所以:逻辑像素 = 1080px / 3 = 360px

所以:360px = 100vw

所以:1vw =3.6px

所以:27.78vw = 100px

5.根元素字体大小的限制

如果设计图宽度为640px

则:根元素设置为

html{font-size:31.25vw}

如果设计图宽度为750px

则:根元素字体大小设置为

htmt:{font-size:26.67vw}

如果设计图宽度为1080px

则根元素字体大小设置为

html:{font-size:27.78vw}

6.计算方法:

为了方便计算:1rem = 100px,,所以,要除以100

已知 dpr = 2

如果量取设计图的某部分 宽度  300px

物理像素-------逻辑像素-------rem

则:300/2/100 = 1.5rem

7. rem是相对于根元素的字体大小的单位,能等比例适配所有的屏幕,根据html的字体的大小来控制rem的大小

如果设计图为 640px

根元素font-size=31.25vw 相当于100px,相当于 1rem

如果设计图为750px

根元素font-size=26.67vw 相当于100px,相当于 1rem

一般,我们要在公共样式中根据设计图的大小,设置根元素字体的大小,单位为vm,

如果设计图为640px,html{font-size:31.25vw}

如果设计图为750px,html{font-size:26.67vw}

然后,我们量取得px/2/100即:物理像素/2/100

分析设计图

假设设计图大小为1080px。这也就意味着,在开发时,需要兼容的最大分辨率为1080px,最小的为320px。

2. 调整视口

代码实例:

<!DOCTYPE html>

<head>

    <meta charset="UTF-8" />

    <title>布局之路-移动端开发实例</title>

    <meta name="viewport" content="width=device-width,user-scalable = no" />

    <link rel="stylesheet" type="text/css" href="css/reset.css" />

</head>

<body>

    <div class="wrap"></div>

</body>

</html>

代码解析:由于使用不同设备打开网页时,宽度均有所不同,所以不能讲视口设置为固定值,应当为width=device-width,即将视口设置为当前设备的宽度。

3. 确定设计图的最小字体

浏览器(部分)能够显示的最小字体未12px,当移动端页面宽度为320px时,要保证最小字体为12px,那么在1080px的设计图中,最小字体应当为42px。

代码实例:

    <style type="text/css">

        html {

            font-size: 42px

        }

    </style>

4. 按照设计图的像素进行开发

按照正常网页开发流程,进行网页开发即可。

5. 使用百分比和rem替换px

代码效果对比:

/*使用固定像素*/

.box {

    float: left

    width: 658px

    font-size: 72px

    text-align: center

    line-height: 195px

}

/*使用百分比和rem*/

.box {

    float: left

    width: 60.93%

    font-size: 1.71rem

    text-align: center

    line-height: 4.64rem

}

代码解析:

水平方向的值,将具体像素调整为百分比。百分比的计算是根据父级的内容区宽度进行计算的。

例如,父级宽度为1080px, 子级元素为197px,那么子元素转换为百分比为:197/1080*100%=18.24%。需要注意的是百分比根据父级计算,当标签结构级别不同时,计算公式中的“分母”也有所不同,在开发时这个地方很容易出现问题,请务必注意。

垂直方向的值,将具体像素调整为rem,与水平方向相比,垂直方向的计算就比较简单。例如,行高为195px,HTML标签当前的字体大小为42px,将行高转换为rem单位,即195/42= 4. 64rem。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7497784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存