随笔 - 83  文章 - 1 评论 - 24 阅读 - 23351
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

一、概述

rem是一个相对长度单位,它的单位长度取决于根标签html的字体尺寸。rem即root em的意思,中文翻译为根em。浏览器的文本尺寸一般默认为16px,即默认情况下:

1rem = 16px

rem布局原理:根据CSS媒体查询功能,更改根标签的字体尺寸,实现rem单位随屏幕尺寸的变化,如下代码所示

@media only screen and (max-width: 1600px) and (min-width: 1280px){
    html{
        font-size: 14px;
    }
}
@media only screen and (max-width: 1280px) and (min-width: 960px){
    html{
        font-size: 12px;
    }
}
@media only screen and (max-width: 960px){
    html{
        font-size: 10px;
    }
}

注意,一般使用rem方案解决移动端适配问题。IOS6以上和Android2.1以上,基本覆盖所有流行的手机系统。 

 

二、详解

通过设置根标签的字体尺寸,可以改变rem,从而形成一个可控的统一参考系。

rem有两种思路。其一设置rem所代表的尺寸大小与屏幕宽度成正比。其二设置rem所代表的尺寸大小与px容易换算,方便按照设计稿写CSS,此时可以使用媒体查询动态修改根标签的字体尺寸来适配。

第一种思路:设置rem的大小与屏幕宽度成正比

通过JS动态设置根标签的字体尺寸,从而改变rem的尺寸。为了方便计算,一般将rem设置为视图宽度的十分之一。rem可以等比例适配所有分辨率终端(PC端和各种移动端)

// 获取视图宽度
// document.documentElement是指html根节点
// document.body是指body节点
// 因为兼容问题, 有时拿不到根节点的宽度就会拿body来顶替
let htmlWidth = document.documentElement.clientWidth || document.body.clientWidth;
console.log(htmlWidth);
 
// 设置html标签的font-size为视图宽度的十分之一
let htmlDom = document.getElementsByTagName('html')[0];
console.log(htmlDom.style.fontSize);
htmlDom.style.fontSize = htmlWidth / 10 + 'px';
console.log(htmlDom.style.fontSize);

注意,使用rem+sass可以更好、更方便的适配各种分辨率的移动端。

第二种思路:设置rem尺寸与px容易换算

浏览器的文本尺寸一般默认为16px,设置如下所示。使用媒体查询动态修改根标签的字体尺寸来适配不同分辨率的终端。

html{
    font-size: 62.5%; /* 62.5% * 16px = 10px */
}

注意,一般PC浏览器规定字体尺寸最小支持12px,手机端不存在这个问题。

posted on   是程序喵哇  阅读(655)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示