关于rem vw 和 媒体查询用在一起的问题

@media only screen and (min-height: 30rem) {
  .item {
    background-color: yellow !important;
  }
}
@media only screen and (min-height: 50rem) {
  .item {
    background-color: red !important;
  }
}
@media only screen and (min-height: 80rem) {
  .item {
    background-color: blue !important;
  }
}

以上代码
1 设置样式表 html{ font-size: 1vw; }; 表现为媒体查询1rem=16px
2 设置 通过js动态修改 html{ font-size: window.innerWidth / 100 + 'px' }; 表现为媒体查询1rem= 16px
3 直接在html标签上写style="font-size: 1vw;" 表现为媒体查询1rem=16px

问题 上面代码中 1rem到底是多少

阅读 2.4k
2 个回答

rem是一个相对单位,它的基值是HTML标签的font-size值,也就是说,html的font-size 是多少,1rem就等于多少。浏览器默认的字体大小是16px,所以默认的1rem=16px。
我们可以根据设备宽度动态设置根元素的font-size,使得以rem为单位的元素在不同终端上以相对一致的视觉效果呈现。事实上 rem是把屏幕等分成 指定的份数,以20份为例,每份为 1rem , 1rem 对应的大小就是 rem基准值 ,rem做的就是把 rem基准值 给<html>的 font-size ,所以如果设备的 物理像素 宽为 640px ,分成20份,那么 1rem=640px/20=32px,分成20代码如下:

//这段代码放在head标签里面
(function () {
    var html = document.documentElement;
 
    function onWindowResize() {
        html.style.fontSize = html.getBoundingClientRect().width / 20 + 'px';
    }
 
    window.addEventListener('resize', onWindowResize);
    onWindowResize();
})();

当然,你也可以分成30份,40份,60份等等,这个看自己的喜好了

1rem就是你html上的font-size的大小

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题