首页 > 其他分享 >rem布局快速写法

rem布局快速写法

时间:2023-08-12 14:11:33浏览次数:34  
标签:documentElement px 布局 clientWidth 宽度 rem 设计 100 写法

vw的兼容性已经没问题,现在推荐优先使用vw

但是rem布局还是有其用武之地,比如需要动态改变字体大小的场景(有小,中,大三种字体,可手动选择,方便不同人群查看)

vw 和 rem 的兼容性

| 兼容性 | ios | 安卓 |

| rem | 4.1+ | 2.1+ |

| vw | 6.1+ | 4.4+ |


js快速写法(与设计稿不挂钩)

document.documentElement.style.fontSize = document.documentElement.clientWidth / 100 + 'px'; 

css快速写法1(与设计稿不挂钩)

html {fons-size: 1vw}

css快速写法2(与设计稿挂钩)

/* 基于UI width=750px DPR=2的页面 */
html {
    font-size: calc(100vw / 750);
}

css快速写法3(与设计稿挂钩)

/* 基于UI width=750px DPR=2的页面 */
html {
    font-size: calc(100vw / 7.5);
}

原理:

实际px = (手机屏幕宽度 / 设计稿宽度) * 设计稿px

如果把 font-size = (手机屏幕宽度 / 设计稿宽度),即 1rem = (手机屏幕宽度 / 设计稿宽度), 这个时候写 200px(设计稿宽度),可直接写成 200rem

由于 手机屏幕宽度 / 设计稿宽度 通常结果为小数,例如 100vw / 750 = 0.133333333 vw

为了书写方便通常会放大100倍 令 1rem = (手机屏幕宽度 / 设计稿宽度) * 100,这样写 200px, 要写成 2rem

本人觉得,还不如不放大100倍,直接就用 1rem = (手机屏幕宽度 / 设计稿宽度),font-size写成小数,总比所有的px都除以100要方便吧

 

js完整写法

var documentElement = document.documentElement;

function setRem() {
    var clientWidth = documentElement.clientWidth;
    // 屏幕宽度大于780,认为是PC端,不放大
    clientWidth = clientWidth < 780 ? clientWidth : 780;
    // 系数为100,当屏幕很小,例如320,html大小是3.2px,小于浏览器最小字体12px,可将ratio改为10
    // 本人认为没必要,小于浏览器最小字体,会显示为最小字体,无妨
    // ratio 改为 750,可与设计稿挂钩
    var ratio = 100;
    documentElement.style.fontSize = clientWidth / ratio + 'px';
}

document.addEventListener('DOMContentLoaded', setRem);
window.addEventListener('orientationchange' in window ? 'orientationchange' : 'resize', setRem);

 

标签:documentElement,px,布局,clientWidth,宽度,rem,设计,100,写法
From: https://www.cnblogs.com/mengff/p/17624754.html

相关文章

  • github 无语的问题,Host does not existfatal: Could not read from remote repository
    Unabletoopenconnection:Hostdoesnotexistfatal:Couldnotreadfromremoterepository.image.pngimage.pngimage.pngPleasemakesureyouhavethecorrectaccessrightsandtherepositoryexists.如果githubdesktop和gitpu......
  • 移动端布局之flex布局
    什么是flex布局基本含义Flex是FlexibleBox的缩写(注:意思是“灵活的盒子容器”),意为”弹性布局”,是CSS3引入的新的布局模式,用来为盒状模型提供最大的灵活性,它决定了元素如何在页面上排列,使它们能在不同的屏幕尺寸和设备下可预测地展现出来。基本概念采用Flex布局的元素,称为......
  • if条件分支及条件嵌套不同写法
    1、使用if()elseif()条件判断的普通语句写法intmain(){ intage=0; printf("请输入年龄:"); scanf("%d",&age); if(age<18){ printf("未成年\n"); }elseif(age>=18&&age<40){ printf("青年\n"); }e......
  • Linux MQTT智能家居项目(智能家居界面布局)
    (文章目录)前言一、创建工程项目1.选择工程名称和项目保存路径2.选择QWidget3.添加保存图片的资源文件:在工程目录下添加Icon文件夹保存图片:将文件放入目录中:将图片添加进入资源文件中:二、界面布局准备工作这里我们一共显示4个界面:LED控制界面,温度湿度显示界面,光......
  • C#中四舍五入的正确写法是什么?
    概述:就在今天,测试提一个BUG,是什么呢?就是在计算商品采购价时,需要保留2位小数,当时是使用【Math.Round(采购价,2)】这种方法进行四舍五入的,但是这样写会有问题,至于什么问题呢,来看看这篇文章就对了!四舍五入是一种精确度的计数保留法。在取小数近似数的时候,如果尾数的最高位数字是4或者......
  • C#中四舍五入的正确写法是什么?
    概述:就在今天,测试提一个BUG,是什么呢?就是在计算商品采购价时,需要保留2位小数,当时是使用【Math.Round(采购价,2)】这种方法进行四舍五入的,但是这样写会有问题,至于什么问题呢,来看看这篇文章就对了!四舍五入是一种精确度的计数保留法。在取小数近似数的时候,如果尾数的最高位数字是4......
  • 储能pcb的布局注意事项与制造难点
    随着新能源需求的不断增长和能源结构的转型,储能技术的市场规模不断扩大。储能PCB作为储能系统中电池模块的重要组成部分,对整个系统的安全性和性能起到关键作用。今天我们就来聊聊,储能pcb有什么特征。什么是储能:储能是指能量的存储,是指通过介质或设备把能量存储起来,在需要时再释放......
  • GaussDB(DWS)函数不同写法引发的结果差异
    本文分享自华为云社区《GaussDB(DWS)函数结果差异案例之greatest》,作者:你是猴子请来的救兵吗。GaussDB(DWS)支持多种兼容模式,为了兼容目标数据库,各模式之间或多或少存在一些行为差异。这里分享一个mysql兼容模式下的表达式函数因不同写法引发的结果差异案例。问题背景问题版本 Gau......
  • .NET对象的内存布局
    在.NET中,理解对象的内存布局是非常重要的,这将帮助我们更好地理解.NET的运行机制和优化代码,本文将介绍.NET中的对象内存布局。.NET中的数据类型主要分为两类,值类型和引用类型。值类型包括了基本类型(如int、bool、double、char等)、枚举类型(enum)、结构体类型(struct),它们直接存储值。......
  • Leetcode 27. 移除元素(Remove Element)
    题目链接给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度.不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组.元素的顺序可以改变.你不需要考虑数组中超出新长度后面的元素.说明:为什么返回数值是整数,但输......