网站首页 > 技术文章 正文
在面对丰富尺寸的移动端时,Iphone、安卓各种屏幕分辨率,智能手机品牌、机型如此众多的今天,各种不规则的分辨率,即使作为专业团队的我们切版网,也很难寻找到所有的真机一一去测试。
无论我怎么去调试,都会有比例上的不一样的问题。这就会导致不能很好的还原设计。
解决办法当然是有的,那就是使用REM!
首先让我们带您一起理解一下rem
rem是CSS3新增的一个相对单位(root em,根em),使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。
在iphone6上,我们设置了20px=1rem,但是在iphone4上,同样的1rem,就不应该是20px,而是应该大约17px(为(320/375)*20),这样才可以保证对应的1rem和原来的效果相似,否则,在iphone4就变得很大了。所以,在iphone4上我们要修改html的font-size=17px,可是还有Iphone5,iphone6 plus,还有无数的安卓机型呢?!
下面给大家详细介绍一下这两种方法:
第一种是使用媒体查询控制不同分辨率下的根原素大小。方法如下图,要根据项目的实际类型改变媒体查询的值。
第二种方法就是通过JavaScript动态获取屏幕的宽度,然后给HTML设置font-size的值。下面我给大家讲解一下这段JS代码。我主要以手机端为例。
将这做代码打包到一个defineRemSize.js的文件中,在页面里引用。在用下面这这个方法调用。
做完了这这些,我们有了可以自适应的rem的值,接下来我就说一下在实际使用中的一些心得。
Rem不仅可以用在字体大小单,包括容器宽度的值、高度的值、margin的值、padding的值都可以使用rem做为单位大小。实际上rem更像是聪明的百分比数值。如果页面所有远素的值都使用rem,整个面更像是一张图片。缩小时整体都会缩小,放大里整体都会放大。下面我给大家看一下我使用两种方法做的同一个页面的效果图。
能过对比,会发现,使用rem在不同分辨率的设备上整体比例是不变的。并且没有使用任何媒体查询方法。但是使用px+%这种方法做出来的页面,在不同的页面上的元素的间距会发生改变,图片会随首设备宽度的变化而变化,但是文字大小以及元素的间距并没有发生变化。
由以上可以得出,在使用rem做为页面元素单位时,在适配时会更加简便,并且页面在不同尺寸的终端设备上页面整体比例不会改变。不需要我们再通过Media query 来适配不同的分辨率。并且做出来的页面会更加的接近设计图。
h5、响应式切图,找切版网( www.qieban.cn ),是国内较早专注网页切图服务的团体,由人均3年的前端开发者构成,坚持以高性价比的服务为宗旨,普通页平均80一页,拥有超过200多客户建立至今。超过1500多个项目。长期致力于致力于h5、响应式前端外包服务整体解决方案。
猜你喜欢
- 2024-10-22 响应式布局方法总结(响应式布局方法总结)
- 2024-10-22 关于梦,26个令人难以置信的事实(关于梦,26个令人难以置信的事实有哪些)
- 2024-10-22 设计-前端设计尺寸与规范(前端 0.1+0.2)
- 2024-10-22 因为少乘了10,被老板留下加班2个小时
- 2024-10-22 梦,到底在暗示什么?一个重要提醒可能被你忽视了
- 2024-10-22 RSLogix5000软件简易使用(1):打开程序、在线、离线、保存程序
- 2024-10-22 睡眠相关性痛性勃起—这个尴尬很“硬”核
- 2024-10-22 rem适配移动设备(rem适配方案 手淘方案)
- 2024-10-22 梦境使我不安——了解快速眼动睡眠行为障碍
- 2024-10-22 flex弹性布局和rem适配(flex弹性布局解决了什么问题)
- 04-29kali2021ping 外网不通
- 04-29我是如何用这3个小工具,助力小姐姐提升100%开发效率的
- 04-29注册下载啊
- 04-29Spring 中三种 BeanName 生成器!
- 04-29mysql学习9:创建数据库
- 04-29Linux之yum源详解
- 04-29夏日终曲/请以你的名字呼唤我/Call me by your name(无剧透)
- 04-29注释竟然还有特殊用途?一文解惑 //go:linkname 指令
- 最近发表
- 标签列表
-
- cmd/c (64)
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- sqlset (59)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)