首页 > 其他分享 >flexible分析.js

flexible分析.js

时间:2022-10-05 15:22:51浏览次数:49  
标签:分析 body js window rem docEl flexible document 页面

(function flexible(window, document) {
    // 获取的html 的根元素
    var docEl = document.documentElement
        // dpr 物理像素比
    var dpr = window.devicePixelRatio || 1

    // adjust body font size  设置我们body 的字体大小
    function setBodyFontSize() {
        // 如果页面中有body 这个元素 就设置body的字体大小
        if (document.body) {
            document.body.style.fontSize = (12 * dpr) + 'px'
        } else {
            // 如果页面中没有body 这个元素,则等着 我们页面主要的DOM元素加载完毕再去设置body
            // 的字体大小
            document.addEventListener('DOMContentLoaded', setBodyFontSize)
        }
    }
    setBodyFontSize();

    // set 1rem = viewWidth / 10    设置我们html 元素的文字大小
    function setRemUnit() {
        var rem = docEl.clientWidth / 10
        docEl.style.fontSize = rem + 'px'
    }

    setRemUnit()

    // reset rem unit on page resize  当我们页面尺寸大小发生变化的时候,要重新设置下rem 的大小
    window.addEventListener('resize', setRemUnit)
        // pageshow 是我们重新加载页面触发的事件
    window.addEventListener('pageshow', function(e) {
        // e.persisted 返回的是true 就是说如果这个页面是从缓存取过来的页面,也需要从新计算一下rem 的大小
        if (e.persisted) {
            setRemUnit()
        }
    })

    // detect 0.5px supports  有些移动端的浏览器不支持0.5像素的写法
    if (dpr >= 2) {
        var fakeBody = document.createElement('body')
        var testElement = document.createElement('div')
        testElement.style.border = '.5px solid transparent'
        fakeBody.appendChild(testElement)
        docEl.appendChild(fakeBody)
        if (testElement.offsetHeight === 1) {
            docEl.classList.add('hairlines')
        }
        docEl.removeChild(fakeBody)
    }
}(window, document))

 

标签:分析,body,js,window,rem,docEl,flexible,document,页面
From: https://www.cnblogs.com/wangxianwen/p/16755636.html

相关文章

  • flexible.js
    (functionflexible(window,document){vardocEl=document.documentElementvardpr=window.devicePixelRatio||1//adjustbodyfontsizef......
  • 电商网站用户购买CD消费分析
    用户消费行为分析一、项目介绍  用户消费行为贯穿于生活中的各行各业,例如:淘宝、拼多多、叮当快药(医疗行业)、金融理财产品以及物流行业等等。  每天都会产生很多的......
  • CommonJs与ESModule的区别
    两者的模块导入导出语法不同,CommonJs是通过module.exports,exports导出,require导入;ESModule则是export导出,import导入。CommonJs是运行时加载模块,ESModule是在静态编译期......
  • js:防抖动与节流
    针对一些会频繁触发的事件如scroll、resize,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能。因此针对这类事件要进行防抖动或者节流处理防......
  • 需求分析需要注意的几个地方
     需求收集客户访谈问卷调查头脑风暴历史数据分析竞品分析kano模型需求分级(基本需求:市场调查,期望需求:用户交流,魅力需求:需求挖掘) 产品规划关于异常操作对于......
  • SAP UI5 应用元数据文件 manifest.json 的加载和解析原理讲解试读版
    一套适合SAPUI5初学者循序渐进的学习教程本专栏计划的文章数在​​300​​​篇左右,到​​2022年9月22日​​​为止,目前已经更新了​​133​​​篇,专栏完成度为​​......
  • JVM调优-GC基本原理和调优关键分析
    1.写在前面今天我们分享一下:垃圾回收算法,和调优的关键指标,等内容。2.JVM的GC基本原理2.1什么是垃圾?在内存中没有被引用的对象就是垃圾(一次请求会在内存中创建出很多的对象......
  • 【nodejs开发】nodejs实现socket网络通信
    (本节内容如下:)1、简介在NodeJS中有三种socket:1.TCP,2.UDP,3.Unix域套接字。UDP/datagramsocketsClass:dgram.SocketEvent:'close'Event:'connect'Event:'erro......
  • 实验3:OpenFlow协议分析实践
    1.基础要求只需要提交导入到/home/用户名/学号/lab3/目录下的拓扑文件,wireshark抓包的结果截图和对应的文字说明;a)查看抓包结果,分析OpenFlow协议中交换机与控制器的消息交......
  • 零售会员分析体系构建
    编辑导语:为了提升企业的经营利润,采取精细化运营策略、做好用户管理,已经成为企业必然采取的举措之一。而为了实现更好的用户运营管理,提升用户粘性,大多数企业都会选择构建会......