开始写前端页面也有了快两年时间,从一开始的懵逼到现在的淡定,但是不能改变我还是一只小菜鸟的事实,平时遇到的一些问题都会记录在文件夹里,现在都整理一下大家一起分享自己平时也翻翻看看~

不知道大家平时写的时候是用的什么,但是我一般用的是这几个:px,百分比,em,rem

一、首先咱先了解下这几个都是啥,有啥区别:

px:就是像素,相对于屏幕分辨率而言的,简单来说就是平时我们写静态页面时用px作单位,但是在firefox/chrome会发现我们的布局发生了变化;

百分比:这比较适合块状的页面设计,但是他相对于不同屏幕而言的,比如经常在写移动端的时候也会用到

em:是相对长度单位,相对于父级元素的单位。如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。就是当默认字体大小为14px,那么就有1em=14px;

rem:是相对于根元素,这样就意味着,我们只需要在根元素确定一个参考值。

二、平时用这些遇到的一些问题以及现在我最终使用的

平时写pc端页面时,没有疑问的,我选择的是px作为单位,遇到一些比较复杂的需要定位的也会夹杂使用百分比

主要来说说移动端页面:

1、刚开始接触移动端页面时,我用的是百分比和px,当时做出来就只对着一个手机进行调试,结果可想而知的,用不同浏览器测试时,有些布局就乱掉了,就算调整也不能完全还原设计图所设计的;

2、后面发现了使用em作为单位,它是相对长度单位但是是相对于父级元素的,相对于当前对象内文本的字体尺寸,当浏览器分辨率发生变化时,他会重新计算相对的长度的大小并展现出来

这个行内文本的字体大小是可以认为设置的,默认是14px,就有1em=14px,所以将页面里的px转化为em在显示是基本可以满足适应不同移动端浏览器的,下面我就开始了漫长的计算过程

因为不同移动端屏幕的分辨率是不一样的,而我们一般得到的设计稿是640px,那怎样才能在750px等更大写的屏幕上完美的显示出来呢:

这里我使用的是css3 媒体查询,先给页面设置一个字体大小为18px(也就是1em=18px)然后按不同的屏幕尺寸,分别计算不同屏幕下相对于18px的字体大小:

body {
font-size: 18px;
}
@media only screen and (max-width: 300px) {
body {
font-size: 16.666666px;
}
.viewport {
max-width: 300px;
}
}
@media only screen and (max-width: 310px) and (min-width: 300px) {
body {
font-size: 16.666666px;
}
.viewport {
max-width: 310px;
}
}
@media only screen and (max-width: 320px) and (min-width: 310px) {
body {
font-size: 17.22222px;
}
.viewport {
max-width: 320px;
}
}
@media only screen and (max-width: 350px) and (min-width: 320px) {
body {
font-size: 17.77778px;
}
.viewport {
max-width: 350px;
}
}
@media only screen and (max-width: 360px) and (min-width: 350px) {
body {
font-size: 19.44444px;
}
.viewport {
max-width: 360px;
}
}
@media only screen and (max-width: 400px) and (min-width: 360px) {
body {
font-size: 20px;
}
.viewport {
max-width: 400px;
}
}
@media only screen and (max-width: 470px) and (min-width: 400px) {
body {
font-size: 22.22222px;
}
.viewport {
max-width: 470px;
}
}
@media only screen and (max-width: 480px) and (min-width: 470px) {
body {
font-size: 26.11112px;
}
.viewport {
max-width: 480px;
}
}
@media only screen and (max-width: 540px) and (min-width: 480px) {
body {
font-size: 26.66666px;
}
.viewport {
max-width: 540px;
}
}
@media only screen and (max-width: 560px) and (min-width: 540px) {
body {
font-size: 30px;
}
.viewport {
max-width: 560px;
}
}
@media only screen and (max-width: 570px) and (min-width: 560px) {
body {
font-size: 31.11112px;
}
.viewport {
max-width: 570px;
}
}
@media only screen and (max-width: 630px) and (min-width: 570px) {
body {
font-size: 31.66666px;
}
.viewport {
max-width: 630px;
}
}
@media only screen and (max-width: 640px) and (min-width: 630px) {
body {
font-size: 35px;
}
.viewport {
max-width: 640px;
}
}
@media only screen and (max-width: 710px) and (min-width: 640px) {
body {
font-size: 35.55556px;
}
.viewport {
max-width: 710px;
}
}
@media only screen and (max-width: 720px) and (min-width: 710px) {
body {
font-size: 39.44444px;
}
.viewport {
max-width: 720px;
}
}
@media only screen and (min-width: 720px) {
body {
font-size: 40px;
}
.viewport {
width: 720px;
}
}

然后就可以计算出不同屏幕分辨率下的相对尺寸是多少px,在按照设计稿计算出em值(假设设计稿为640px,那么(1em=35px)),这真的是相当的麻烦,还得拿个计算器放旁边。。。

em是相对于父级元素变化的单位,所以当你的父级元素的字体大小发生变化时他也会跟着变化,这里又得计算。。。总之就是麻烦。。。我还用了好久。。。3、后来继续研究开始使用rem,最起码它是直接的相对于根元素变化的,感觉这是em的一个升级。。。

同样的这也是需要计算和设计初始的字体大小的,但是有个很便捷的路径,使用sublime text3里面的一个cssrem插件配合使用flexible.js,可以自动进行换算,省时省力,还省代码。当时有的时候还得配合使用百分比和px。

以上都是个人的小经验,也许大神门还有高招,本人还在不断学习中。。。

移动端页面使用单位的问题:关于px、百分比、em、rem开发中逐渐转换的问题记录的更多相关文章

  1. 弄懂css中单位px和em,rem的区别

              国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢?         PX特点 1. IE无法调整那些使用px作为单位的字体大小 ...

  2. [转]彻底弄懂css中单位px和em,rem的区别

    难怪会问我 rem 和 em, 这俩或在移动端还是很有必要学习的. root em OK? 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? P ...

  3. 彻底弄懂css中单位px和em,rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 -1. IE无法调整那些使用px作为单位的字体大小: -2. 国外的大部分网站能够调 ...

  4. CSS中单位px和em,rem的区别

    PX特点: 1 IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96%以上 ...

  5. 彻底弄懂css中单位px和em,rem的区别 转的自己看

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的 ...

  6. 【转载】彻底弄懂css中单位px和em,rem的区别

    原文链接:http://www.cnblogs.com/leejersey/p/3662612.html 国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什 ...

  7. css中单位px和em,rem的区别[转载]

    PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96%以上 ...

  8. 网页布局设计css中单位px和em,rem的区别

    国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的 ...

  9. css单位中px和em,rem的区别

    css单位中分为相对长度单位.绝对长度单位. 今天我们主要讲解rem.em.px这些常用单位的区别和用法. px(绝对长度单位) 相信对于前端来说px这个单位是大家并不陌生,px这个单位,兼容性可以说 ...

随机推荐

  1. memset与malloc性能测试

    memset与malloc性能测试 测试环境:2.2GHZ.2G内存 memset一段大小为1K的buf,每秒有1200万次:10K的buf,每秒有260万次:100K的buf,每秒有13万次. ma ...

  2. 【组合数学+动态规划】在如下8*6的矩阵中,请计算从A移动到B一共有____种走法。要求每次只能向上或向右移动一格,并且不能经过P。

    在如下8*6的矩阵中,请计算从A移动到B一共有__种走法.要求每次只能向上或向右移动一格,并且不能经过P. A:456 B:492 C:568 D:626 E:680 F:702 解析: 8*6的矩阵 ...

  3. vim 多行注释消除注释,多行删除

    进入可视化模式: Ctrl+v 继续进入编辑模式: shift+i 注释: shift+# 注释生效: ESC 取消注释 d 删除 选中全部字符块区域,使用方向键上下右: 然后,按一下d

  4. VirtualBox不能为虚拟电脑 Ubuntu 打开一个新任务

    今天在用Vbox中的Ubuntu系统准备测试Python代码时,Vbox报了一个错误:"不能为虚拟电脑 Ubuntu 打开一个新任务".因为之前用的时候还好好的,也不知道是不是最近 ...

  5. ABAP程序中关于长文本的处理方法

    现象描述 长文本在SAP的运用主要体现在一些notes的记录,或者一些比较长的文本的存取,比如工作流的审批意见,采购申请和采购订单的附加说明等等.如下图: 处理过程 1:SAP中所有的长文本都存在两张 ...

  6. android 检测网络是否可用

    /**     * 检测网络是否可用     *      * @return     */    public boolean isNetworkConnected() {        Conne ...

  7. SQL Server 几种锁的区别

    NOLOCK(不加锁)    此选项被选中时,SQL  Server  在读取或修改数据时不加任何锁.  在这种情况下,用户有可能读取到未完成事务(Uncommited  Transaction)或回 ...

  8. C# 代码转化为Java代码

    http://www.tangiblesoftwaresolutions.com/Free_Editions.html Install Instant C# (converts VB.NET code ...

  9. Spring3系列9- Spring AOP——Advice

    Spring3系列9- Spring AOP——Advice Spring AOP即Aspect-oriented programming,面向切面编程,是作为面向对象编程的一种补充,专门用于处理系统 ...

  10. 使用magick.net将pdf转换为图片

    现在手上有个需求是要将pdf转换为一页一页的image.最开始找到的是pdfbox来处理pdf的.在pdfbox.apache.org的官网首页写了一句'convert you pdfs to ima ...