web-utils-super
Version:
前端函数库
1,052 lines (916 loc) • 31.7 kB
Markdown
# 前端函数库 web-utils-super
> 目的:高效率完成前端业务代码
> 包含大多数常用函数,支持Typescript
> 目前有70+函数,持续更新中...
## 安装使用
1. 直接下载`min`目录下的[web-utils-super.min.js](#)使用,支持UMD通用模块规范
2. 使用npm安装
### 浏览器:
``` html
<script src="web-utils-super.min.js"></script>
<script>
var OS = window['web-utils-super'].getOS()
</script>
```
### npm:
``` bash
$ npm install --save-dev web-utils-super
```
``` javascript
// 完整引入
const utils = require('web-utils-super')
const OS = utils.getOS()
//或者
import utils from 'web-utils-super'
const OS = utils.getOS()
```
``` javascript
// 只引入部分方法('web-utils-super/<方法名>')
const getOS = require('web-utils-super/getOS')
const OS = getOS()
// 或者
import { getOS } from 'web-utils-super'
const OS = getOS()
```
## API文档
### Array
####   [arrayEqual](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/array/arrayEqual.js)  判断两个数组是否相等
``` javascript
/**
*
* @param {Array} arr1
* @param {Array} arr2
* @return {Boolean}
*/
arrayEqual(arr1, arr2)
```
####   [arrayIntersection](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/array/arrayIntersection.js)  两个数组取交集
``` javascript
/**
* @param {Array} arr1
* @param {Array} arr2
* @return {Array}
*/
arrayIntersection(arr1, arr2)
const a = [0, 1, 2, 3, 4, 5]
const b = [3, 4, 5, 6, 7, 8]
arrayIntersection(a, b) // [3, 4, 5]
```
####   [arrayDiff](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/array/arrayDiff.js)  两个数组取差集
``` javascript
/**
* @param {Array} arr1
* @param {Array} arr2
* @return {Array}
*/
arrayDiff(arr1, arr2)
const a = [0, 1, 2, 3, 4, 5]
const b = [3, 4, 5, 6, 7, 8]
arrayDiff(a, b) // [0, 1, 2, 6, 7, 8]
```
### Function
####   [curryIt](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/function/curryIt.js)  函数柯里化
``` javascript
/**
* @desc 函数柯里化 是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术
* @param {Function} fn
* @return {Function | any}
*/
curryIt(fn)
function add (a,b) {
return a + b
}
curryIt(add)(1)(2) // 3
curryIt(add)(10)(20) // 30
```
####   [debounce](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/function/debounce.js)  防抖函数
``` javascript
/**
* @desc 防抖函数,设置一个定时器,约定在xx毫秒后再触发事件处理,每次触发事件都会重新设置计时器,直到xx毫秒内无第二次操作
* @param {Function} func
* @param {Number} wait
* @param {Boolean} promptly 默认false: wait毫秒内无第二次操作触发 | true:立即触发一次,wait毫秒内无第二次操作清空计时器,然后再次操作即可触发func
* @return {Function}
*/
debounce(func, wait, promptly)
```
####   [throttle](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/function/throttle.js)  节流函数
``` javascript
/**
* @desc: 节流函数 每隔一段时间就执行一次,设置一个定时器,约定xx毫秒后执行事件,如果时间到了,那么执行函数并重置定时器
* @param {Function} func
* @param {Number} wait
* @return {Function}
*/
throttle(func, wait)
```
### File
####   [domToBase64](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/domToBase64.js)  截图 返回图片base64链接
``` javascript
/**
* @desc: 截图 返回图片base64链接
* @param {String} id
* @param {Number} height
* @param {Number} width
* @return {String} base64
*/
domToBase64(id, height, width)
```
####   [downByBase64](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/downByBase64.js)  通过base64下载图片
``` javascript
/**
* @desc: 通过base64下载图片
* @param {String} dataUrl
* @param {String} fileName
*/
downByBase64(dataUrl, fileName)
```
####   [base64ToFile](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/base64ToFile.js)  将图片base64转为Blob类型
``` javascript
/**
* @param {String} base64
* @param {String} fileName 文件名
* @return {Blob}
*/
base64ToFile(base64, fileName)
```
####   [downloadFile](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/downloadFile.js)  下载文件 excel word
``` javascript
/**
* @desc: 下载文件 excel word
* @param {String} fileName 文件名
* @param {String} fileType 文件类型 可选值:excel | word
* @param {File | Blob} data 二进制流
*/
downloadFile(fileName, fileType, data)
```
####   [downloadImgFile](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/downloadImgFile.js)  通过File或Blob下载图片
``` javascript
/**
* @param {File | Blob} data File 对象或 Blob 对象
*/
downloadImgFile(data)
```
####   [imgToBase64](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/imgToBase64.js)  将图片资源转为base64
``` javascript
/**
* @param {String} src 图片资源路径
* @param {String} type 图片类型,默认png 只支持 'png'|'jpeg'| 'webp'
* @param {Number} width 要生成的base64图片宽
* @param {Number} height 要生成的base64图片高
* @return {String}
*/
imgToBase64(src, type, width, height)
```
####   [formatFileSize](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/formatFileSize.js)  格式化文件大小
``` javascript
/**
* @desc: 格式化文件大小
* @param {Number} fileSize
* @return {String}
*/
formatFileSize(fileSize)
```
####   [getFileSuffix](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/getFileSuffix.js)  取得文件后缀名
``` javascript
/**
* @desc: 取得文件后缀名
* @param {String} fileName
* @return {String}
*/
getFileSuffix(fileName)
```
####   [steamToImg](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/file/steamToImg.js)  二进制流转图片链接
``` javascript
/**
* @desc: 二进制流转图片链接
* @param {any} steam
* @return {String} url
*/
steamToImg(steam)
```
### Keycode
####   [getKeyName](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/keycode/getKeyName.js)  根据keycode获得键名
``` javascript
/**
* @param {Number} keycode
* @return {String}
*/
getKeyName(keycode)
```
### Math
####   [add](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/math/add.js)  加法运算,避免数据相加小数点后产生多位数和计算精度损失
``` javascript
/**
* @param {Number} augend 相加的第一个数
* @param {Number} addend 相加的第二个数
* @return {Number} 总和
*/
add(augend, addend)
```
####   [subtract](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/math/subtract.js)  减法运算
``` javascript
/**
* @param {Number} augend 相减的第一个数
* @param {Number} addend 相减的第二个数
* @return {Number} 差
*/
subtract(augend, addend)
```
####   [multiply](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/math/multiply.js)  乘法运算
``` javascript
/**
* @param {Number} augend 相乘的第一个数
* @param {Number} addend 相乘的第二个数
* @return {Number} 乘积
*/
multiply(augend, addend)
```
####   [divide](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/math/divide.js)  除法运算
``` javascript
/**
* @param {Number} augend 相除的第一个数
* @param {Number} addend 相除的第二个数
* @return {Number} 返回商数
*/
divide(augend, addend)
```
### Object
####   [deepClone](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/object/deepClone.js)  深拷贝,支持常见类型
``` javascript
/**
* @param {Any} values
* @return {Any}
*/
deepClone(values)
```
####   [isEmptyObject](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/object/isEmptyObject.js)  判断对象(Object)是否为空
``` javascript
/**
*
* @param {Object} obj
* @return {Boolean}
*/
isEmptyObject(obj)
```
####   [isType](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/object/isType.js)  判断数据类型
``` javascript
/**
* @param {any} para
* @return {String} 'number' | 'string' 等
*/
isType(para)
isType(2) // 'number'
isType('2') // 'string'
isType(undefined) // 'undefined'
isType(true) // 'boolean'
isType({}) // 'object'
isType([]) // 'array'
isType(function(){}) // 'function'
isType(null) // 'null'
isType(Symbol(2)) // 'symbol'
```
### Random
####   [randomColor](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/random/randomColor.js)  随机生成十六进制颜色
``` javascript
/**
*
* @return {String}
*/
randomColor() // '#321232'
randomColor() // '#937293'
```
####   [randomColorRGB](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/random/randomColorRGB.js)  生成指定范围[min, max]的RGB颜色
``` javascript
/**
* @param {Number} min
* @param {Number} max
* @return {String}
*/
randomColorRGB(min = 0, max = 255)
randomColorRGB(10,20) // 'rgb(15,19,15)'
randomColorRGB(100,200) // 'rgb(139,117,119)'
```
####   [randomNum](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/random/randomNum.js)  生成指定范围[min, max]的随机数
``` javascript
/**
*
* @desc 生成指定范围[min, max]的随机数
* @param {Number} min
* @param {Number} max
* @param {Boolean} integer 是否返回整数
* @return {Number}
*/
randomNum(min = 0, max = 1, integer = true)
randomNum(0, 1) // 0 或者 1
randomNum(0, 1, false) // 0.8808755825399923
randomNum(0, 1, false) // 0.4734837620337147
```
### Regexp
####   [isJSON](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isJSON.js)  判断是否为json
``` javascript
/**
* @desc: 判断是否为json
* @param {any} value
* @return {Boolean}
*/
isJson(value)
```
####   [isEmpty](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isEmpty.js)  判断是否为空字符串、null、undefined、空对象、空数组、false
``` javascript
/**
* @desc: 判断是否为空(是否为空字符串、null、undefined)
* @param {String | null | undefined | Object | Array | Boolean} value
* @return {*}
*/
isEmpty(value)
isEmpty('') // true
isEmpty(' ') // true
isEmpty(null) // true
isEmpty(undefined) // true
isEmpty({}) // true
isEmpty([]) // true
isEmpty(false) // true
isEmpty('123') // false
isEmpty('null') // false
isEmpty('undefined') // false
isEmpty('false') // false
isEmpty('{}') // false
isEmpty('[]') // false
isEmpty({name: 'empty'}) // false
isEmpty([1,2,3]) // false
```
####   [isIP](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isIP.js)  判断是否为IP
``` javascript
/**
* @desc: 判断是否是IP
* @param {String} ip
* @return {Boolean}
*/
isIP(ip)
```
####   [isPort](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isPort.js)  判断是否为端口号
``` javascript
/**
* @desc: 判断是否是端口号
* @param {String} value
* @return {Boolean}
*/
isPort(value)
```
####   [isLatitude](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isLatitude.js)  判断是否为纬度
``` javascript
/**
* @desc: 判断纬度 -90.0~+90.0(整数部分为0~90,必须输入1到6位小数)
* @param {Number} value
* @return {Boolean}
*/
isLatitude(value)
```
####   [isLongitude](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isLongitude.js)  判断是否为经度
``` javascript
/**
* @desc: 判断经度 -180.0~+180.0(整数部分为0~180,必须输入1到6位小数)
* @param {Number} value
* @return {Boolean}
*/
isLongitude(value)
```
####   [isNum](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isNum.js)  判断是否为数字
``` javascript
/**
* @param {Number} str
* @param {String} type 'num' 数字 | 'int' 整数 | 'flot' 浮点数 默认num
* @param {Boolean} positive 是否是正数,默认undefined,不判断正负
*/
isNum(str, type = 'num', positive)
// 下面是各种类型为true的情况
// 数字 true
utils.isNum(1)
utils.isNum(1.2)
utils.isNum(-1)
utils.isNum(-1.2)
// 正数
isNum(1, 'num', true)
isNum(1.11, 'num', true)
// 负数
isNum(-1, 'num', false)
isNum(-1.11, 'num', false)
// 整数
isNum(1, 'int')
isNum(-1, 'int')
// 正整数
isNum(1, 'int', true)
// 负整数
isNum(-1, 'int', false)
// 浮点数
isNum(1.11, 'flot')
isNum(-1.11, 'flot')
// 正浮点数
isNum(1.11, 'flot', true)
// 负浮点数
isNum(-1.11, 'flot', false)
```
####   [isColor](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isColor.js)  判断是否为16进制颜色、RGB 、 RGBA
``` javascript
/**
*
* @param {String} str
* @return {Boolean}
*/
isColor(str)
let color = '#ff00ff'
isColor(color) // true
let notColor = 'ff00ff'
isColor(notColor) // false
```
####   [isEmail](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isEmail.js)  判断是否为邮箱地址
``` javascript
/**
*
* @desc 判断是否为邮箱地址
* @param {String} str
* @return {Boolean}
*/
isEmail(str)
isEmail('657417728@qq.com') // true
isEmail('657417728@qq') // false
```
####   [isIdCard](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isIdCard.js)  判断是否为身份证号
``` javascript
/**
*
* @param {String | Number} str
* @return {Boolean}
*/
isIdCard(str)
```
####   [isPhone](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isPhone.js)  判断是否为手机号
``` javascript
/**
*
* @param {String|Number} str
* @return {Boolean}
*/
isPhone(str)
isPhone(17623060929) // true
```
####   [isUrl](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isUrl.js)  判断是否为URL地址
``` javascript
/**
*
* @param {String} str
* @return {Boolean}
*/
isUrl(str)
isUrl('2.com/bq-med/p/8796836') // false
isUrl('cnblogs/bq-med/p/8796836') // false
isUrl('https://www.cnblogs.com/bq-med/p/8796836.html') // true
isUrl('www.cnblogs.com/bq-med/p/8796836') // true
```
####   [isBase64](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isBase64.js)  判断是否是base64格式
``` javascript
/**
* @param {String} str
* @return {Boolean}
*/
isBase64(str)
```
####   [isLicencePlate](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isLicencePlate.js)  判断是否是车牌号
``` javascript
/**
* @param {String} str
* @param {Number} type 1:新能源+非新能源 2:新能源车牌号 3:非新能源车牌号
* @return {Boolean}
*/
isLicencePlate(str, type = 1)
// 非新能源车牌号 '渝AB0926'
let palte = '渝AB0926'
isLicencePlate(palte) // true
isLicencePlate(plate, 2) // false
```
####   [isChinese](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/regexp/isChinese.js)  判断是否为只有中文
``` javascript
/**
* @param {String} str
* @return {Boolean}
*/
isChinese(str)
```
### String
####   [changeCase](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/string/changeCase.js)  字符转换,type: 1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写 默认为1
``` javascript
/**
* @desc: 字符转换,type: 1:首字母大写 2:首字母小写 3:大小写转换 4:全部大写 5:全部小写 默认为1
* @param {String} str 字符串
* @param {Number} type 转换方式
* @return {String}
*/
changeCase('abc') // 'Abc'
changeCase('abc', 1) // 'Abc'
changeCase('abc', 2) // 'aBC'
changeCase('ABC',2) // 'aBC'
changeCase('abc',3) // 'ABC'
changeCase('ABC',3) // 'abc'
changeCase('abc',4) // 'ABC'
changeCase('ABC',5) // 'abc'
```
####   [colorToRGB](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/string/colorToRGB.js)  16进制颜色转 RGB | RGBA 字符串,有透明度则转换为RGBA
``` javascript
/**
* @desc: 16进制颜色转 RGB | RGBA 字符串,有透明度则转换为RGBA
* @param {String} color 16进制颜色
* @param {Number} opa 透明度
* @return {String}
*/
colorToRGB('#000000') // 'rgb(0,0,0)'
colorToRGB('#000000',0.2) // 'rgba(0,0,0,0.2)'
colorToRGB('#325879',0.2) // 'rgba(50,88,121,0.2)'
```
####   [md5](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/string/md5.js)  md5加密
``` javascript
/**
* @desc: md5加密
* @param {String} string
* @return {String}
*/
md5(string)
```
####   [digitUppercase](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/string/digitUppercase.js)  现金额转大写
``` javascript
/**
*
* @param {Number} n 金额
* @return {String}
*/
digitUppercase(n)
digitUppercase(510) // '伍佰壹拾元整'
digitUppercase(510.2) // '伍佰壹拾元贰角'
digitUppercase(1) // '壹元整'
```
####   [formatString](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/string/formatString.js)  字符串格式化
``` javascript
/**
* @param {String} str 要格式化的字符串
* @param {Number} frontLen 保留前几位
* @param {Number} endLen 保留后几位
* @param {String} cha 替换的字符串
* @return {String}
*/
formatString(str, frontLen = 0, endLen = 0, cha = '*')
formatString('abcd') // ****
formatString('abcd', 1, 1) // a**d
formatString('abcd', 1, 1, '-') // a--d
```
####   [getAllLetter](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/string/getAllLetter.js)  生成字母数组
``` javascript
/**
* @param {String} range 'all' 包含大小写 | 'lower' 只有小写 | 'upper' 只有大写
* @return {Array}
*/
getAllLetter(range = 'all')
```
### Support
####   [isSupportWebP](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/support/isSupportWebP.js)  判断浏览器是否支持webP格式图片
``` javascript
/**
*
* @return {Boolean}
*/
isSupportWebP()
```
### Time
####   [formatPassTime](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/formatPassTime.js)  格式化startTime距现在的已过时间
``` javascript
/**
* @param {Date | String} startTime
* @return {String}
*/
formatPassTime(startTime)
// 假设现在是2022/3/18
formatPassTime('2020/2/2') // 两年前
formatPassTime() // 刚刚
formatPassTime(new Date('2022/3/15')) // '3天前'
```
####   [formatRemainTime](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/formatRemainTime.js)  格式化现在距endTime的剩余时间
``` javascript
/**
*
* @param {Date | String} endTime
* @return {String}
*/
formatRemainTime(endTime)
formatRemainTime('2023/2/2') // '320天 12小时 34分钟 34秒'
```
####   [formatTime](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/formatTime.js)  格式化时间戳
``` javascript
/**
* @param {Date | String} time 时间
* @param {String} fmt 格式
* @return {String}
*/
formatTime(time, fmt = 'yyyy-MM-DD hh:mm:ss')
formatTime('2022/3/15') // '2022-03-15 00:00:00'
formatTime(new Date('2022/3/15'), 'YY-MM-DD') // '2022-03-15'
```
####   [getCurrentDay](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getCurrentDay.js)  获取某天起止时间
``` javascript
/**
* @desc: 获取某天起止时间
* @param {Date | String} 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | 不传默认是当天
* @return {Array}
*/
getCurrentDay(time)
getCurrentDay('2022-10-14') // ['2022-10-14 00:00:00', '2022-10-14 23:59:59']
```
####   [getCurrentWeek](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getCurrentWeek.js)  获取某周起止时间
``` javascript
/**
* @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | time instanceof Date
* @return {Array}
*/
getCurrentWeek(time)
getCurrentWeek('2022/3/6') // ['2022-02-28 00:00:00', '2022-03-06 23:59:59']
```
####   [getCurrentMonth](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getCurrentMonth.js)  获取某月起止时间
``` javascript
/**
* @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | time instanceof Date
* @return {Array}
*/
getCurrentMonth(time)
getCurrentMonth('2022/3/6') // ['2022-03-01 00:00:00', '2022-03-31 23:59:59']
```
####   [getCurrentQuarter](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getCurrentQuarter.js)  获取某季度起止时间
``` javascript
/**
* @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | time instanceof Date
* @return {Array}
*/
getCurrentQuarter(time)
getCurrentQuarter('2022/3/6') // ['2022-01-01 00:00:00', '2022-03-31 23:59:59']
```
####   [getCurrentYear](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getCurrentYear.js)  获取某年起止时间
``` javascript
/**
* @param {Date | String} time 年月日 '2022-2-2' | '2022/2/2' | '2022.2.2' | time instanceof Date
* @return {Array} 起止时间数组集合
*/
getCurrentYear (time)
getCurrentYear('2022/3/6') // ['2021-01-01 00:00:00', '2021-12-31 23:59:59']
```
####   [getDay](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getDay.js)  获取某天时间
``` javascript
/**
* @param {Number} num 当天0 昨天传-1 明天传1 以此类推
* @param {String} str 时间分割方式,默认是'-'
* @return {String}
*/
getDay(num = 0, str = '-')
// 假如今天是2022/3/18
getDay(0) // '2022-03-18'
getDay(-1) // '2022-03-17'
```
####   [getQuarterSeasonStartMonth](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/getQuarterSeasonStartMonth.js)  得到某季度开始的月份
``` javascript
/**
* @param {Number} month 需要计算的月份 0-11
* @return {Number}
*/
getQuarterSeasonStartMonth(month = 0)
getQuarterSeasonStartMonth(1) // 0
getQuarterSeasonStartMonth(11) // 9
```
####   [isLeapYear](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/isLeapYear.js)  是否为闰年
``` javascript
/**
*
* @param {Number} year
* @returns {Boolean}
*/
isLeapYear(year)
isLeapYear(2022) // false
isLeapYear(2024) true
```
####   [isSameDay](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/isSameDay.js)  判断是否为同一天
``` javascript
/**
* @param {Date | String} date1
* @param {Date | String} date2 可选/默认值:当天
* @return {Boolean}
*/
isSameDay(date1, date2)
isSameDay('2022/3/1', new Date('2022-3-1')) // true
```
####   [monthDays](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/monthDays.js)  获取指定日期月份的总天数
``` javascript
/**
* @param {Date | String} time
* @return {Number}
*/
monthDays(time)
monthDays('2022/4/2') // 30
monthDays('2022/2') // 28
```
####   [timeLeft](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/time/timeLeft.js)  ${startTime - endTime}的剩余时间,startTime大于endTime时,均返回0
``` javascript
/**
* @param { Date | String } startTime
* @param { Date | String } endTime
* @returns { Object } { d, h, m, s } 天 时 分 秒
*/
timeLeft(startTime, endTime)
timeLeft('2022/3/1', '2022/3/2 20:49:40') // {d: 1, h: 20, m: 49, s: 40}
```
### Url
####   [getQueryString](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/url/getQueryString.js)  获取url参数中对应key的值
``` javascript
/**
* @param {String} key
* @param {String} url
* @return {String}
*/
getQueryString(key, url)
getQueryString('id', 'http://www.baidu.com?id=3') // '3'
```
####   [parseQueryString](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/url/parseQueryString.js)  url参数转对象
``` javascript
/**
*
* @param {String} url 默认值window.location.href 当前页面url
* @return {Object}
*/
parseQueryString(url)
parseQueryString('http://www.baidu.com?id=3') // {id: '3'}
```
####   [stringfyQueryString](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/url/stringfyQueryString.js)  对象序列化
``` javascript
/**
*
* @param {Object} obj
* @param {String} str 连接符 默认'&'
* @return {String}
*/
stringfyQueryString(obj)
stringfyQueryString({id:3,name:'你好'}) // 'id=3&name=%E4%BD%A0%E5%A5%BD'
stringfyQueryString({id:3,name:'hello'}) // 'id=3&name=hello'
stringfyQueryString({id:3,name:'hello'}, '/') // 'id=3/name=hello'
```
### Class
####   [addClass](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/class/addClass.js)  为元素添加class
``` javascript
/**
*
* @param {HTMLElement} ele
* @param {String} cls
*/
addClass(ele, cls)
```
####   [hasClass](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/class/hasClass.js)  判断元素是否有某个class
``` javascript
/**
*
* @param {HTMLElement} ele
* @param {String} cls
* @return {Boolean}
*/
hasClass(ele, cls)
```
####   [removeClass](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/class/removeClass.js)  为元素移除class
``` javascript
/**
*
* @param {HTMLElement} ele
* @param {String} cls
*/
removeClass(ele, cls)
```
### Cookie
####   [getCookie](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/cookie/getCookie.js)  根据name读取Cookie
``` javascript
/**
*
* @param {String} name
* @return {String}
*/
getCookie(name)
```
####   [removeCookie](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/cookie/removeCookie.js)  根据name删除Cookie
``` javascript
/**
*
* @param {String} name
*/
removeCookie(name)
```
####   [setCookie](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/cookie/setCookie.js)  添加Cookie
``` javascript
/**
*
* @param {String} name
* @param {String} value
* @param {Number} days 保存天数
*/
setCookie(name, value, days)
```
### Device
####   [getExplore](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/device/getExplore.js)  获取浏览器类型和版本号
``` javascript
/**
*
* @return {String}
*/
getExplore()
```
####   [getOS](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/device/getOS.js)  获取操作系统类型
``` javascript
/**
*
* @return {String}
*/
getOS()
```
### Dom
####   [getScrollTop](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/getScrollTop.js)  获取滚动条距顶部的距离
``` javascript
/**
*
* @return {Number}
*/
getScrollTop()
```
####   [offset](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/offset.js)  获取一个元素的距离文档(document)的位置,类似jQ中的offset()
``` javascript
/**
*
* @param {HTMLElement} ele
* @returns { {left: number, top: number} }
*/
offset(ele)
```
####   [scrollTo](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/scrollTo.js)  在duration时间内,滚动条平滑滚动到to指定位置
``` javascript
/**
*
* @param {Number} to
* @param {Number} duration
*/
scrollTo(to, duration)
```
####   [setScrollTop](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/setScrollTop.js)  设置滚动条距顶部的距离
``` javascript
/**
*
* @param {Number} value
*/
setScrollTop(value)
```
####   [windowResize](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/windowResize.js)  H5软键盘缩回、弹起回调
``` javascript
/**
*
* @desc 当软件键盘弹起会改变当前 window.innerHeight,监听这个值变化
* @param {Function} downCb 当软键盘弹起后,缩回的回调
* @param {Function} upCb 当软键盘弹起的回调
*/
windowResize(downCb, upCb)
```
####   [checkInView](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/checkInView.js)  判断元素是否在可视区域内
``` javascript
/**
* @desc 适用于懒加载和无限滚动,但是每次scroll都得重新计算,性能耗费大,并且该方法会引起重绘回流
* @param {HTMLElement} dom
* @return {Boolean}
*/
checkInView(dom)
```
####   [createCodeImg](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/createCodeImg.js)  创建图形验证码
``` html
/**
* @param {String} options 容器id
* @param {String} code 验证码
*/
<div id="code" style="width: 280px; height: 120px"></div>
<script>
let code = new createCodeImg("code", "1234");
// 刷新图形验证码
code.refresh()
</script>
```
####   [onWindowResize](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/onWindowResize.js)  window.onresize 事件 专用事件绑定器
``` javascript
// 用于解决 lte ie8 & chrome 及其他可能会出现的 原生 window.resize 事件多次执行的 BUG.
// add: 添加事件句柄
// remove: 删除事件句柄
onWindowResize.add(debounce(setFontSize, 50));
```
####   [resizeChangeFontSize](http://cqkunlun-git/qianduan/web-utils-super/-/blob/main/src/dom/resizeChangeFontSize.js)  window.onresize 宽度变化修改根节点fontsize
``` javascript
/**
*
* @desc 宽度变化修改根节点fontsize,用于开发响应式网站
* @param {Number} width 以width为基准 在width宽度下 1rem = 100px
*/
// 在宽度为375px下 1rem = 100px
resizeChangeFontSize(375)
```