惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The GitHub Blog
The GitHub Blog
A
About on SuperTechFans
The Cloudflare Blog
G
Google Developers Blog
博客园_首页
Martin Fowler
Martin Fowler
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
D
Docker
C
Check Point Blog
T
Tailwind CSS Blog
博客园 - 司徒正美
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
Microsoft Security Blog
Microsoft Security Blog
V
V2EX
博客园 - 叶小钗
T
The Blog of Author Tim Ferriss
酷 壳 – CoolShell
酷 壳 – CoolShell
IT之家
IT之家
M
MIT News - Artificial intelligence
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 【当耐特】
GbyAI
GbyAI

博客园 - 小虫1

不用高配显卡实现 AI 提高视频分辨率|麻雀 AI 视频修复器实测对比 Topaz Video AI AI 提高视频分辨率新选择|麻雀 AI 视频修复器 vs Topaz,无高端显卡也能做视频超分 麻雀 AI 工具箱视频去水印技术解析:AI 视频去水印核心能力如何在网页端落地 麻雀 AI 工具箱视频去水印实战体验:开发者视角下的 AI 视频去水印避坑指南 麻雀 AI 工具箱视频去水印横评:三款 AI 视频去水印方案深度对比 麻雀 AI 工具箱视频去水印技术拆解:多框选与关键帧跟踪,网页端也能搞定动态水印 三款本地视频去水印工具技术向对比:VSR、HitPaw 与妙妙水印助手实测 敏感开发素材处理:三类视频工具的隐私安全技术对比 开发素材处理效率指南:三种视频画质提升方案实测与选型 浏览器端 AI 视频修复技术浅析:三类本地处理方案的实现原理与实测 AI 视频修复技术落地对比:四款去水印工具的技术路线解析 浏览器端本地视频处理实测:4 种去水印方案的技术原理与效果对比 前端开发者视角:一个视频去水印工具的技术猜想 记一次本地视频去水印踩坑经历——从本地部署到在线工具 前端实现视频去水印的几种技术方案对比 豆包视频去水印工具横向测评:麻雀 AI 工具箱与 3 款海外工具实测对比 视频去水印工具实战横评:少谈“黑科技”,多聊实际能用的 2026 在线视频去水印工具实测:4 种方案对比,本地处理首选麻雀AI工具箱 豆包生成的图片,怎么去水印? 2026年,GEO到底怎么做?-麻雀GEO Topaz Video AI的替代品 -麻雀AI视频修复工具,免费、安全、高效的Topaz替代选择 视频清晰度增强网站-麻雀AI视频修复工具 vue2 函数式调用一个弹框组件 前端请求跨域,解决方案 ssh2-sftp-client 上传文件至服务器 vue项目下自己封装上传文件功能 beego 注册路由失效404,commentsRouter.go没有生成 前端代码实现整体缩放网页,做到缩放分辨率的效果 前端 docker jenkins mkdocs生成的网站为何很慢
跟框架无关的前端换皮肤
小虫1 · 2022-04-26 · via 博客园 - 小虫1

如果使用的UI框架,每个UI框架都有自己的换肤策略。如果没有用框架的情况下,怎么换肤呢?

主要利用css变量,然后再兼容低版本浏览器即可。

 代码:

//theme/variable.js
// variable.js
//浅色
export const theme1 = {
	'--btn-bg': 'linear-gradient(90deg, #1000DA 0%, #2688FF 100%)',
	'--btn-forbidden-bg': '#B6B6B6',
	'--btn-radius': '2px',
	'--text-1': ' #1A78FF',
	// 对勾的颜色
	'--text-right': '#1A78FF',
	'--header-bg': '#fff',
	'--header-text': '#272727',
	'--header-active-text': '#0a82ea',
	'--notice-bg': "#f8fcff",
	'--notice-text': '#ff6767',
	'--card-left-text': '#666666',
	'--card-left-bold-text': '#272727',
	'--banner-text': '#fff',
	'--selected-icon-url': 'url(http://gpu.ai-galaxy.cn/static/site_imgs/selected-icon.svg)'
};
// 深色
export const theme2 = {
	'--btn-bg': 'linear-gradient(90deg, #2EB7E5 0%, #4BADFF 100%);',
	'--btn-forbidden-bg': '#B6B6B6',
	'--btn-radius': '2px',
	'--text-1': '#45B6FF',
	// 对勾的颜色
	'--text-right': '#2EB7E5',
	'--header-bg': '#00070D',
	'--header-text': '#FFFFFF',
	'--header-active-text': '#FFFFFF',
	'--notice-bg': "linear-gradient(90deg, #2EB7E5 0%, #4BADFF 100%)",
	'--notice-text': '#fff',
	'--card-left-text': '#fff',
	'--card-left-bold-text': '#fff',
	'--banner-text': '#272727',
	'--selected-icon-url': 'url(http://gpu.ai-galaxy.cn/static/site_imgs/selected-icon-2.svg)'
};
//theme/index.js
import { theme1, theme2 } from "./variable";
import cssVars from "css-vars-ponyfill";
const themeData = {
	theme1,
	theme2
}
export const initTheme = (theme) => {
	document.documentElement.setAttribute("data-theme", theme);
	cssVars({
		// 当添加,删除或修改其<link>或<style>元素的禁用或href属性时,ponyfill将自行调用
		watch: true,
		// variables 自定义属性名/值对的集合
		variables: themeData[theme],
		// 默认将css变量编译为浏览器识别的css样式  true 当浏览器不支持css变量的时候将css变量编译为识别的css
		onlyLegacy: false,
	});
};

  使用:

//main.js 或者 router的beforeEach
import { initTheme } from '@/theme'
initTheme('theme1');

  代码中的css值就应该这么写:

.btn{
      background: var(--btn-bg);
      border-radius: var(--btn-radius);
}