JS:页面字体根据页面大小变化
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大小,2rem 为 12px
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的计算比较麻烦,如果用在控件的宽高之类上,容易引起页面变形
想了解更多的前端小技巧技术,请关注我,我的博客将不断的更新