css3中rem详解

css3新增单位-rem(移动端进行页面适配)⭐️ 并且当我们使用vant等插件的时候,里面的数据都是使用px的,我们没有办法转化(postcss-pxtorem是基于vant的插件,可以将所有带px的单位–包括vant组件内的自动转化为rem单位)------------------>需要在移动端进行页面适配。----所以我们要使用postcss-pxtorem插件将带px的转化为带rem单位的数据;-----postcss-pxtorem使用的设计稿是vant的设计稿宽度为375px;----但是我们自己的设计稿若不是375px时就须要进行手动转化; 阅读详情

rem是css3新增的一个属性,它是一个相对单位,直观上可以说:是相对于html元素字体大小的单位。

  1. 兼容性:大多数浏览器都支持,除了IE8以下不支持,但rem一般多用于移动端页面。
  2. 优点:在计算子元素有关的尺寸时,只要根据html元素字体大小计算就好。不再像使用em时,得来回的找父元素字体大小频繁的计算。

1、针对设计稿计算rem


 所有浏览器都一致默认保持着 16px 的默认字号,rem与px关系为:1rem = 10px,10/16=0.625=62.5%。在这里文档元素设置 font-size: 62.5%,可以很方便的利用十进制进行计算了。
html {font-size: 62.5%;/*10 ÷ 16 × 100% = 62.5%*/}
body {font-size: 1.4rem;/*1.4 × 10px = 14px */}
h1 { font-size: 2.4rem;/*2.4 × 10px = 24px*/}

所以如果我有一个宽度为640的设计稿,通过上面的方法计算出对应元素rem的大小,(注意:实际项目不可以设置为font-size:62.5%,因为chrome不支持小于12px的字体,计算小于12px的时候,会默认取12px去计算,导致chrome的rem计算不准确)。
例子如下:

1、按照习惯,代码如下:

css样式

2、调试工具:chrome
效果图尺寸如下:
效果图尺寸如下

高度不应该是88px么?为什么差了那么多呢?这是由于:chrome在字体小于12px时都当12px来处理,所以才会有这个误差。
8.8 * 10 = 88 ;
8.8 * x = 105.59; x = 11.999,浏览器计算存在误差,正好不就是12px么。

绕过这个坑,直接讲html字体大小设置成625%,即100px,在看下面的效果:

这里写图片描述

这样便绕过了88的死穴。

设备适配:

假设项目设计稿是640,就直接将640作为参考,html字体设置为625% 或者100px。88px就可以直接换算成 .88px ;适配其他尺寸的设备,比如:320,88px的元素应该是44px,要是直接计算元素的尺寸,那引入rem就没有任何意义了,直接用媒体查询,将html字体尺寸设置为312.5%即可,元素的尺寸只写一套。一套设计稿,适配n多尺寸的设备,是不是很爽,计算方法:
320 / 640 * 625% = 312.5%
其他尺寸的直接将320换为对应的尺寸即可。

2、针对不同分辨率计算font-size


监听浏览器更改 html的font-size。以640的设计稿为基准,可以放入rem.js中,单独引用

法一:

<script>
    (function(doc, win) {
        var docEl = doc.documentElement,
            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
            recalc = function() {
                var clientWidth = docEl.clientWidth;
                if(!clientWidth) return;
                docEl.style.fontSize = 100 * (clientWidth / 640) + 'px';
            };
        if(!doc.addEventListener) return;
        win.addEventListener(resizeEvt, recalc, false);
        doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
</script>

法二:

<script>
    window.onload = function() {
        //640代表设计师给的设计稿的宽度,你的设计稿是多少,就写多少;100代表换算比例,这里写100是为了以后好算,比如,你测量的一个宽度是100px,就可以写为1rem,以及1px=0.01rem等等
        getRem(640, 100)
    };
    window.onresize = function() {
        getRem(640, 100)
    };

    function getRem(pwidth, prem) {
        var html = document.getElementsByTagName("html")[0];
        var oWidth = document.body.clientWidth || document.documentElement.clientWidth;
        html.style.fontSize = oWidth / pwidth * prem + "px";
    }
</script>
前端开发入门到实战:CSS中字体单位:px、em、rem和% 对于绘图和印刷而言,“单位”相当重要,然而在网页排版里,单位也是同样具有重要性,在CSS3普及以来,更支持了一些方便好用的单位(px、em、rem…等),这篇文章将整理这些常用的CSS单位,也帮助自己未来在使用上能更加得心应手。 “网页”和“印刷”的单位 若要把单位做区隔,最简单可以分为“网页”和“印刷”两大类,通常对于CSS来说只会应用到网页的样式,毕竟真正要做印刷,还是会倾向透过排版软件来进行... 阅读详情

相关推荐

CSS的REM单位详解

REM单位是CSS中的相对单位,它相对于根元素的字体大小进行度量。通过设置根元素的字体大小,可以使用REM单位来定义其他元素的尺寸。在上述代码中,body元素的字体大小被设置为1rem,它将等于根元素的字体大小(即16像素)。同样,h1元素的字体大小为2rem,它将等于根元素字体大小的两倍(即32像素)。REM单位的大小取决于根元素的字体大小。相比其他单位(如像素、百分比等),REM单位的值是相对于根元素字体大小的倍数。通过使用REM单位,可以根据根元素的字体大小自动调整其他元素的尺寸,以实现响应式设计。

PixelInk的博客 977

rem单位

rem单位 rem是css中的一个尺寸单位,和px、%,em(相对于父元素的字体大小)单位一样都是设置大小 rem:html字体大小的多少倍 用法: 设置rem大小: document.documentElement.style.fontSize=(document.documentElement.clientWidth/750)*100+'px'; 750px是当前流行美工稿...

weixin_43294560的博客 7658

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1114

rem是什么

rem 是一个长度单位 px,绝对长度单位,最常用 em,相对长度单位 ,相对于父元素,不常用 rem,相对长度单位,相对于根元素,常用语响应式布局

HonG 4000

Cloudflare SaaS 优选IP实战:提升大陆访问速度的配置指南

本文详细介绍了如何通过Cloudflare SaaS优选IP提升中国大陆用户访问速度的配置指南。从基础环境准备到IP筛选方法,再到完整配置流程和效果验证,帮助用户突破免费套餐限制,精准优化网络线路,特别适合跨境电商和面向中国大陆用户的网站优化。

weixin_29231027的博客 685

Embarcadero Dev-C++ 6.3安装教程【保姆级】

Embarcadero Dev-C++ 6.3安装教程,保姆级教程~

Thebest_jack的博客 1万+

CSS3中REM使用详解

在页面中设置字体,我们知道有常见的两种,px 和 em. px 在Web页面制作中,我们一般使用“px”来设置我们的文本,因为他比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小(虽然一般人不会去改变浏览器字体大小),这时会使用我们的Web页面布局被打破,这时就提出了使用“em”来定义Web页面的字体。 em 一般都是b...

azxy19821020的博客 290

BurpSuit在不同浏览器中配置代理

文章通过分享各大浏览器如何设置代理的知识,帮助初学者快速掌握代理配置相关技能。

北冥同学的成长记录笔记 1万+

[CSS3教程]相对单位rem详解

作者:zhanhailiang 日期:2015-01-28 定义 CSS3新增了一个相对单位rem,其官方定义如下: font size of the root element rem,em,px单位的区别 rem单位和em单位都是相对大小,px是绝对大小。其区别在 em基于当前元素的(如果没设置就是继承其父元素的)font-size,这样会出现一些组合问

香巴拉 2505

MAC-电脑中的user文件夹在哪?

MAC-电脑中的user文件夹在哪?

兴趣是最好的老师 1万+

ENS160传感器原理图设计,已量产(空气质量传感器)

ENS160 是一款集成式数字空气质量传感器,核心优势源于 “MEMS 传感元件 + 内置微处理器” 的架构。

不脱发的程序猿 573

CSS3 REM使用详解

在页面中设置字体,我们知道有常见的两种,px 和 em. px 在Web页面制作中,我们一般使用“px”来设置我们的文本,因为他比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小(虽然一般人不会去改变浏览器字体大小),这时会使用我们的Web页面布局被打破,这时就提出了使用“em”来定义Web页面的字体。 em 一般都是body的f...

分享我的点点滴滴,在成长路上与你同行! 308

MATLAB与ROS联合仿真——控制类功能模块介绍

MATLAB与ROS联合仿真——控制类功能模块介绍

慕羽★的博客 2353

html 如何设置rem,CSS3中REM使用详解

在页面中设置字体,我们知道有常见的两种,px 和 em.px在Web页面制作中,我们一般使用“px”来设置我们的文本,因为他比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,他改变了浏览器的字体大小(虽然一般人不会去改变浏览器字体大小),这时会使用我们的Web页面布局被打破,这时就提出了使用“em”来定义Web页面的字体。em一般都是body的font-size...

weixin_28338005的博客 1186

深度强化Q学习-基于微软AirSim仿真环境的自动驾驶案例(原理代码详解简易可行)

最近在学习《强化学习原理与Python实现》,肖智清著。参考第十二章的自动驾驶案例,写一篇总结,尽量做到简单可行,让有志于自动驾驶的小伙伴可以通过此篇博客可以管中窥豹,初步了解自动驾驶的强化学习训练过程。 本篇将自动驾驶问题转化为回合制的强化学习任务,设计以车辆观察图像和运行状态为输入的自动驾驶算法,并在AirSim仿真环境中进行训练和测试。本篇使用带经验回放和目标网络的基于深度Q网络算法设计并实现智能体,对经验回放、目标网络和深度Q学习算法进行简单介绍,并用代码实现。

shao918516的博客 8599

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

css3 rem图片帧序列,CSS3中REM单位的用法详解(代码示例)

很多网站都在使用难以在越来越多的不同设备中调整的像素单元,CSS3引入了一些新的单位,包括REM单位,它代表“root em”,本篇文章给大家分享的内容是关于REM的使用。那么,我们如何使用REM?假设我们有这个CSS:CSSarticle h2 {font-size:20px;}article p {font-size:12px;}首先,我们需要确定相对于所有字体的px大小。为了方便起见,我所做...

weixin_39968490的博客 226

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

html 中rem是什么单位,CSS3中REM单位的用法详解(代码示例)

很多网站都在使用难以在越来越多的不同设备中调整的像素单元,CSS3引入了一些新的单位,包括REM单位,它代表“root em”,本篇文章给大家分享的内容是关于REM的使用。那么,我们如何使用REM?假设我们有这个CSS:CSSarticle h2 {font-size:20px;}article p {font-size:12px;}首先,我们需要确定相对于所有字体的px大小。为了方便起见,我所做...

weixin_39739661的博客 455

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

css3开发:px em rem详解

概念介绍: 1、px (pixel,像素):是一个虚拟长度单位,是计算机系统的数字化图像长度单位,如果px要换算成物理长度,需要指定精度DPI(Dots Per Inch,每英寸像素数),在扫描打印时一般都有DPI可选。Windows系统默认是96dpi,Apple系统默认是72dpi。 2、em(相对长度单位,相对于当前对象内文本的字体尺寸):是一个相对长度单位,最初是指字母M的宽度

Generon的博客 620

css3_关于px、em、rem的区别详解

前言 在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位。 相对长度单位:按照不同的参考元素,又可以分为字体相对单位和视窗相对单位。 字体相对单位:em、ex、ch、rem; 视窗相对单位:vw、vh、vmin、vmax。 绝对长度单位:则是固定尺寸,它们采用的是物理度量单位:cm、mm、in、px、pt以及pc。但在实际应用中,我们使用最广泛的则是em、rem、px以及百分比(%)来度量页面元素的尺寸。 px单位   px是像素单位,也是绝对长度单位的一种。也就是说它的尺寸是固定的,

QiuRenBB的博客 468
上一篇: vue实现切换class(与style的绑定)
下一篇: Ajax中Post和Get的区别
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值