vue(或vue3)实现父组件给子组件传递样式变量及在css3内使用变量

在使用vue开发时,经常会封装很多的组件方便复用,那么难免就有写样式相关组件,比如需要使用时传入颜色、高度等样式参数。那么问题来了:我们要如何在子组件使用来自父组件的样式变量参数呢?

父组件页面:

<children colors="red"/>
<script>
import { defineComponent } from 'vue';
import children from './children/index.vue'
export default defineComponent({
  name: 'ElementuiTest1',
  components: {
    children
  },

子组件页面:

<template>
  <div>
     <div class="style1" :style="styleVar">我是子div</div>
  </div>
</template>
<script>
import { defineComponent } from 'vue';
export default defineComponent({
  name: 'children',
  props: {
    colors: {
      type: String,
      default: '',
    },
  },
  computed: {
    styleVar() {
      return {
        // '--box-height': this.height + 'px'
        '--color1': this.colors
      }
    }
  },
});
</script>

<style>
  :root {
    /* 声明了一个变量--fontSize_test1 */
    --fontSize_test1: 25px;  
  }
  .style1 {
    width:500px;
    height:200px;
    border: 1px solid #000;
  }
  .style1 {
    /* 该color1来自父组件的prop */
    color: var(--color1); 
    font-size: var(--fontSize_test1)
  }
</style>

效果图:

在这里插入图片描述


CSS var() 函数

定义与用法
var() 函数用于插入自定义的属性值,如果一个属性值在多处被使用,该方法就很有用。
支持版本:CSS3

CSS 语法
var(custom-property-name, value)

描述
custom-property-name必需。自定义属性的名称,必需以 – 开头。
value可选。备用值,在属性不存在的时候使用。

:root

:root是一个伪类,表示文档根元素,非IE及ie8及以上浏览器都支持,在:root中声明相当于全局属性,只要当前页面引用了:root segment所在文件,都可以使用var()来引用

Vue3中,子组件使用组件样式可以通过props和CSS变量实现。首先,在组件中定义样式,并将其传递给子组件作为props。然后,在子组件使用这些props来设置样式。例如,您可以通过props将组件中的CSS类传递给子组件,然后在子组件的模板中使用这些CSS类来应用样式。这样,子组件就可以使用组件样式了。 另外,你还可以使用CSS变量实现组件之间的样式共享。在组件中定义CSS变量,并将其应用到子组件中。然后,在子组件使用这些CSS变量来设置样式值。这样,子组件就可以继承组件样式。 需要注意的是,Styled Components是专为React设计的,所以要在Vue使用Styled Components,您需要先安装Styled Components的Vue版本,并按照其文档中的指导进行配置和使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue组件使用组件样式_如何使用样式组件重新设计未启动](https://blog.csdn.net/culi3182/article/details/108373800)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [vue里面组件修改子组件样式的方法](https://download.csdn.net/download/weixin_38592548/12763958)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值