一直想写一个关于em和rem的总结,无奈最近因为毕业论文还有工作原因耽搁了!

刚抽出时间,笔者就想起来博客园估计是要长草了!

不怕!今天就是来除草的!

每次写页面的时候,笔者总是手机页面居多,由于工作量不多计算简单,所以我就直接以100%设计页面布局,尽管我知道一旦页面复杂就尴尬了!做到pc端呢,由于美工小姐姐也没有想到自适应,反而就没有要求自适应,所以pc笔者一直也没有做自适应,虽然事实是这样,可是自适应这种东西,早晚都要用得着啊!

有一次笔者尝试着用rem写个页面,本来以为挺简单,后来发现···并没有阿喂!

好吧!既然你这么变态!就更加坚定了我要学习rem的决心!

首先我是觉着,这个rem是针对于字体大小而存在,虽然他真正的广泛用处把笔者整个人打肿了,不过我还是要坚持这个理念的!只要笔者还有一口气,我就要坚持到死!

在学习之前,我觉着首先要明白的是什么叫弹性布局?

我们都知道,我们的浏览器默认的字体的大小是16px,也就是说,一般情况下:body{font-size:16px},当然啦,如果想要改变是可以通过UI控件改变的!想改变直接ctrl+或者ctrl-就可以啊!

又知道em是一个相对单位,而且可以指定到小数点后三位,如:0.134em;不过这只是一个相对单位,相对的sei呢?就是他的父元素的font-size!不过这里只是说字体大小,其他的也是一样的!

既然默认字体是16px了,那接下来就方便多了,只要你学过加减乘数,都不事儿!不过这个em在IE下面可能会有毛病!为了避免这个毛病,我们要一个设置:html{font-size:100%;}

举个最简单的栗子:

这里就是设置了一个960px的容器;

笔者看过无数人对于em的总结,不过总体来看,其实很简单,就是计算的时候,只有字体的公式是:自身字体em大小=1/父元素字体大小 x 自身字体的大小;

                                   而其他属性的公式则是:自身em大小=1/自身字体大小 x 自身像素大小;

栗子如上

但是!但是!!但是!!!要知道,如果自身没有设置大小,那么就是继承父元素的字体大小,换句话说,这种情况下,也是按照父元素来的!总而言之,其实都是依照自己的字体大小而设置的其他元素的大小的!

但是你知道吗?这样做只能说是你在放大小的时候不会把布局弄乱,但是字体什么的根本没有自适应!

所以我总结的就是:em根本和px比没有什么特别大的优势,非要说一个的话,就是它可以牵一发而动全身,这对于不做相应设计的来讲,基本就是没什么用的!因为它到底还是计算成了像素!

··························································································没错!我是华丽的分割线!···············································································

em暂时到这里!下面讲述rem!

先来一个关于不同分辨率下调整html的font-size的函数:

(function (doc, win) {

   var  docEl = doc.documentElement,
     resizeEvt =  'orientationchange'  in  window ?  'orientationchange'  'resize' ,
     recalc =  function  () {
       var  clientWidth = docEl.clientWidth;
       if  (!clientWidth)  return ;
       docEl.style.fontSize = 20 * (clientWidth / 320) +  'px' ;
     };
   if  (!doc.addEventListener)  return ;
   win.addEventListener(resizeEvt, recalc,  false );
   doc.addEventListener( 'DOMContentLoaded' , recalc,  false );
})(document, window);
针对于rem,其实他和em是一样的,只不过他是针对于根元素来计算的。
有的时候,我们想着方便,会把html的font-size设置成62.5%,这样就是10px的大小,其实这样反而是弄巧成拙了,怎么说呢》要知道,人家chrome的最小字体大小是12px,一旦小于这个限制,人家就按12px计算了,你还嘚瑟啥啊?后面跟个智障一样一通算,最后全部错了,就问你尴不尴尬?尴尬死了!
而且要记住,即便是你用了rem,也要考虑到人家的兼容性啊,最好在每一个rem前面都写一些px的,这样起码可以保证优雅降级啊!
所以我的最终方案就是:当我想要写一个自适应的页面时,不让字体去自适应屏幕,而是让外面的自适应字体,比如我们把元素设置为宽度为50em,不管字体设置为多大,都只能容纳50个字。这仅限于同一级别,千万别父元素设置宽,子元素再设置字体大小,那样是不对的!

·················································································没错!我是华丽的分割线!·············································································

最后说一下vw和vh!其实这两个笔者觉得是相当好用的,起码他是适用于屏幕大小的,对于手机端来讲,这无疑是雪中送炭,笔者心中的朱砂痣啊!但是它的兼容性还是有毛病的,并不针对于所有浏览器!无奈摊手,还是不行啊!因为我们平常开发,还是要考虑一下普通人的感受的啊!
不过用法还是要记载一下的,万一那一天,人家翻身农奴把歌唱了呢!
vw和vh都是百分比的用法,假如你的屏幕宽度是100mm,那10vw就是10mm,也就是10%的宽度,是不是很简单的用法!
唉···  如果这个兼容性调好了该有多好!也不用这么愁了···  怪自己能力不够啊!
而且我发现一件非常神奇的事情,这个事情只发生在安卓手机上,奏四!人家的高100%都是针对于整个手机的100%。但是假如你在做一个登录注册页面吧,那里不是有input框吗?一点点击文本框,背景图的100%就会默认为除了键盘之外的100%,这一点很鸡肋!以至于我做的时候直接把html{background:#自己的颜色;height:100vh;}了!
············································································ 没错!我是华丽的分割线!················································································
所以笔者最后得出结论,当我们需要手机字体大小自适应的时候,最好的办法就是:用 媒体查询啊!下面是合适的分布,可以借鉴哦~

@media only screen and (max-width:300px) {
}
@media only screen and (max-width:310px) and (min-width:300px) {
}
@media only screen and (max-width:320px) and (min-width:310px) {
}
@media only screen and (max-width:350px) and (min-width:320px) {
}
@media only screen and (max-width:360px) and (min-width:350px) {
}
@media only screen and (max-width:400px) and (min-width:360px) {
}
@media only screen and (max-width:470px) and (min-width:400px) {
}
@media only screen and (max-width:480px) and (min-width:470px) {
}
@media only screen and (max-width:540px) and (min-width:480px) {
}
@media only screen and (max-width:560px) and (min-width:540px) {
}
@media only screen and (max-width:570px) and (min-width:560px) {
}
@media only screen and (max-width:630px) and (min-width:570px) {
}
@media only screen and (max-width:640px) and (min-width:630px) {
}
@media only screen and (max-width:710px) and (min-width:640px) {
}
@media only screen and (max-width:720px) and (min-width:710px) {
}
@media only screen and (min-width:720px) {
}

转载于:https://www.cnblogs.com/yimei/p/7009625.html

em rem vw vh相关推荐

  1. CSS中的常见单位(px,%,em,rem,vw,vh,vmax,vmin,calc)

    像素(px)&百分比(%) 像素(Pixel) 长度单位,相对于显示器屏幕分辨率而言,通常在不定义显示缩放比例的情况下,1px对应显示器屏幕上的一个像素点. 早年的pc端展示的页面基本都用这个 ...

  2. css px em rem % vw vh vm 区别

    前言 在传统项目开发中,我们只会用到 px.%.em 这几个单位长度,它们可以适用大部分项目的开发,并且拥有较好的兼容性. 而从 css3 开始,浏览器对逻辑单位的支持又提升了新的境界,增加了 rem ...

  3. 【前端基础】整理常见的单位 px em rem % vw vh vmin vmax rpx

    基本单位 单位 计算方式 简介 px 标准像素 优点兼容性最好,缺点没有弹性,对于过大过小屏幕显示效果不好 em font-size元素大小 1em等于font-size的大小(font-size默认 ...

  4. css单位介绍em ex ch rem vw vh vm cm mm in pt pc px

    长度单位主要有以下几种em ex ch rem vw vh vm cm mm in pt pc px %,大概可以分为几种"绝对单位"和"相对单位"和" ...

  5. web开发之长度单位:px, pt, rem, vw, vh

    在前端开发中,常常会碰到各种长度单位,比如 px, em, rem, vw 等. 总的来说,可以把这些长度单位分成两类:绝对长度单位 和 相对长度单位. 绝对长度单位 绝对长度单位是一个固定的值,一个 ...

  6. px,em,rem,vw单位在网页和移动端的应用

    px: 是网页设计中最常用的单位,然而1px到底是多大长,恐怕没有人能回答上来 它用来表示屏幕设备物理上能显示的最小的一个点,这个点不是固定宽度的,不同设备上点的长度.比例有可能会不同. 假设:你现在 ...

  7. html移动端怎么做城市选择,移动端页面单位的选择(px, em, rem, vw)

    px, em, rem的区别: px:绝对字体大小 em:基于一个基数来计算出相对字体大小.(移动端用的少) rem:基于根节点(html)的字体大小来计算. vw:可视区宽度单位.1vw等于可视区宽 ...

  8. html 字号和像素的关系,一文搞懂CSS中的字体单位大小(px,em,rem...)

    在学习的过程中,发现CSS有很多可以形容单位的尺寸.比方px,em,rem,vw等等.平常也没有深究,一来是没时间,二来是在我学习清单中优先级过低.一直想彻底弄明白,一直耽搁到现在.现在花上一点时间来 ...

  9. css3vw适配_小tips:使用rem+vw实现简单的移动端适配

    首先设置meta属性,如下代码: 使用如下代码就能实现移动端的适配: html { font-size: -webkit-calc(13.33333333vw); font-size: calc(13 ...

  10. px,em,rem,vh,vw,vmin,vmax的区别

    css手册中关于font-size是这么介绍的: font-size 值可以是绝对或相对值. 绝对值: 将文本设置为指定的大小 不允许用户在所有浏览器中改变文本大小(不利于可用性) 绝对大小在确定了输 ...

最新文章

  1. socket编程:多路复用I/O服务端客户端之poll
  2. 如何去重一个Oracle表
  3. 工具的学习使用(二):快捷键、工具、批处理
  4. linux 添加用户
  5. 自学计算机二级office用什么书,暑假里想要自学计算机二级office有哪些什么好的建议...
  6. Delphi下载指定网址(URL)的文件,带进度条显示
  7. oracle不一致性关闭下次,Oracle DataGuard
  8. 使用Spring的Hibernate构建Java Web应用程序
  9. php ios 判断字符串长度,iOStextfield 限制输入字符长度和过滤表情符号
  10. mysql 5.6 安装 中文_ubuntu 下mysql 5.6安装、删除和配置中文乱码问题
  11. [设计模式] javascript 之 策略模式
  12. python网站服务器好麻烦_python写的网站,云服务器经常无法访问
  13. ElasticSearch遇到问题
  14. 直接复制php的安装目录部署到其他服务器的时候,无法运行
  15. 魅蓝a5 android版本,魅蓝A5低调问世,跑分3万、久用不卡,699元
  16. 19年PDYZ冬令营游记
  17. aliyun redis 链接超时_超详细的Redis入门指导
  18. #怎样获取当前时间和时区_JDK1.8新增日期时间类型
  19. 有什么方法可以将WMV格式转换成MP4格式
  20. 【CST】贴片天线阵列设计

热门文章

  1. 南京大学《软件分析》- 02 - IR
  2. 【Kotlin学习之旅】Kotlin的Elvis运算
  3. HGOI8.21集训题解
  4. 启动控制面板命令大全
  5. 模型-视图-控制器(MVC)设计模式
  6. Windows10下安装centos7双系统
  7. java+ssm的精准扶贫系统
  8. 画猫上色 ---- 创意艺术生成app
  9. 【Python 1】
  10. 中国云基础设施支出创新高,增速全球第一;国内首个区块链特色司法鉴定机构在京成立...