Template
1
0
mirror of https://github.com/un-pany/v3-admin-vite.git synced 2025-04-21 11:29:20 +08:00

refactor: 重写 getCssVar、setCssVar 工具函数

This commit is contained in:
pany 2024-11-12 13:06:33 +08:00
parent 82bd4ee14a
commit 6af1ba94ff
4 changed files with 26 additions and 31 deletions

View File

@ -8,11 +8,11 @@ import SidebarItem from "./SidebarItem.vue"
import Logo from "../Logo/index.vue"
import { useDevice } from "@/hooks/useDevice"
import { useLayoutMode } from "@/hooks/useLayoutMode"
import { getCssVariableValue } from "@/utils"
import { getCssVar } from "@/utils/css"
const v3SidebarMenuBgColor = getCssVariableValue("--v3-sidebar-menu-bg-color")
const v3SidebarMenuTextColor = getCssVariableValue("--v3-sidebar-menu-text-color")
const v3SidebarMenuActiveTextColor = getCssVariableValue("--v3-sidebar-menu-active-text-color")
const v3SidebarMenuBgColor = getCssVar("--v3-sidebar-menu-bg-color")
const v3SidebarMenuTextColor = getCssVar("--v3-sidebar-menu-text-color")
const v3SidebarMenuActiveTextColor = getCssVar("--v3-sidebar-menu-active-text-color")
const { isMobile } = useDevice()
const { isLeft, isTop } = useLayoutMode()

View File

@ -10,7 +10,7 @@ import LeftMode from "./LeftMode.vue"
import TopMode from "./TopMode.vue"
import LeftTopMode from "./LeftTopMode.vue"
import { Settings, RightPanel } from "./components"
import { getCssVariableValue, setCssVariableValue } from "@/utils"
import { getCssVar, setCssVar } from "@/utils/css"
/** Layout 布局响应式 */
useResize()
@ -29,12 +29,10 @@ const classes = computed(() => {
})
//#region Logo Header
const cssVariableName = "--v3-tagsview-height"
const v3TagsviewHeight = getCssVariableValue(cssVariableName)
const cssVarName = "--v3-tagsview-height"
const v3TagsviewHeight = getCssVar(cssVarName)
watchEffect(() => {
showTagsView.value
? setCssVariableValue(cssVariableName, v3TagsviewHeight)
: setCssVariableValue(cssVariableName, "0px")
showTagsView.value ? setCssVar(cssVarName, v3TagsviewHeight) : setCssVar(cssVarName, "0px")
})
//#endregion

18
src/utils/css.ts Normal file
View File

@ -0,0 +1,18 @@
/** 获取指定元素(默认全局)上的 CSS 变量的值 */
export const getCssVar = (varName: string, element: HTMLElement = document.documentElement) => {
if (!varName?.startsWith("--")) {
console.warn("CSS 变量名应以 '--' 开头")
return ""
}
// 没有拿到值时,会返回空串
return getComputedStyle(element).getPropertyValue(varName)
}
/** 设置指定元素(默认全局)上的 CSS 变量的值 */
export const setCssVar = (varName: string, value: string, element: HTMLElement = document.documentElement) => {
if (!varName?.startsWith("--")) {
console.warn("CSS 变量名应以 '--' 开头")
return
}
element.style.setProperty(varName, value)
}

View File

@ -1,26 +1,5 @@
import { removeConfigLayout } from "@/utils/cache/local-storage"
/** 用 JS 获取全局 css 变量 */
export const getCssVariableValue = (cssVariableName: string) => {
let cssVariableValue = ""
try {
// 没有拿到值时,会返回空串
cssVariableValue = getComputedStyle(document.documentElement).getPropertyValue(cssVariableName)
} catch (error) {
console.error(error)
}
return cssVariableValue
}
/** 用 JS 设置全局 CSS 变量 */
export const setCssVariableValue = (cssVariableName: string, cssVariableValue: string) => {
try {
document.documentElement.style.setProperty(cssVariableName, cssVariableValue)
} catch (error) {
console.error(error)
}
}
/** 重置项目配置 */
export const resetConfigLayout = () => {
removeConfigLayout()