vue3之基础语法 动态class :class :style

vue3之基础语法

基础的样式写法

:style

:style="{'color': colorStatus['success']}"

动态样式之 对象写法

  • 方法1

    • 用ts定义当前对象的type数据类型 type style
    • 定义当前的样式的数据 const style
    • 定义当前显示的 数据 msg
    <template>
      <div>
        <div :style="style">{{ msg }}</div>
      </div>
    </template>
    
    <script setup lang="ts">
    type style = {
      color: String
      height: String
    }
    const style = {
      color: 'red',
      height: '100px',
    }
    const msg: String = '小渣亮'
    </script>
    
    • 效果
      在这里插入图片描述
  • 方法2:
    - 动态样式之对象
    - type cls 限制对象的类型
    - const cls 写入对应的要展示的

    <template>
      <div>
        <div :class="cls">我是菜鸡2</div>
      </div>
    </template>
    
    <script setup lang="ts">
    type cls = {
      aaa: Boolean
      bbb: Boolean
    }
    const cls = {
      aaa: true,
      bbb: true,
    }
    </script>
    <style scoped>
    .aaa {
      color: blue;
    }
    .bbb {
      color: orange;
      font-weight: 700;
    }
    </style>
    
    • 效果:

    在这里插入图片描述

动态样式之 数组写法

  • 动态样式数组写法
  • 使用一个flag去判断显示那个class类名
<template>
  <div>
    <div :class="[flag ? 'aaa' : 'bbb']">我是菜鸡</div>
  </div>
</template>

<script setup lang="ts">
const flag: Boolean = true
</script>
<style scoped>
.aaa {
  color: blue;
}
.bbb {
  color: orange;
}
</style>
  • 效果

在这里插入图片描述

v-for循环

  • 使用ts的 type对数组的不同类型的限制
  • 对应复杂数据类型时候 使用 type arr:Array = [ ]
  • 对于简单数据类型时 使用 type arr2:Array = [] 等
<template>
  <div>
    <div class="test">
      <span v-for="item in arr" :key="item">{{ item.age }}</span> <br />
      <span v-for="item in arr2" :key="item">{{ item }}</span>
    </div>
  </div>
</template>

<script setup lang="ts">
const arr: Array<any> = [{ age: 20 }, { age: 30 }]
const arr2: Array<Number> = [1, 2, 3]

type ArrT = {
  age: number;
  name: string;
  sex?: string;
  flag: boolean;
};
const arr: Array<ArrT> = reactive([
  {
    age: 20,
    name: "222",
    // sex: "男",
    flag: false,
  },
]);
console.log("arr", arr);
</script>
<style scoped>
.test > span {
  margin-right: 10px;
}
</style>
  • 效果:
    在这里插入图片描述

v-model

  • v-model这是数据的双向绑定,因此需要设置的是响应式数据
    • 简单的数据类型为 ref包裹即可
    • 复杂的数据类型为 reactive包裹即可
  • 简单的数据类型
    <template>
      <div>
        <div>
          <input v-model="test" type="text" />
          {{ test }}
        </div>
      </div>
    </template>
    
    <script setup lang="ts">
    import { ref } from 'vue'
    const test = ref('test')
    </script>
    <style scoped>
    .test > span {
      margin-right: 10px;
    }
    </style>
    
    
    • 效果
      在这里插入图片描述
  • 复杂的数据类型
<template>
  <div>
    <div>
      <input v-model="obj.age" type="text" />
      {{ obj.age }}
    </div>
  </div>
</template>

<script setup lang="ts">
import { reactive } from 'vue'
const obj = reactive({
  age: 20,
})
</script>
  • 效果
    在这里插入图片描述
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中的:class指令用于动态地绑定CSS类。在Vue3中,有三种方式来使用:class指令。 第一种是直接绑定一个字符串,这个字符串可以是一个类名,也可以是多个类名组成的字符串,用空格隔开。例如,可以这样写:<div class="text" :class="'active text-bg'">第一种class绑定字符串形式</div>,这样就会给这个元素添加active和text-bg这两个类。 第二种是使用对象的形式来绑定class。可以通过在对象中设置键值对的方式来决定是否添加某个类名。例如:<div class="text" :class="{active: isActive, 'text-bg': !isActive}">第二种class绑定对象形式</div>,这样根据isActive的值来决定是否添加active类,如果isActive为真,则添加active类,否则添加text-bg类。 第三种是使用数组的形式来绑定class。可以将多个类名放在一个数组中。例如:<p :class="[message, activeClass]">hello</p>,这样就会将message和activeClass这两个变量的值作为类名添加到元素上。 需要注意的是,数组语法在开发中并不常用,因为它不太方便控制class。而使用对象的形式能更灵活地根据条件来动态绑定类名。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [VUE3 class 用法](https://blog.csdn.net/weixin_46730573/article/details/125832119)[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* *3* [Vue3基础+代码语法+例子大全(三)——ClassStyle绑定](https://blog.csdn.net/m0_46610349/article/details/126641434)[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、付费专栏及课程。

余额充值