布局--rem布局

rem布局

1.rem布局是什么?

font size of the root element.

rem就是相对于根元素<html>font-size来做计算

2.为什么要使用rem布局?

使用 rem 单位能够控制元素整体等比放大缩小,而不是固定大小。 使用这种灵活性,在开发期间,能更加快速灵活的调整,允许浏览器用户调整浏览器大小来达到最佳体验。

3.怎么使用rem布局?

浏览器的默认font-size16,为了方便计算,时常将在<html>元素中设置font-size值为62.5%

相当于在<html>中设置font-size10px

此时用rem作为单位,1rem = 10px;

用一个简单的例子来说明

可以看到,使用rem单位的字号3rem在浏览器中实际是30px,10rem的宽度实际上是100px,内边距是10px;

当我把浏览器的默认字号设置为72px时;

可以看到,字号宽度内边距全都等比例放大,1rem = 72*62.5% =45px;

但是把浏览器默认字号调节到最小为`9px`,并且字号设置为1rem的时候,并没有得到预期效果

因为chrome对最小字号有限制,导致chrome的em/rem计算不准确。

另外因为rem和px之间的换算比较麻烦,所以可以采用JS或者Less的来处理,自定义函数px2rem()

4.扩展

REM布局中用到了JS来动态设置html的font-size,可能造成页面的抖动。

可以考虑比较新的VW布局,无需使用JS。

vw与视窗宽度相关,1vw 等于视窗宽度的1%,100vw 等于视窗宽度的100%。

无论是文本还是布局高宽、间距等都使用 vw 作为 CSS 单位 ,当窗口大小改变时,整体也会随之改变。

但是这样也会出现问题,当窗口过大或者过小的时候,失去最小最小宽度的限制。

因此提出VM和REM结合的布局,在VM的基础上设置两点:

  1. 给根元素大小设置随着视口变化而变化的 vw 单位,这样就可以实现动态改变其大小。
  2. 限制根元素字体大小的最大最小值,配合 body 加上最大宽度和最小宽度

参考链接:

https://www.cnblogs.com/imwtr/p/9648233.html

http://caibaojian.com/rem-vs-em.html

http://caibaojian.com/vw-vh.html

原文地址:https://www.cnblogs.com/tanyx/p/12133003.html

时间: 2024-11-02 14:51:59

布局--rem布局的相关文章

移动端物理/css/位图像素概念以及rem布局的实现

这方面的知识一直一知半解.从前看过一些文章,也没有豁然开朗的感觉.今天看了这篇http://div.io/topic/1092感觉明白了一些,不论是否正确,先做记录,留待日后验证. 1. 物理像素.CSS像素与位图像素 物理像素是设备本身用于渲染画面的最小显示单元.我们平时买手机,比如iphone6或者华为看到的720 * 1080, 1080 * 1920其实都是物理像素.显然物理像素不等于PC前端开发所理解的屏幕宽度. CSS像素是编程时使用的虚拟像素.我的理解是CSS像素是以屏幕宽度为基准

一看就懂得移动端rem布局、rem如何换算

这里使用了js控制根元素的font-size大小,然后进行rem换算,在js代码后面会说明以下问题. 1.如何进行rem运算? 2.如果纯js控制根元素用rem布局会出现的小问题,如何解决? 3.如有欠缺的地方,大神们可以指出错误或者改进. function intiSize(){ //获取当前浏览器窗口宽度(这里的实质就是body宽度) var win_w=document.body.offsetWidth; //定义变量 var fontSize; if(win_w>640){ fontSi

移动端rem布局和百分比栅格化布局

移动端的rem: 使用方法: 设置html的font-size,根据浏览器分辨率缩放 设置根元素font-size为100px这样好用的值,不要设为10px这样的: 然后获取浏览器的分辨率,也就是视口宽度,p(比例尺)= 视口宽度/效果图宽度 根元素font-size=100px*p 然后来个resize去跟随浏览器大小变化 1(function (win){ 7 var doc = win.document, 8 html = doc.documentElement, 9 option = h

移动端rem布局背景图片使用以及sprite雪碧图

现在移动端页面用rem布局已经是一大流派了,成熟的框架如淘宝的flexiable.js,墨尘写的更轻量级的hotcss.用rem作单位使得元素能够自适应后,还有一块需要关注的,那就是背景图片. rem布局 所谓rem布局就是指为文档的根节点<html>元素设置一个基准字体大小,然后所有的元素尺寸都以rem为单位来写.比如将<html>的字体设为100px,如果需要做一个100*200的元素,css如是写: div{ width: 1rem; height: 2rem; } 那么最终

响应式布局-Rem的用法

响应式布局-Rem的用法 前言: 文章较为系统地介绍了rem这个新的文字大小单位,绝对干货,绝对好文.转载时略有改动. 先来看看一些基本理念,比如: 响应式网页不仅仅是响应不同类型的设备,而且需要响应不同的用户需求.响应式的初衷是为了让信息更好的传递交流,让所有人无障碍的获取信息,同时这也是 Web 的初衷. 同样的,响应式的设计应该秉承「内容优先,移动优先」的设计原则,那么我们知道网页中的内容主要是由文字图片等元素组成的,那么文字该如何响应式呢? 当我们每天面对缤纷的互联网世界的时候,文字不仅

移动端rem布局雪碧图解决方案 以及分享腾讯团队的在线雪碧图工具

先分享一下地址:http://alloyteam.github.io/gopng/ 使用的方法也很简单,将需要的小图标拖进去,全部拖进去后再调位置(每拖一个进去都会帮你排列好,但是没有间隔,所以全部拖进去后自己调) 然后点击右边绿色的make按钮即可 点击后,上面的选项会高亮,提示你制作好了, 点击PNG选项即可下载制作好的雪碧图, 点击css选项即可查看每个小图标在雪碧图中对应的x和Y位置 对于PC端来说,基本就完成了. 对于移动端采用rem布局的,则需要多一些步骤: 首先将对应的x和y位置转

手机端页面自适应:rem布局

rem布局非常简单,首页你只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function () { var clientWidth = docEl.clientWidth; if (!clientWidth) return;

rem布局在react中的应用

摘要: 前面给大家分享了一个react项目(http://www.cnblogs.com/xiyangbaixue/p/4751904.html),这次对这个项目做了一些改进,增加了rem布局和对iscroll在Android上的优化. 项目代码,欢迎fork和star,在线预览 REM布局实例代码 var fontSizeInit = function() { var doc = document.documentElement, cli = doc.clientWidth; cli&&

手机端页面自适应解决方案—rem布局

只需在页面引入这段原生js代码就可以了 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 (function (doc, win) {        var docEl = doc.documentElement,            resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',            recalc = function () {