1.回到顶部
// 这里我把 vue3 的案例拿过来
const bindTop = () => {
// 方法一 这样可以实现,但是效果不太行
window.scrollTo(0, 0)
document.documentElement.scrollTop = 0;
// 方法二 通过计时器去滚动 视觉上会丝滑一些,没有太大的卡顿效果
const timeTop = setInterval(() => {
// 去控制他的滑行距离
document.documentElement.scrollTop = scrollTopH.value -= 50
// 当滑到顶部的时候记得清除计时器(*) 重点
if (scrollTopH.value <= 0) {
clearInterval(timeTop)
}
}, 10)
}
2.防抖节流
// 防抖
// fn 需要防抖的函数,delay 为定时器时间
function debounce(fn,delay){
let timer = null // 用于保存定时器
return function () {
// 如果timer存在 就清除定时器,重新计时
if(timer){
clearTimeout(timeout);
}
//设置定时器,规定时间后执行真实要执行的函数
timeout = setTimeout(() => {
fn.apply(this);
}, delay);
}
}
// 节流
function throttle(fn) {
let timer = null; // 首先设定一个变量,没有执行定时器时,默认为 null
return function () {
if (timer) return; // 当定时器没有执行的时候timer永远是false,后面无需执行
timer = setTimeout(() => {
fn.apply(this, arguments);
// 最后在setTimeout执行完毕后再把标记设置为true(关键)
// 表示可以执行下一次循环了。
timer = null;
}, 1000);
};
}
3.过滤特殊字符
function filterCharacter(str){
// 首先设置一个模式
let pattern = new RegExp("[`~!@#$^&*()=:”“'。,、?|{}':;'%,\\[\\].<>/?~!@#¥……&*()&;—|{ }【】‘;]")
let resultStr = "";
for (let i = 0; i < str.length; i++) {
// 主要通过 replace ,pattern 规则 去把字符替换成空 最后拼接在 resultStr
resultStr = resultStr + str.substr(i, 1).replace(pattern, '');
}
// 当循环结束的时候返回最后结果 resultStr
return resultStr;
}
// 示例
filterCharacter('gyaskjdhy12316789#$%^&!@#1=123,./[') // 结果:gyaskjdhy123167891123
4.将 RGB 转换为十六进制
function getColorFun(r,g,b) {
return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)
}
getColorFun(178,232,55) // 这里输出的是 #b2e837
5.获取可视窗口高度
export const getClientHeight = () => {
let clientHeight = 0;
if (document.body.clientHeight && document.documentElement.clientHeight) {
clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;
}
else {
clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight;
}
return clientHeight;
}
6.获取可视窗口宽度
export const getPageViewWidth = () => {
return (document.compatMode == "BackCompat" ? document.body : document.documentElement).clientWidth;
}