Appearance
useAntdCssVars
用于生成 Ant Design Vue 的 CSS 变量,支持在 CSS 中使用 Ant Design Vue 的主题变量。
提示
1、这里采用手动挂载 style 元素
2、ssr不支持
功能特点
- 自动生成 Ant Design Vue 的主题变量
- 支持在 CSS 中使用
--ant-*
变量 - 不依赖 Vue 生命周期
- 自动清理机制
使用方式
vue
<template>
<a-config-provider :theme="themeConfig"> // 你的顶层页面 </a-config-provider>
</template>
<script setup lang="ts">
import { useAntdCssVars } from "speed-components-ui/hooks";
import { ref } from "vue";
// 通antd主题配置相同
const themeConfig = ref({
token: {
colorPrimary: "red",
},
});
// 如果你的页面使用了useAntdCssVars
// 可以在应用初始化时传入
const { cleanup, updateTheme } = useAntdCssVars(themeConfig.value);
// 动态修改token示例
setTimeout(() => {
themeConfig.value.token.colorPrimary = "blue";
// 这里要用update方法(内部没有监听themeConfig变化)
updateTheme(themeConfig.value);
}, 1000);
</script>
示例
你可以点击下发按钮切换当前文档组件样式
我是使用--ant-color-primary的文字
复制代码
查看代码
生成的 CSS 变量
css
:root {
--ant-primary-color: #1890ff;
--ant-primary-color-hover: #40a9ff;
--ant-primary-color-active: #096dd9;
--ant-primary-color-outline: rgba(24, 144, 255, 0.2);
/* ... 其他变量 */
}
在 CSS 中使用
css
.my-component {
color: var(--ant-primary-color);
background-color: var(--ant-primary-color-hover);
}
注意事项
- 该 hook 使用 Ant Design Vue 的默认主题
- 变量名会自动转换为 kebab-case 格式
- 页面的css使用场景不支持主题层级隔离(如:多层config-provider 实现同一页面不同 主题色)