首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rem布局的原理解析

em作为font-size的单位,其代表父元素的字体大小,em作为其他属性单位,代表自身字体大小——MDN 在面试时经常问一道和em有关的题,来看一下面试者对css细节的了解程度,如下,问s1...em做弹性布局的缺点还在于牵一发而动全身,一旦某个节点的字体大小发生变化,那么其后代元素都得重新计算,X﹏X。...rem作用于非根元素,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小——MDN rem取值分为两种情况,设置在根元素和非根元素,举个例子: /* 作用于根元素,相对于原始大小...: 首先是字体的问题,字体大小并不能使用rem,字体的大小和字体宽度,并不成线性关系,所以字体大小不能使用rem;由于设置了根元素字体的大小,影响所有没有设置字体大小的元素,因为字体大小继承的,难道要每个元素都显示设置字体大小...首先可以添加noscript标签提示用户 开启JavaScript,获得更好的体验 给html添加一个320的默认字体大小,保证页面可以显示 html {fons-size

1.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

元素可视区 client 系列

所以此时后退按钮不能刷新页面。 此时可以使用 pageshow事件来触发。,这个事件在页面显示触发,无论页面是否来自缓存。...在重新加载页面中,pageshow会在load事件触发后触发;根据事件对象中的persisted来判断是否是缓存中的页面触发的pageshow事件 注意这个事件给window添加。...docEl.style.fontSize = rem +'px'; }    setRemUnit( ) // reset rem unit on page resize 当页面尺寸发生变化的时候重新设置...rem大小 window . addEventL istener( 'resize',setRemUnit )    //pageshow页面重新加载触发 window . addEventListener...( ' pageshow', function(e) {        // e. persisted 返回的是true,从缓存取过来的页面也要重新加载 重新计算rem大小 if (e

54030

移动端页面的自适应rem

移动端页面rem 写移动端页面最麻烦的是什么,不同分辨率的适配!...rem和em很容易混淆,其实两个都是css的单位,并且也都是相对单位,现有的em,css3才引入的rem,在介绍rem之前,我们先来了解下 emem作为font-size的单位,其代表父元素的字体大小...,em作为其他属性单位,代表自身字体大小——MDN em做弹性布局的缺点还在于牵一发而动全身,一旦某个节点的字体大小发生变化,那么其后代元素都得重新计算 rem作用于非根元素,相对于根元素字体大小...;rem作用于根元素字体大小时,相对于其出初始字体大小——MDN rem取值分为两种情况,设置在根元素和非根元素,举个例子 /* 作用于根元素,相对于原始大小(16px),所以html的font-size...单位的属性,通过更改html元素的字体大小,就可以让子元素实际大小发生变化 html {font-size: 16px}p {width: 2rem} /* 32px*/html {font-size:

2.3K20

移动web开发之rem适配布局

怎样让屏幕发生变化的时候元素高度和宽度等比例缩放? 1. rem基础 rem单位 rem(root em)是一个相对单位,类似于em,em是父元素字体大小。...使用@media查询,可以针对不同的媒体类型定义不同的样式 @media可以针对不同的屏幕尺寸设置不同的样式 当你重置浏览器大小的过程中,页面根据浏览器的宽度和高度重新渲染页面 目前针对很多苹果手机...所以,我们需要把我们的less文件,编译生成css文件,这样i们的html页面才能使用。...vocode Less插件 Easy LESS插件用来把less文件编译为css文件 安装完毕插件,重新加载下vscode,自动生成css文件。...使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。

1.9K20

为什么你永远不应该在CSS中使用px来设置字体大小

这些单位是基于用户的字体大小偏好设置进行缩放的,从而提供了更好的可访问性和可读性。尤其是在设计响应式网站,相对单位能够提高跨设备的兼容性。...它是不可访问的,甚至可能阻止某人完全使用该网站。 因此,虽然可能存在一些有效的用例来解释这种行为,但它绝对不是你想要的默认行为。...超出字体大小的差异 好的,现在让我们谈谈当我们不特别处理 font-size 属性, px 和 em / rem 如何变化。 开发人员通常通过缩放页面来进行测试,认为这就是本文中心误解的来源。...em 和 rem 与文档的字体大小相关联,而不是页面的缩放或比例。...不会在任何地方使用 px ,除非是明确不想随字体大小缩放的设计元素。 永远不要用 px 单位中设置 font-size ,除非你非常确定你在做什么,它会如何行动,以及在你这样做它是否仍然可访问

1.6K20

前端性能优化 常见面试题速查

,浏览器重新渲染部分或者全部文档的过程即回流。...可能导致回流的操作有: 页面的首次渲染 浏览器窗口大小发生变化 元素的内容发生变化 元素的尺寸或者位置发生变化 元素的字体大小发生变化 激活 CSS 伪类 查询某些属性或者调用某些方法 添加或者删除可见的...DOM 元素 在触发回流(重排),由于浏览器渲染页面是基于流式布局的,所以当触发回流导致周围的 DOM 元素重新排列,它的影响范围有两种: 全局范围:从根节点开始,对整个渲染树进行重新布局 局部范围...:对渲染树的某部分或者一个渲染对象进行重新布局 # 重绘 当页面中某些元素的样式发生变化,但是不会影响其在文档流中的位置,浏览器就会对元素进行重新绘制,即重绘。...进行重新布局 使用 CSS 的表达式,不要频繁操作元素的样式,对于静态页面,可以修改类名,而不是样式 使用 absolute 或 fixed 使元素脱离文档流,这样他们发生变化就不会影响其他元素 避免频繁操作

41820

Rem布局的原理探究

在用前端给移动端页面写布局接触到了Rem布局,但是老实说也看了几篇手淘适配的文章,并且主要的目的是拿到代码写出demo,所以对于Rem还是停留在只会使用的阶段,但是理解的并不透彻,所以要抽出时间...用户的浏览器渲染的默认字体大小是"16px",换句话说,Web页面中“body”的文字大小在浏览器下默认渲染是"16px"。当然,如果用户愿意也可以改变这个字体大小。...rem是css3引入的一个单位,那我们为什么要在有em这个可以充当弹性布局的单位还要引入rem呢? em可以让我们的页面更灵活,比起到处写死的px值,em显得更有张力,根据比例的变化来调节屏幕。...但是你有没有想过,如果有一天,你的父节点的字体大小发生了变化,那么对于全局可能产生相当大的影响,手算的同学是不是要全部重新计算,唉,害怕的直接去写px了。?!...所以针对这种繁琐运算的情况,rem应运而生,我们是这样定义rem的: rem作用于非根元素,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小 rem的取值有两种情况,就是设置根元素和非根元素的时候

1.6K30

页面优化——重绘和回流

在这一过程中,比如我们删除DOM节点,修改一个元素的宽高,页面布局发生变化,DOM树也发生变化,那么肯定要重新构建DOm树,而DOM树和渲染树紧密相连,DOM树渲染完了,渲染树也随之进行渲染,这个过程就称为回流...在比如说,我们给一个元素修改颜色,这样的行为是不会影响页面的布局的,DOM树不会发生改变,但是颜色变了,渲染树得重新绘制,这就是重绘。 所以说回流一定会触发重绘,重绘不一定触发回流。...2、尽量避免使用表格布局,当我们不给表格的td设置固定的宽度的,一列的td的宽度以最宽的td的宽作为渲染的标准,假设前几行的td在渲染都渲染好了,结果下面的某行特别宽,table为了统一宽度,前几行的...td回流重新计算宽度,这是一个比较耗时的操作。...2、几何属性的变化 比如说元素的宽度变了,border变了,字体大小变了,这种直接引发页面的布局的改变,也触发回流。

71220

什么是回流与重绘 (Reflow & Repaint)

Render Tree 去遍历渲染,所以当我们的节点发生改变,浏览器重新渲染部分节点或者全部文档,我们称这个过程为回流 大致整理会导致回流的一些操作 页面首次渲染 浏览器窗口大小发生改变 元素尺寸或位置发生改变...元素内容变化(文字数量或图片大小等等) 元素字体大小变化 添加或者删除可见的DOM元素 激活CSS伪类(例如::hover) 查询某些属性或调用某些方法 主要有下面几个API 盒子操作相关 elem.offsetLeft...,比如color,background-color,visibility(注意虽然节点隐藏了,但是元素还在,并且位置也不会发生变化) 浏览器会将新的样式赋值给这些节点,我们称这个过程为重绘 影响 按照常理也很好理解...现代浏览器会对频繁的回流或重绘操作进行优化,浏览器维护一个队列,当我们页面发生回流或重绘,有时候并不是立即执行,而是先放入维护的队列中,到达一定时间后统一去进行绘制 当你访问以下属性或方法,浏览器立刻清空队列...总结 我们把页面文档比作一个积木的话,我们抽离中间或者底部的一个积木块,我们的积木重新找到重心并且稳固下来,我们把这个过程称之为回流 我们在某个积木上涂上颜色,这并不会造成整个积木的稳定,我们把这个过程叫做重绘

83610

【前端性能优化】深入解析重绘和回流,构建高性能Web界面

回流(Reflow)触发条件 添加或删除DOM元素:当文档中添加新的可见元素或删除已存在的元素,可能导致周围元素或整体布局的变化,从而触发回流。...答案: 重绘指的是当页面元素的某些可视化属性(如颜色、背景色、边框等)发生变化,但不涉及元素的尺寸、位置或整体布局,浏览器需要对该元素重新绘制其可视效果的过程。...使用will-change属性:提前告知浏览器哪些属性可能变化,帮助浏览器优化渲染流程。 为什么说回流一定会引起重绘,而重绘不一定引起回流?...通过减少不必要的回流和重绘,我们能够显著提升页面的加载速度和交互响应,为用户提供更加流畅的浏览体验。 重绘是指当元素的外观发生变化但不影响布局(例如颜色改变),浏览器重新绘制该元素的行为。...回流则更为消耗资源,它发生在元素的位置、大小或其他影响布局的属性发生改变,导致浏览器重新计算布局并重新绘制受影响的部分乃至整个页面

6610

产品设计之动态字体大小

iOS的“设置” –> “显示与亮度” –> “文字大小”,可以修改默认的系统字体大小,当修改之后,系统自带的应用如信息等都会随之改变,手机QQ随之发生变化: ? ? ?...而微信的字体大小并不会随系统的字体大小改变而改变,微信自己有设置文字大小的功能,在“” –> “设置” –> “通用”-> “字体大小”中进行设置 ?...iOS中如果想做到跟随系统默认的字体大小改变而改变,怎么实现呢,步骤如下: 1、设置字体的新式为UIFontTextStyle某个选项; 2、注册通知,监听字号改号改变修改字体然后重新更新一下布局;...的adjustsFontSizeToFitWidth值 Android默认是跟随系统字体大小改变而改变的,那如果想避免受系统字体大小的影响,如何处理(4.0开始,系统提供修改字体大小功能)?...,不随系统的字体大小变化而变化的方法 [2]使应用中的字体不受系统设置影响的两种方法 那React Native呢?

1.6K30

使用 TypeScript 优化 React Context:综合指南

我们不仅确保类型安全,还会通过使用 useMemo 和 useCallback 深入探讨性能优化技术。 什么是 React Context?...每次主题或字体大小发生变化时,整个Context都将重新渲染。这看着似乎不是一个理想化的状态,尤其是在大型应用程序中有许多组件需要使用Context数据的情况下。...因此,当主题或字体大小发生变化时,整个Context都将重新渲染。这可不是最佳选择,尤其是在拥有大量依赖Context数据的组件的大型应用程序中。...因此,每当对主题或字体大小进行更改时,整个Context都要重新渲染,从而导致性能低下,尤其是在具有大量Context消费者的复杂应用程序中。...这将避免在主题或字体大小发生变化时出现不必要的重新渲染。

18640

rem适配布局

rem 作用于非根元素字体大小时,相对于根元素字体大小;rem 作用于根元素字体大小时,相对于其初始字体的大小。...使用@media 查询,可以针对不同的媒体类型定义不同的样式; @media 可以针对不同的屏幕尺寸设置不同的样式; 重置浏览器大小的过程中,页面根据浏览器的宽度和高度重新渲染页面; 苹果手机、Android...500px 页面背景色为紫色;当页面宽度大于 500px 小于等于 800px 页面背景色为粉色。...VSCode 插件:Easy LESS 插件可以实现 安装插件后,重新加载 VSCode,之后只要保存 less 文件,自动生成对应的 CSS 文件。...实现 使用媒体查询根据不同设备按比例设置 html 的字体大小 页面元素使用 rem 做单位。这样的话,当 html 字体大小变化(即不同设备),元素尺寸也会发生变化,从而达到等比例缩放的适配。

1.3K30

less 基础

CSS 没有很好的计算能力 非前端开发工程师来讲,往往因为缺少 CSS 编写经验而很难写出组织良好且易于维护的 CSS 代码项目。...只要保存一下Less文件,自动生成CSS文件。 ?...2.使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化元素尺寸也会发生变化,从而达到等比缩放的适配。...,字体大小为320/15就是 21.33px ⑤用我们页面元素的大小除以不同的 html字体大小会发现他们比例还是相同的 ⑥比如我们以750为标准设计稿 ⑦一个100100像素的页面元素在 750屏幕下...的大小 ③或者:页面元素的rem值 = 页面元素值(px) / html font-size 字体大小

1.4K22

移动开发-媒体查询布局

Query) 是CSS3新语法 使用@media查询,可以针对不同的媒体类型定义不同的样式 @media 可以针对不同的屏幕尺寸设置不同的样式 当你重置浏览器大小的过程中,页面根据浏览器的宽度和高度重新渲染页面...生成的值是15 */ @import 'style'; /* 在less文件中导入less文件 ---- 1️⃣ rem 适配方案: 让一些不能等比自适应的元素,达到当设备尺寸发生改变,...等比例适配当前设备 使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化 元素尺寸也会发生变化,从而达到等比缩放的适配 rem 实际开发适配方案...那么假设是320px设备的时候,字体大小为320/15 就是 21.33px 用页面元素的大小 除以不同的html字体大小会发现它们比例还是相同的 50*50像素的页面元素,在320屏幕下,就是 50.../ 划分的份数 就是 html font-size 的大小 或者:页面元素的rem值 = 页面元素值 (px) / html font-size 字体大小 3️⃣ Flexble.js + rem 方案

1.3K30

rem适配移动端的原理及应用场景

平时使用的百分比单位如:width:100%;就是相对单位。...2.1、em em作为font-size的单位,其代表父元素的字体大小,em作为其他属性单位,代表自身字体大小——MDN 比如父元素font-size:12px; 自身元素如果写成:font-sise...:2em;则自身元素用px表示就是24px(相对父元素字体大小); 但是自身元素设置:width:2rem,那么自身元素用px表示就是48px(相对自身字体大小); 2.2、rem rem作用于非根元素...字体并不合适使用rem, 字体的大小和字体宽度,并不成线性关系,所以字体大小不能使用rem;由于设置了根元素字体的大小,影响所有没有设置字体大小的元素,因为字体大小继承的,难道要每个元素都显示设置字体大小...上面知道,一旦某个节点的字体大小发生变化,其他节点也随之变化,所以不合适,但是用来处理字体还是绝妙的。 七、vw/wh用来做弹性布局怎么样?

1.5K20

rem适配布局

使用 @media查询,可以针对不同的媒体类型定义不同的样式 @media 可以针对不同的屏幕尺寸设置不同的样式 当你重置浏览器大小的过程中 ,页面根据浏览器的宽度和高度重新渲染页面...2.使用媒体查询根据不同设备按比例设置html的字体大小,然后页面元素使用rem做尺寸单位,当html字体大小变化,元素尺寸也会发生变化,从而达到等比缩放的适配。...④那么在320px设备的时候 ,字体大小为320/15就是21.33px ⑤用我们页面元素的大小除以不同的html字体大小会发现他们比例还是相同的 ⑥比如我们以750为标准设计稿 ⑦一个100*100.../ 划分的份数  就是 html font-size 的大小 ③或者:页面元素的rem值 = 页面元素值( px) / html font-size字体大小 rem适配方案2 简洁高效的rem适配方案...,html元素大小就会随之变大 所以要通过媒体查询设置屏幕大于750html元素的尺寸大小, 并且要把权重提到最高 安装VSCode px 转换rem 插件 cssrem 因为cssrem这个插件默认的

1.9K30
领券