欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-04 17:47:33
...

基础知识: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的计算比较麻烦,如果用在控件的宽高之类上,容易引起页面变形
想了解更多的前端小技巧技术,请关注我,我的博客将不断的更新

相关标签: html5 javascript