一、rem 原理与简介
字体单位:
    值根据 html 根元素大小而定,同样可以作为宽度,高度等单位
适配原理:
    将 px 替换为 rem,动态修改 HTML 根元素的 font-size 适配
兼容性:
    Ios 6 以上 和  Android 2.1 以上,基本覆盖所有流行的手机系统
// 移动 web 独有的 viewport 标签
// initial-scale 初始缩放
// user-scaleable 用户是否可缩放
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scaleable=no">
 
1rem = html 的 font-size
html 不设置 font-size 默认 1rem = 16px
 
二、如何根据不同屏幕设置 font-size 大小
1、媒体查询
<style type="text/css">   
   @media screen and (max-width: 320px) {
        html {
          font-size: 20px;
        }
      }  
    @media screen and (max-width: 360px) and (min-width: 321px) {
        html {
          font-size: 24px;
        }
      }
</style>
2、使用 js 方式
<script type="text/javascript">
// 获取视窗宽度
let htmlWidth =
document.documentElement.clientWidth || document.body.clientWidth
console.log(htmlWidth) // 获取视窗高度
let htmlDom = document.getElementsByTagName('html')[0] htmlDom.style.fontSize = htmlWidth / 10 + 'px'
</script>
 
三、rem 与 scss 相结合
1、rem 基准值的计算
    rem 基准值就是 html 的 font-size
2、rem 数值计算与构建
    换算出的 px 值的 rem 的值
    如 1rem = 16px
    170px = 170/16 rem
3、rem 与 scss 相结合

// 封装
@function px2rem($px) {
$rem: 37.5px // 以 iPhone 6 浏览器为基础 基准值就为 375 / 10 = 37.5
@return ($px / $rem) + rem // return 的值为 传进来的 px值 / rem基准值 + rem 单位
}
// 使用
.box {
width: px2rem(100px)
 height: px2rem(100px)
}

rem 原理与简介的更多相关文章

  1. rem原理

    rem布局实际上就是实现等比缩放 试想,如果我们的元素在不同的屏幕上可以按照相同的比例来进行缩放就好了. rem的计算原理: 试想把屏幕平均分成10份,那么每一份就是1/10,我们选择每一份的大小是1 ...

  2. Kickstart无人值守原理及简介

    原文转自:https://www.cnblogs.com/itzgr/p/10029461.html作者:木二 目录 一 简介及原理 二 搭建无人值守步骤 三 PXE介绍 四 Kickstart简介 ...

  3. 淘宝、网易移动端 px 转换 rem 原理,Vue-cli 实现 px 转换 rem

       在过去的一段时间里面一直在使用Vue配合 lib-flexible和px2rem-loader配合做移动端的网页适配.秉着求知的思想,今天决定对他的原理进行分析.目前网上比较主流使用的就是淘宝方 ...

  4. ELK原理与简介

    为什么用到ELK: 一般我们需要进行日志分析场景:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办 ...

  5. MapReduce工作原理流程简介

    在MapReduce整个过程可以概括为以下过程: 输入 --> map --> shuffle --> reduce -->输出 输入文件会被切分成多个块,每一块都有一个map ...

  6. Rem实现移动端适配

    移动端适配 web页面跑在手机端(h5页面) 跨平台 基于webview() 基于webkit 常见适配方法 pc端采用display:inline-block,让div盒子横着排 移动web:采用定 ...

  7. Xposed 框架 hook 简介 原理 案例 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. rpc简介、原理、实例

    简介 RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过 ...

  9. 移动web开发适配rem

    移动的meta标签 <meta  name="viewport" content="width=device-width, initial-scale=1,user ...

随机推荐

  1. 初探LaTeX

    第一次使用LaTeX 步骤  1 安装LaTeX 通过官网http://www.tug.org/mactex/mactex-download.html下载Mac版LaTeX. 安装成功后会出现 步骤 ...

  2. 一个request引发的bug

    有很多错误由于需要是多线程是才会发生,导致经常在开发时很难发现, import java.lang.reflect.ParameterizedType; import java.util.List; ...

  3. Loadrunner回放https脚本时出现错误Error -27780 Connection reset by peer解决办法

    录制好的https协议的web脚本,在脚本回放时会出现Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "......&quo ...

  4. matplotlib绘图基本用法-转自(http://blog.csdn.net/mao19931004/article/details/51915016)

    本文转载自http://blog.csdn.net/mao19931004/article/details/51915016 <!DOCTYPE html PUBLIC "-//W3C ...

  5. Git自学笔记

    Git是什么? Git是目前世界上最先进的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git与SVN的区别有哪些? ① Git是分布式的,SVN不是.这是Git和其它非分布式版本控制系 ...

  6. CPU二则

    CPU二则 CPU二则 aligned load & unaligned load non-temporal store(streaming store) 参考文献 aligned load ...

  7. HTTP 学习心得

    一.什么是HTTP? 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必须遵守这个标准.设计HTTP最初的目的 ...

  8. java课程之团队开发冲刺1.4

    一.总结昨天进度 1.昨天任务全部完成 二.遇到的问题 1.对数据库的使用陌生 2.使用sqlite有些困难 3.对如何解决查询课程问题暂时没有找到好的解决方案 三.今日任务 1.由于周一的课程比较紧 ...

  9. 一个简单的struts2上传图片的例子

    https://www.cnblogs.com/yeqrblog/p/4398914.html 在我的大创项目中有对应的应用

  10. 3D Math Keynote 3

    [3D Math Keynote 3] 1.球的表面积 Surface.球的体积 Volumn: 2.当物体旋转后,如果通过变换后的旧AABB来顶点来计算新的AABB顶点,则生成的新AABB可能比实际 ...