CSS 使用js中的变量 var()

本文探讨如何在CSS中使用JavaScript的var()函数,介绍在原生HTML、JSX、TSX以及Vue2和Vue3框架下,如何实现CSS与JS变量的交互,以实现更高效和便捷的前端样式动态控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSS 使用js中的变量 var()

  • 我的社交平台 有问题可以在这里留言呀
  • github
  • 博客

导读

  • 这篇文章所指的css变量, 并不是指 less 等预编译语言的变量(@)
  • 而是直接在 .css 页面中使用 .js|.html 中所定义的变量 (var()-mdn)
  • 一般情况下 前端样式只要通过 js动态切换不同类名 行内样式
  • 就可以在React Vue 中完成绝大多数的需求了
  • 但是有些使用场景就需要原生 cssvar() 变量。 或者说使用他可以达到更加方便的效果
// 假设使用了一个组件库的一个小圆点, 而他内部是通过伪元素做的
// 此时的需求是 小圆点的颜色由用户决定,不是一个固定的值,你该如何控制呢?
// 我们通常的做法是 
//    1.定义不同的类名切换:  x => 颜色不是一个固定的值
//    2.行内样式直接传递:   x => 行内样式不能修改伪元素
//    3.自己重写:         x => 麻烦,这里只是一个用例,某些场景会极其繁琐
//    4.css in js       x => 公司项目一般不用这个 
//    5.dom操作          x => 不推荐
这时候var()就应运而生了

原生html

# index.html 
<style>
  #dv {
    color: var(--color);
  }
</style>
<body>
  <div id="dv"></div>
  <script>
    let clickColor = 'cornflowerblue'
    const dv = document.getElementById('dv')
    dv.innerHTML = `<div id='dv' style="--color:${myColor}">css</div>`
  </script>
</body>

jsx

import styles from './app.module.css'
const App = () => {
  let clickColor = 'red'
  const style = { "--color": clickColor};
  return (
    <div className={styles.header} style={style}>
      hello
    </div>
  );
};
export default App;
#
.header {
  color: var(--color)
}

tsx

import styles from './app.module.css'
import React from 'react'
const App = () => {
  let clickColor = 'red'
  const style = { "--color": clickColor} as React.CSSProperties;
  return (
    <div className={styles.header} style={style}>
      hello
    </div>
  );
};
export default App;
#
.header {
  color: var(--color)
}

vue2

<template>
	<div class="test">
		<span :style="spanStyle" class="span1">hello world</span>
		<span style="--color:red" class="span1">hello world</span>
	</div>
</template>
<script>
export default {
	data() {
		return {
			spanStyle: { "--color": "green" },
		};
	}
}
</script>
<style scoped>
.span1 {
	color: var(--color);
}
</style>

vue3

# vue3提供了API 直接v-bind就可以使用了
<style scoped>
.span1 {
	color: v-bind(变量);
}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值