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

推荐订阅源

K
Kaspersky official blog
Engineering at Meta
Engineering at Meta
D
DataBreaches.Net
Stack Overflow Blog
Stack Overflow Blog
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
B
Blog RSS Feed
GbyAI
GbyAI
P
Proofpoint News Feed
aimingoo的专栏
aimingoo的专栏
MyScale Blog
MyScale Blog
D
Docker
阮一峰的网络日志
阮一峰的网络日志
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Recorded Future
Recorded Future
美团技术团队
The Register - Security
The Register - Security
V
Visual Studio Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
T
Tailwind CSS Blog
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
The Blog of Author Tim Ferriss
博客园 - 司徒正美
量子位
B
Blog
F
Fortinet All Blogs
Martin Fowler
Martin Fowler
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
A
About on SuperTechFans
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
有赞技术团队
有赞技术团队
雷峰网
雷峰网
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
L
LangChain Blog
Latest news
Latest news
S
SegmentFault 最新的问题
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
W
WeLiveSecurity
T
Tenable Blog
T
Tor Project blog

博客园 - 小虫1

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生成的网站为何很慢 重新搞nginx vue公共布局组件Layout引入 重新认识布局:你真的懂flex吗 重新认识布局:html和body元素 重新认识布局:3d空间中的css盒子 重新认识布局:百分比单位 重新认识布局:标准流,浮动,定位的关系 微信小程序 等宽不等高瀑布流
跟框架无关的前端换皮肤
小虫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);
}