rem

rem是什么?
rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。

兼容性:
目前,IE9+,Firefox、Chrome、Safari、Opera 的主流版本都支持了rem。

就算对不支持的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

//rem与px 的不同方法实现1:100
1.使用%单位方便使用
css中的body中先全局声明font-size=625%,这里的%的算法和rem一样。
因为100%=16px,1px=6.25%,所以100px=625%,
这是的1rem=100px,所以1.2rem=120px。px与rem的转换通过100就可以得来
2.使用px单位方便使用
注意,rem是只相对于根元素htm的font-size,即只需要设置根元素的font-size,其它元素使用rem单位设置成相应的百分比即可;
html{font-size: 100px;}
body{font-family:"微软雅黑";font-size: 16px;}  //必须
//如果不写 body{fonr-size:16px}
//bug:HTML里使用rem单位【html{font-size:100px;}】造成高度撑开,垂直不能顶对齐,像添加了margin-top的值;
//因为html的字体为100px,所有的默认字体就都为100px,要容下100px的字体当然就要这么高的行高。所以其实a的字体的确是22px,line-height也是22px,问题就出现了div上;
3.使用vw 视窗宽度 单位方便使用
//首先了解设计稿宽度 与  逻辑像素 [UI设计稿物理像素与逻辑像素](https://www.jianshu.com/p/85b7afece910)/
如果设计图的宽度是640px 或者 750px     dpr = 22倍图)
如果设计图的宽度是1080px               dpr = 3  
所以:逻辑像素 = 750px /2 = 375px
所以:375px = 100vw
所以:1vw = 3.75px
所以:26.67vw = 100px = 1rem
例子://声明
//百分比                                     
	 /*16px * 62.5% = 10px;*/    
	 /*16px * 625% = 100px;*/     
	 html{font-size:62.5%;} 
//px 
	 html{font-size: 100px;}
	 body{font-size: 16px;}  //必须
//vw
	如果设计图宽度为750px
	则:根元素字体大小设置为
	htmt:{font-size:26.67vw}
//一般情况下,是这样子使用的
div{font-size:0.5rem}    ======>>>>>>显示为font-size:50px
...
优点
//用一个东西肯定要知道它的好处啦,由于其他字体大小都是基于html的,所以在移动端做适配的时候,可以使用不同的方法
1.媒体查询
 @media only screen and (min-width: 320px){
  html {
   font-size: 62.5% !important;
  }
 }
 @media only screen and (min-width: 640px){
   html {
     font-size: 125% !important;
 }
}
 @media only screen and (min-width: 750px){
   html {
    font-size: 150% !important;
  }
 }
 @media only screen and (min-width: 1242px){
  html {
    font-size: 187.5% !important;
  }
 }
2.监听视口 变化
 function resetWidth() {
    // 兼容ie浏览器 document.body.clientWidth
    var baseWidth = document.documentElement.clientWidth || document.body.clientWidth;
    if (baseWidth > 750) baseWidth = 750;
    document.documentElement.style.fontSize = baseWidth / 750 * 100 + 'px'
 }
 resetWidth();
 window.addEventListener('resize', function () {
    resetWidth();
 });
这样子就能做到仅仅改变html的字体大小,让其他字体具有“响应式”啦

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值