js设置默哀用全局灰度

news/2025/2/14 5:42:40/

js设置默哀用全局灰度

  • 1 思路
  • 2 css文件内容
  • 3 新增/删除link标签的方法
  • 4 业务代码(参考即可)

1 思路

通过动态的新增/删除link标签,使js能操作是否引入css。

2 css文件内容

// 通过给html设置灰度滤镜,使全部样式变成灰色
html {-webkit-filter: grayscale(100%);-moz-filter: grayscale(100%);-ms-filter: grayscale(100%);-o-filter: grayscale(100%);filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);_filter: none;
}

grayscale官方文档

3 新增/删除link标签的方法

// 加载css
export function loadCss(url) {const temp = document.createElement("link");temp.rel = "stylesheet";temp.type = "text/css";temp.href = url;document.getElementsByTagName("head")[0].appendChild(temp);console.log(temp);
}
// 卸载css
export function removeCss(url) {const links = document.getElementsByTagName("link");for (let index = 0; index < links.length; index++) {console.log(links[index].href, url, links[index].href.includes(url));if (links[index].href.includes(url)) {(links[index].parentNode as ParentNode).removeChild(links[index]);break;}}
}
const GRAYSCALE_FILE_PATH = "/public/static/css/grayscale.css";
// 设置全局灰度
export function settingGrayscale() {loadCss(GRAYSCALE_FILE_PATH);
}
// 清除全局灰度
export function clearGrayscale() {removeCss(GRAYSCALE_FILE_PATH);
}

4 业务代码(参考即可)

如果之前没有获取过灰度时间区间
如果现在时间大于了之前保存的灰度结束时间
则重新获取灰度时间的区间

如果新的灰度时间区间囊括了现在时间
则将全局样式加入灰色滤镜
否则取消

// 引入全局灰度函数和取消函数
import { settingGrayscale, clearGrayscale } from "@/utils/operation-css-link";
function judgmentGrayRange() {function getExpirationTime(nowTime) {// 获取新的时间区间const NEW_GRAY_TIME_INTERVAL_BEGIN = new Date().getTime(); // 获取后台设置的灰度到期时间,这里的new Date().getTime()是为了防止无限循环调用const NEW_GRAY_TIME_INTERVAL_END = new Date().getTime(); // 获取后台设置的灰度到期时间,这里的new Date().getTime()是为了防止无限循环调用localStorage.setItem("GRAY_TIME_INTERVAL_BEGIN",NEW_GRAY_TIME_INTERVAL_BEGIN.toString(),);localStorage.setItem("GRAY_TIME_INTERVAL_END",NEW_GRAY_TIME_INTERVAL_END.toString(),);if (nowTime > +NEW_GRAY_TIME_INTERVAL_BEGIN &&nowTime < +NEW_GRAY_TIME_INTERVAL_END) {settingGrayscale();}}const GRAY_TIME_INTERVAL_BEGIN = localStorage.getItem("GRAY_TIME_INTERVAL_BEGIN",);const GRAY_TIME_INTERVAL_END = localStorage.getItem("GRAY_TIME_INTERVAL_END");const NOW_TIME = new Date().getTime();// 第一次进入没有设置过缓存if (!GRAY_TIME_INTERVAL_BEGIN || !GRAY_TIME_INTERVAL_END) {getExpirationTime(NOW_TIME);}// 判断时间在灰度时间区间else if (NOW_TIME > +GRAY_TIME_INTERVAL_BEGIN &&NOW_TIME < +GRAY_TIME_INTERVAL_END) {settingGrayscale();}// 时间不在区间else {clearGrayscale();getExpirationTime(NOW_TIME);}
}

http://www.ppmy.cn/news/485006.html

相关文章

ts 内置工具类型(Partial、Pick、Record、Readonly、Exclude、Extract、Omit等)

参考链接&#xff1a;https://blog.csdn.net/qq_43869822/article/details/121664818typescript 源码可在包目录&#xff08;如 node_modules&#xff09;中 lib.es5.d.ts 文件中查看 概要 可选 Partial 、必选 Required、只读 Readonly 过滤、剔除&#xff1a;Exclude、Extra…

win10麦克风打开与关闭

1.点击开始 2.点击设置&#xff0c;设置里面有一个隐私选项

腾讯课堂电脑版麦克风怎么打开

在使用的时候点击右下角【麦克风】图标即可开启&#xff0c;再次点击则关闭。如果麦克风有叉号&#xff0c;无法点击使用&#xff0c;可能是没有权限。在电脑【设置】-【隐私】-【麦克风】中开启权限即可。具体介绍如下&#xff1a; 1、登录腾讯课堂&#xff0c;在使用的时候…

c语言调用话筒的程序,如何在ubuntu中用c语言打开麦克风

满意答案 jqyong007 2016.08.26 采纳率&#xff1a;53% 等级&#xff1a;9 已帮助&#xff1a;418人 1234567891011121314151617181920212223242526272829303132333435361.最简单的方法&#xff1a;public static String reverse1(String str){ return new StringBuffer(s…

手机充当电脑麦克风

1.电脑端安装 wo麦克风的PC端和驱动 wo麦克风PC端和驱动 2.APP端安装 https://wolicheng.com/womic/softwares/app-release.apk

Python调用电脑麦克风录音

import wave import pyaudio 定义数据流块 CHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 2 RATE 44100录音时间 RECORD_SECONDS 5要写入的文件名 WAVE_OUTPUT_FILENAME “output.wav”创建PyAudio对象 p pyaudio.PyAudio()打开数据流 stream p.open(formatFORMAT, chan…

STM32 RGB屏幕

使用ST的HAL库进行开发&#xff0c;RGB屏幕是480*272的4.3寸LCD&#xff0c;由于驱动RGB屏幕需要较多的内存&#xff0c; 所以使用了外部SDRAM&#xff0c;内存是32M字节&#xff0c;关于SDRAM的驱动本文不进行讨论。 RGB屏幕常用的像素格式有&#xff1a;ARGB8888、RGB888、…

数字图像处理 基于matlab、opencv计算图像的梯度方向和梯度幅值

一、图像的梯度 1、简述 图像可以被视为标量场(即二维函数)。 通过微分将标量场转换为矢量场。 梯度是一个向量,描述了在x或y方向上移动时,图像变化的速度。我们使用导数来回答这样的问题,图像梯度的大小告诉图像变化的速度,而梯度的方向告诉图像变化最…