rem布局简介
移动端常见布局:
1.流式布局
高度固定,宽度自适应
2.响应式布局
能够用一套代码适应不同尺寸屏幕
3.rem布局
宽高自适应,能实现整个页面像一张图片一样缩放且不失真的效果。
rem布局:
- em:是一个相对单位,计算方法为用元素的带px属性值除以自身字体大小,用的很少。
- rem:是一个相对单位,计算方法为一个html文件中任意元素的带px属性值除以根元素html的字体大小,从而实现宽高自适应。
简单实例:
1.em布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
div {
font-size: 100px;
width: 4em; /* 400px */
height: 4em; /* 400px */
background-color: pink;
}
</style>
</head>
<body>
<div>我是400*400的盒子</div>
</body>
</html>
效果如图:div内字体大小为100px

2.rem布局
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
html {
font-size: 100px;
}
div {
font-size: 16px;
width: 4rem; /* 400px */
height: 4rem; /* 400px */
background-color: pink;
}
</style>
</head>
<body>
<div>我是400*400的盒子</div>
</body>
</html>
效果如图:div内字体大小为16px

rem布局实现自适应:
1.配合媒体查询
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<style>
/* 一个盒子, 在 750 屏幕上显示 200*200, 在375屏幕上显示 100*100 */ /* 375px屏幕中, font-size: 50px */
@media screen and (width: 375px){
html {
font-size: 50px;
}
}
/* 750px屏幕中, font-size: 100px */
@media screen and (width: 750px){
html {
font-size: 100px;
}
}
div {
width: 2rem;
height: 2rem;
background-color: pink;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2.通过javascript实现
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
body {
font-size: 16px;
}
/* 设计图尺寸 640px 基准值 100px */
div {
width: 2rem;
height: 2rem;
font-size: .3rem;
background-color: pink;
}
</style>
</head>
<body>
<div>我是自适应的文字</div>
<script>
var design = 640;
var base = 100;
function responsive() {
var width = window.innerWidth;
// 所求font-size = 当前屏幕宽度 / 设计图 * 基准值
var size = width / design * base;
document.documentElement.style.fontSize = size + "px";
}
responsive();
window.addEventListener("resize", responsive);
</script>
</body>
</html>
3.使用flexible.js
flexible.js是淘宝移动适配方案,基本原理与上面的通过javascript实现自适应相同,但是做了很多兼容性处理,其中定义:基准值(即html根元素字体大小) = 设计图尺寸 / 10。使用的时候直接在文件中引入包即可。
下载地址:https://github.com/amfe/lib-flexible
rem布局简介的更多相关文章
- 在rem布局下使用背景图片以及sprite
现在移动端页面用rem布局已经是一大流派了,成熟的框架如淘宝的flexiable.js,以及我的好友@墨尘写的更轻量级的hotcss.用rem作单位使得元素能够自适应后,还有一块需要关注的,那就是背景 ...
- 手机端页面自适应之rem布局
W3C官网上是这样描述rem的--"font size of the root element" . rem布局在移动端发挥的比较好. 阿里团队高清方案: <script&g ...
- 手机端页面自适应解决方案-rem布局
rem布局 布局前插入原生js即可 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationch ...
- 手机端页面自适应解决方案—rem布局
只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientation ...
- REM 布局
1.rem是什么? rem(font size of the root element)是指相对于根元素的字体大小的单位 2.为什么web app要使用rem? 实现强大的屏幕适配布局(淘宝,腾讯,网 ...
- 一看就懂得移动端rem布局、rem如何换算
这里使用了js控制根元素的font-size大小,然后进行rem换算,在js代码后面会说明以下问题. 1.如何进行rem运算? 2.如果纯js控制根元素用rem布局会出现的小问题,如何解决? 3.如有 ...
- css012 css布局简介
css012 css布局简介 一. 网页布局的类型 网页布局的类型 1.固定宽度 2.流式 3.相应式web设计 二. 如何进行css布局 1.强大的<div>标签 网页的h ...
- (淘宝无限适配)手机端rem布局详解(转载非原创)
从网易与淘宝的font-size思考前端设计稿与工作流 本文结合自己对网易与淘宝移动端首页html元素上的font-size这个属性的思考与学习,讨论html5设计稿尺寸以及前端与设计之间协作流程的问 ...
- webapp,liveapp: 流式布局和rem布局
liveapp场景应用,一般针对的是移动端,近来也是很火,颇有一些感受,拿来分享一下. 页面宽度范围: 一般移动端页面我们的像素范围是320px-640px,最大640px,最小320px,所以设计稿 ...
随机推荐
- 进度条(Progressbar)
进度条(Progressbar) 提供如下一些样式改变进度条的外观 @android:style/Widget.ProgressBar.Horizontal(水平进度条) @android:style ...
- Dlink DIR-823G 漏洞挖掘过程
前言 本文由 本人 首发于 先知安全技术社区: https://xz.aliyun.com/u/5274 初步分析 首先下载固件 https://gitee.com/hac425/blog_data/ ...
- redis 命令clear、set、get、del、rename、keys *、exists、type、expire、expireat、persist、ttl、move、select
清屏 clear 新增/修改set 查询get 删除del 修改key rename old new 查询所有的key keys *查询一个key是否存在 exists,有返回1,没有返回0查询值的类 ...
- java 接口默认修饰符
概论: java接口可以是public 的,也可以是friendly的,但一定是abstracted的. java接口里的方法只能是public的.abstract的. java接口里的成员变量只能是 ...
- responsebody和requestbody的使用
Controller的方法上加了一个@ResponseBody,那么他的作用是什么呢?/** * 新增或修改一条对象. */ @RequestMapping("/save_field&quo ...
- zabbix系列之四——快速使用
https://www.zabbix.com/documentation/3.4/manual/quickstart/login Quickstart 1login and configuring u ...
- 使用 PowerShell 创建和修改 ExpressRoute 线路
开始之前 安装最新版本的 Azure Resource Manager PowerShell cmdlet. 有关详细信息,请参阅 Azure PowerShell 概述. 在开始配置之前,请查看先决 ...
- 基于JVM(内存)和Tomcat性能调优
一.总结前一天的学习 从“第三天”的性能测试一节中,我们得知了决定性能测试的几个重要指标,它们是: ü 吞吐量 ü Responsetime ü Cpuload ü MemoryUsa ...
- AVAudioPlayer简易封装
AVAudioPlayer简易封装 [说明] AVAudioPlayer简易封装,仅仅支持播放,暂停,停止,暂停时候带有渐隐效果,自己用,没有参考价值. [源码] https://github.com ...
- php安装--php-5.3.28
PHP的整合使用: 一.下载php源码包:https://pan.baidu.com/s/1Cied8ozHez4xJ9l1HQ7pKQ 二.把源码包放到/usr/src目录 三.解压源码包并进入目录 ...