用rem使网页内容随屏幕宽度等比缩放

CSS/设计
657
0
0
2022-07-21
标签   CSS定位

每当给移动端写网页的时候就会出现要兼容各种屏幕大小的情况。

了解的rem之后,觉得挺不错的,决定尝试一下。

原理提一下:1rem的长度等于 html的font-size大小,默认浏览器的html的font-size是16px,所以

正常情况下1rem = 16px(chrome默认字体大小下限是12px);

要想让网页内容随屏幕大小而等比放大和缩小,首先我得找个基准值。我决定在屏幕宽度为320px,html的font-size等于10px为一个基准值。此时,1rem=10px;

随着屏幕的宽度不断改变,只要html的font-size大小跟着改变就行了。

这里有个等式:

基准html的font-size大小(10)/基准的屏幕宽度(320) = 实际html的font-size大小/实际的屏幕宽度

有了这个等式就好办了。

当页面载入时,马上获取实际的屏幕宽度 ,就可以根据上面的等式计算出实际html的font-size大小,随即页面中使用rem单位的内容实际大小,也跟着变化了。我写了一个函数:

var setFontSize = function(){
    var width =
        document.documentElement.clientWidth;//获取页面可见宽度   
    if(width>320){
        var w = width/32 
        var html = document.getElementsByTagName('html')[0];
        html.style.fontSize = w+'px';
    }else{
        //alert("此屏幕大小不支持")
    }
}

当页面载入时,使用此方法:

window.onload = function(){
    setFontSize();
}

当屏幕放大和缩小时,也可以使用这个方法:

window.onresize = function(){
    setFontSize();
}

如此便可实现网页内容随屏幕宽度等比缩放。

下面是这个demo的代码:

用rem使网页内容随屏幕宽度等比缩放