JS:页面字体根据页面大小变化

基础知识:PX,Em 和 Rem的区别

1.PX实际上就是像素,用PX设置字体大小时,比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,如果改变了浏览器的缩放,这时会使用我们的Web页面布局被打破。这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。因此,这时就提出了使用“em”来定义Web页面的字体。

2.EM就是根据基准来缩放字体的大小。EM实质是一个相对值,而非具体的数值。这种技术需要一个参考点,一般都是以的“font-size”为基准。另外,em是相对于父元素的属性而计算的,如果想计算px和em之间的换算,输入数据就可以px和em相互计算。

3.EM是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小。而Rem是相对于根元素,这样就意味着,我们只需要在根元素确定一个参考值。

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

如果我们要把自己做成动态变化 需要用到rem

1,设rem置默认大小的:

在Html标签上先设置上一个固定大小的font-size,例:

 html {
       font-size: 6px;
   }

之后您用1rem的字体就会默认为6px大小,2rem12px

2,利用JS监控页面大小变化,改变html的默认font-size

定义函数resize()

function resize() {
      var ww = window.innerWidth
      if(window.screen && ww-1> window.screen.width){
        window.requestAnimationFrame(resize)
      }
      else{
        if(ww > 1730){
          ww= 1920
        }
        document.documentElement.style.fontSize = ww/320 + 'px'
        document.body.style.opacity = 1
      }
    }
    if(document.readyState !=="loading"){
      resize()
    }
    else{
      document.addEventListener("DOMContentLoaded",resize)
    }
    window.addEventListener('resize',resize)
  }

这里我拿的是屏幕分辨率为1920px为例子,

3,当进入方法时

如果我们的页面再loading的时候,我们就默认执行第一次的宽度同步。

  if(document.readyState !=="loading"){
      resize()
    }

4,当进页面缩小的时候

我们就开始插入resize为监听函数

  else{
      document.addEventListener("DOMContentLoaded",resize)
    }

我们定义一个监听页面宽度变化的函数,当页面宽度发生变化的时候,我们就去改变Html上的font-size默认大小,默认大小改变幅度等于页面当前页面的与1920PX的变化比例,此时,文本中使用到Rem单位的字体就顺利动态变成适合的大小了。

 if(ww > 1730){
          ww= 1920
 }
document.documentElement.style.fontSize = ww/320 + 'px'
document.body.style.opacity = 1

总结:个人推荐rem的使用放在一些变化比较大的页面,但是rem不适用于控件宽高大小,rem的计算比较麻烦,如果用在控件的宽高之类上,容易引起页面变形
想了解更多的前端小技巧技术,请关注我,我的博客将不断的更新

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值