前端Vue日常工作中--动态css类

前端Vue日常工作中--动态css类

普通应用

Vue.js 允许你在动态地设置 CSS 类、样式等方面非常灵活。

假设你有一个 Vue 组件,其中有一个数据属性 isStyled,你想根据这个属性动态地改变元素的样式。

1.1动态 CSS 类

xml 复制代码
<template>
  <div :class="{ 'styled': isStyled }">
    <p>这是一个动态样式的例子</p>
  </div>
  <button @click="toggleStyle">切换样式</button>
</template>

<script>
export default {
  data() {
    return {
      isStyled: false,
    };
  },
  methods: {
    toggleStyle() {
      this.isStyled = !this.isStyled;
    },
  },
};
</script>

<style>
.styled {
  color: red;
  font-weight: bold;
}
</style>

isStyledtrue 时,.styled 类将被应用,从而改变文字的颜色和粗细。点击按钮会调用 toggleStyle 方法,切换 isStyled 的值,从而动态改变样式。

1.2动态内联样式

xml 复制代码
<template>
  <div :style="{ color: isStyled ? 'red' : 'black', fontWeight: isStyled ? 'bold' : 'normal' }">
    <p>这是另一个动态样式的例子</p>
  </div>
  <button @click="toggleStyle">切换样式</button>
</template>

<script>
export default {
  data() {
    return {
      isStyled: false,
    };
  },
  methods: {
    toggleStyle() {
      this.isStyled = !this.isStyled;
    },
  },
};
</script>

使用了三元运算符 isStyled ? 'red' : 'black'isStyled ? 'bold' : 'normal',根据 isStyled 的值动态地设置文字的颜色和粗细。点击按钮会调用 toggleStyle 方法,切换 isStyled 的值,从而动态改变样式。

组件中应用(父子组件)

在Vue.js中,你可以通过动态地绑定CSS类名或内联样式来实现动态CSS。这可以在父子组件之间进行通信,使得子组件可以根据父组件的状态或属性来更新自身的样式。

2.1动态绑定CSS类名

在父组件中:

html 复制代码
<template>
  <div :class="{ 'father-style': isStyled }">
    <child-component :isStyled="isStyled"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent,
  },
  data() {
    return {
      isStyled: true, // 或者根据其他条件来动态改变
    };
  },
};
</script>
<style>
.father-style {
  color: red;
  font-weight: bold;
}
</style>

在子组件中:

html 复制代码
<template>
  <div :class="{ 'child-style': isStyled }">
    <!-- 子组件的内容 -->
  </div>
</template>

<script>
export default {
  props: {
    isStyled: Boolean,
  },
};
</script>

<style scoped>
.child-style {
  color: red;
  font-weight: bold;
}
</style>

父组件使用:class绑定动态的CSS类名,根据 isStyled 的值决定是否添加 father-style 类名。子组件同样使用:class绑定动态的CSS类名,根据 isStyled 的值决定是否添加 child-style 类名。

2.2动态绑定内联样式

在父组件中:

html 复制代码
<template>
  <div :style="{ backgroundColor: highlightColor }">
    <child-component :highlightColor="highlightColor"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent,
  },
  data() {
    return {
      highlightColor: 'yellow', // 或者根据其他条件来动态改变
    };
  },
};
</script>

在子组件中:

html 复制代码
<template>
  <div :style="{ backgroundColor: highlightColor }">
    <!-- 子组件的内容 -->
  </div>
</template>

<script>
export default {
  props: {
    highlightColor: String,
  },
};
</script>

父组件使用:style绑定动态的内联样式,根据 highlightColor 的值来设置背景颜色。子组件同样使用:style绑定动态的内联样式,根据 highlightColor 的值来设置背景颜色。

相关推荐
漂流瓶jz2 小时前
Webpack如何实现万物皆可import?loader的使用/配置/手写实践
前端·javascript·webpack
ZC跨境爬虫2 小时前
跟着 MDN 学CSS day_41:显式轨道、隐式网格与区域命名放置
前端·javascript·css·ui·交互
修己xj3 小时前
告别手动存图!这款叫 Fatkun 的浏览器插件,简直是素材收集神器
前端
袋鼠云数栈3 小时前
从前端到基础设施,ACOS 如何打通企业全链路可观测
运维·前端·人工智能·数据治理·数据智能
AskHarries4 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
Moment4 小时前
长上下文会最终杀死 Rag 吗?
前端·javascript·后端
qcx234 小时前
【系统学AI】25 论文导读 ①:两篇改变 AI 的开山之作——Attention Is All You Need & ReAct
前端·人工智能·react.js·transformer
kyriewen5 小时前
大文件上传最全指南:分片、断点续传、秒传,一篇就够了
前端·javascript·面试
郑洁文6 小时前
基于Python的Web命令执行漏洞自动化检测系统
前端·python·网络安全·自动化
新酱爱学习6 小时前
手搓 10 个 Skill 后,我把重复劳动收敛成了一套零依赖 CLI 工具
前端·javascript·人工智能