手淘flexible.js框架使用和源代码讲解小结

yizhihongxing

手淘flexible.js框架使用和源代码讲解小结

什么是flexible.js

flexible.js是淘宝移动端自适应布局的解决方案之一。它主要实现的功能是:根据不同的屏幕宽度动态设置标签的字体大小,从而实现移动端页面的自适应布局。

使用方法

使用flexible.js,只需要在页面头部引入flexible.js即可。

<script src="https://g.alicdn.com/fdilab/lib-flexible/0.3.2/flexible.js"></script>

原理

flexible.js会根据屏幕宽度动态计算标签的font-size值,用于设置其他元素的大小。计算公式如下:

document.documentElement.style.fontSize = (window.innerWidth / 设计稿宽度) * 基准字体大小

其中,设计稿宽度是指你所设计的网页的屏幕宽度,基准字体大小是你所设定的字体大小。默认的设计稿宽度为750px,基准字体大小为50px。

例如,如果你设计的网页宽度为375px,基准字体大小为50px,则计算出来的标签的font-size为25px。

源代码讲解

flexible.js源代码主要分为两个部分:mediaQuery部分和flexible部分。

mediaQuery部分

mediaQuery部分主要定义了一些媒体查询,用于不同屏幕宽度下标签的font-size值。代码如下:

docEl.style.fontSize = (win.width / 750) * 50 + 'px';

其中,docEl是标签,win是window对象,750是默认的设计稿宽度,50是默认的基准字体大小。根据屏幕宽度的不同,这个值会自动调整。

dpi = 1 / devicePixelRatio;
scale = 1 / dpi;
metaEl = doc.createElement('meta');
metaEl.setAttribute('name', 'viewport');
metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');

这段代码主要是用于设置视口的缩放比例,禁用用户手动缩放。

flexible部分

flexible部分主要包含了一些方法和事件,用于初始化页面和响应不同屏幕宽度下标签的font-size值。

function refreshRem(){
    var width = docEl.getBoundingClientRect().width;
    if (width / dpr > 540) {
        width = 540 * dpr;
    }
    var rem = width / 10;
    docEl.style.fontSize = rem + 'px';
    flexible.rem = win.rem = rem;
}

这段代码主要是用于计算和设置标签的font-size值。其中,dpr是设备像素比,一般是1或2,rem是设置的字体大小。

win.addEventListener('resize', function() {
    clearTimeout(tid);
    tid = setTimeout(refreshRem, 300);
}, false);

这段代码主要是用于响应窗口大小变化事件,并重新计算标签的font-size值。

示例说明

示例1

在页面头部引入flexible.js之后,可以通过设置其他元素的大小来实现移动端页面的自适应布局。例如:

<style>
.box {
    width: 6.4rem;
    height: 3.6rem;
    background-color: red;
}
</style>

<div class="box"></div>

这段代码定义了一个背景为红色的

元素,宽度为6.4rem,高度为3.6rem。根据默认的设计稿宽度750px和基准字体大小50px,6.4rem的宽度相当于320px,3.6rem的高度相当于180px。

示例2

如果设计的网页宽度不是750px,需要在调用flexible.js之前手动设置设计稿宽度。例如,如果设计的网页宽度为640px,可以通过以下代码实现:

window.flexible = { 
    'designWidth': 640
};

这段代码会在window对象上添加一个flexible对象,并设置designWidth属性为640。此时,根据屏幕宽度的不同,标签的font-size值将会自动计算。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:手淘flexible.js框架使用和源代码讲解小结 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • JavaScript中var与let的区别

    讲解一下JavaScript中var与let的区别,首先从定义入手。 定义 var是ES5时代定义的关键字,用于声明变量,可以声明全局变量或局部变量; let是ES6时代新增的关键字,用于声明块级作用域变量,只能在块级作用域中使用。 区别 var声明的变量存在变量提升,而let不存在。 变量提升是指变量在声明前部分代码就可以使用的行为。对于使用var声明的变…

    JavaScript 2023年5月28日
    00
  • javascript下使用Promise封装FileReader

    下面我将详细讲解如何在JavaScript中使用Promise封装FileReader。 什么是Promise? 在介绍如何使用Promise封装FileReader之前,先来简述一下Promise的概念。 Promise是一种异步编程的解决方案,它可以优雅地处理回调地狱(callback hell)问题,使得异步操作更为简洁、可读性更强。 使用Promis…

    JavaScript 2023年6月11日
    00
  • JS操作json对象key、value的常用方法分析

    今天我们一起来详细讲解一下JS操作json对象key、value的常用方法分析。 常用方法分析 在JS中,我们可以使用以下一些方法来操作json对象中的key和value。 1. 获取json对象的keys 我们可以使用Object.keys()方法来获取json对象中所有的keys,具体用法如下所示: const json = { name: "…

    JavaScript 2023年5月27日
    00
  • 一定有你会用到的JavaScript一行代码实用技巧总结

    让我来详细讲解一下“一定有你会用到的JavaScript一行代码实用技巧总结”的攻略。 一、背景介绍 在日常的前端开发工作中,我们经常会使用到JavaScript来完成各种有趣的功能和效果。本篇攻略将分享一些JS中常用但并不容易想到的一行代码实用技巧,帮助各位同学提高编码效率和提升开发经验。 二、实用技巧总结 1. 数组去重 经常会遇到需要将一组数据中的重复…

    JavaScript 2023年5月18日
    00
  • javascript 操作cookies详解及实例

    JavaScript操作Cookies详解及实例 在Web应用程序中,Cookie是一种最常用的技术,可用于识别用户并保存用户的状态信息。在这篇文章中,我们将重点讲解JavaScript如何操作Cookie。 什么是Cookie Cookie是一种保存在客户端计算机上的小型文本文件。Cookie由名称、值、过期时间、路径、域等多个属性组成。它们可以帮助我们识…

    JavaScript 2023年6月11日
    00
  • Javascript中匿名函数的多种调用方式总结

    Javascript中匿名函数的多种调用方式总结 什么是匿名函数 匿名函数就是没有名字的函数,也称为“内联函数”、“临时函数”或“lambda函数”。 匿名函数的定义方式 函数表达式 函数表达式是定义匿名函数最常用的方式。语法格式如下: var func = function() { // 函数体 } 立即执行函数表达式 立即执行函数表达式是一种定义后就立即…

    JavaScript 2023年6月10日
    00
  • JavaScript面试必备之垃圾回收机制和内存泄漏详解

    JavaScript面试必备之垃圾回收机制和内存泄漏详解 什么是垃圾回收机制 JavaScript是一种解释型语言,内存的管理是由垃圾回收机制自动进行的。垃圾回收机制是通过检测内存中不再使用的变量,然后释放内存空间,以供下一次使用。 JavaScript中的垃圾回收机制 JavaScript的垃圾回收机制采用的是自动垃圾回收(Automatic Garbag…

    JavaScript 2023年6月10日
    00
  • 可以读取EXCEL文件的js代码第1/2页

    下面我来详细讲解一下如何读取Excel文件的JS代码攻略。 1. 使用JavaScript的FileReader对象 使用JavaScript的FileReader对象可以读取文件。下面是读取Excel文件的演示代码。 var reader = new FileReader(); reader.onload = function (e) { var data…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部