组件库都在使用CSS变量了

Posted 前端精髓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了组件库都在使用CSS变量了相关的知识,希望对你有一定的参考价值。

CSS 变量是一个非常有用的功能,几乎所有浏览器都支持。 (IE:啊这?)

如何解决 IE 关于 css var 的适配问题呢?

通过 webpack 的 postcss-loader + postcss-css-css-variable 编译生成固定的代码。

:root 
  --white: #fff;
  --black: #000;

a 
  border: 1px solid var(--white);

span 
  color: var(--black);

通过 webpack 的 postcss-loader + postcss-css-css-variable 编译,上述代码转变成。

a 
  border:1px solid #fff;
  border: 1px solid var(--white);

span 
  color: #000;
  color: var(--black);

这样一来在 IE 上面,样式就直接会使用上面设定好的,而不管下面的 var 变量了。

通常,element-plus 自定义主题,如果您的项目也使用了 SCSS,可以直接修改 Element Plus 的样式变量。 创建一个 element/index.scss 文件来合并你的变量和 element-plus 的变量。

import  createApp  from 'vue'
import './styles/element/index.scss'
import ElementPlus from 'element-plus'
import App from './App.vue'

const app = createApp(App)
app.use(ElementPlus)

还可以通过 CSS 变量设置,现在 element-plus 中用 css 变量来重构了几乎所有组件的样式系统。

这意味着你可以动态地改变组件内的个别变量,以便更好地自定义组件样式,而不需要修改 SCSS 文件重新编译一次。

如果你只想自定义一个特定的组件,只需为某些组件单独添加内联样式。

<el-tag style="--el-tag-bg-color: red">Tag</el-tag>

如果您想要通过 js 控制 css 变量,可以这样做:

// document.documentElement 是全局变量时
const el = document.documentElement
// const el = document.getElementById('xxx')

// 获取 css 变量
getComputedStyle(el).getPropertyValue(`--el-color-primary`)

// 设置 css 变量
el.style.setProperty('--el-color-primary', 'red')

如果你想要更优雅的方式,你可以引入 VueUse 使用 useCssVar 方法。

import  useCssVar  from '@vueuse/core'

const el = ref(null)
const color = useCssVar('--color', el)

VueUse:一个日益增长的 Vue 组合式函数集合。源代码本身就是一份不错的学习资料。

以上是关于组件库都在使用CSS变量了的主要内容,如果未能解决你的问题,请参考以下文章

组件库都在使用CSS变量了

最好的JavaScript数据可视化库都在这里了

如果两个库都在同一个 DLL 文件中使用,我们可以在 2 个不同的库文件中使用相同的函数吗?

web常使用的库都有哪些?

干货合集│最好用的 python 库都在这

tailwindcss使用总结