监听滚动的结束事件
思想:把结束 handler 放在 scroll 事件中不断延时处理,scroll 事件停了之后就会触发。
1 | var scrollTimer //定时器 |
判断移动设备类型
1 | export const getOsFrom = (callback) => { |
获取当前页面的URL 对其带的参数进行处理
1 | export const getUrlParams = () => { |
颜色16进制转rgb
1 | export const colorToRgb = (color, opacity) => { |
桌面推送消息
1 | Notification.requestPermission(function (permission) { |
js执行字符串函数
1 | // eval() 函数会将传入的字符串当做 JavaScript 代码进行执行,尽量不要使用 |
懒加载
首先将页面上的图片的 src 属性设为空字符串,而图片的真实路径则设置在data-original属性中,
当页面滚动的时候需要去监听scroll事件,在scroll事件的回调中,判断我们的懒加载的图片是否进入可视区域,如果图片在可视区内将图片的 src 属性设置为data-original 的值,这样就可以实现延迟加载。预加载和懒加载的区别是一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。
1 | <head> |
预加载
预加载简单来说就是将所有所需的资源提前请求加载到本地,这样后面在需要用到时就直接从缓存取资源。
1 | // 1、使用HTML标签预加载 |
函数节流
在规定时间内只触发一次
1 | function throttle(fn, delay) { |
函数防抖
一个需要频繁触发的函数,在规定时间内,只让最后一次生效,前面的不生效。其原理就第一次调用函数,创建一个定时器,在指定的时间间隔之后运行代码。当第二次调用该函数时,它会清除前一次的定时器并设置另一个。如果前一个定时器已经执行过了,这个操作就没有任何意义。然而,如果前一个定时器尚未执行,其实就是将其替换为一个新的定时器,然后延迟一定时间再执行。
1 | <button id='btn'>按钮</button> |
数组降维
思路: 递归
1 | let arr = [[1,[2,3, [4,5]]]] |
对象父子级分解
将对象的父子级进行分解成数组
1 | let obj = { id: 1, name: '一级1', children: [{ id: 2, name: '一级1-1' }, { id: 3, name: '一级1-2', children: [{ id: 4, name: '一级1-1-1' }, { id: 5, name: '一级1-1-2' }] }] } |