• 理解rem实现响应式布局原理及js动态计算rem


    前言

      移动端布局中,童鞋们会使用到rem作为css单位进行不同手机屏幕大小上的适配。那么来讲讲rem在其中起的作用和如何动态设置rem的值。

    1、什么是rem

      rem是相对于根元素(html标签)的字体大小的单位。

    2、rem实现适配的原理

      核心思想:百分比布局可实现响应式布局,而rem相当于百分比布局。

      实现手段:动态获取当前视口宽度width,除以一个固定的数n,得到rem的值。表达式为rem = width / n。

      通过此方法,rem大小始终为width的n等分。

    3、如何动态计算rem

      核心代码块:

            // 动态为根元素设置字体大小
    function init () {
          // 获取屏幕宽度
    var width = document.documentElement.clientWidth
          // 设置根元素字体大小。此时为宽的10等分
    document.documentElement.style.fontSize = width / 10 + 'px'
    }

         //
         首次加载应用,设置一次
    init()
    // 监听手机旋转的事件的时机,重新设置
    window.addEventListener('orientationchange', init)
    // 监听手机窗口变化,重新设置
    window.addEventListener('resize', init)

      理解:上面代码实现了,无论设备可视窗口如何变化,始终设置rem为width的1/10.即实现了百分比布局
    4、tip:
      1、以上代码需在dom之前写入(可放在head里面第一个script标签)

      2、移动端加上meta标签<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    5、使用体验:
      我在项目中没有使用flexible.js等此类动态计算rem的插件。另外说明一点,此方法实现的功能也相对简单,只实现了最核心的动态修改rem的值。

                    

  • 相关阅读:
    TCP/IP报文 三次握手 四次挥手
    socket 编程
    出现线程死锁的几种情况
    类模板的写法
    【HTTP】boundary 中一个 = 导致HTTP上传文件失败
    【时间戳】 年月日 转换为时间戳
    【CSV文件】CSV文件内容读取
    std::string 的方法c_str() 和 data() 有什么区别
    [转载] C++ STL中判断list为空,size()==0和empty()有什么区别
    【SQL】glob 和 like 的区别
  • 原文地址:https://www.cnblogs.com/damonFeng/p/7880926.html
Copyright © 2020-2023  润新知