添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
1.1 字符串语法

通过 v-bind 绑定元素的 class 属性,为其指定一个字符串:

<div v-bind:class="className">class动态绑定</div>
<script>
export default {
  data() {
    return {
      className: 'app'
</script>

此时我们可以通过改变className变量来切换样式。注意,当className'' 时,这个class属性仍然会被添加到真实DOM上,只不过没有值。

1.2 对象语法

通过v-bind绑定元素的class属性,为其指定一个对象:

<div v-bind:class="{active: isActive}">class动态绑定</div>
<script>
export default {
  data() {
    return {
      isActive: true
</script>

在上面的例子中,这个元素身上的class属性是否包含active,取决于数据isActive的值。当isActivetrue时,渲染结果如下:

<div class="active">class动态绑定</div>

而当我们动态修改isActive的值时,该元素的class属性也会动态更新,将值改为false

<div class>class动态绑定</div>

进一步地,对象中可以传入多个className

<div v-bind:class="{active: isActive, danger: isDanger}">class动态绑定</div>
<script>
export default {
  data() {
    return {
      isActive: true,
      isDanger: true
</script>

此时的渲染结果为:

<div class="active danger">class动态绑定</div>

当然,v-bind绑定的class属性也可以与普通的class并存:

<div class="common" v-bind:class="{active: isActive, danger: isDanger}">class动态绑定</div>
<script>
export default {
  data() {
    return {
      isActive: true,
      isDanger: true
</script>

此时渲染结果为:

<div class="common active danger">class动态绑定</div>

另外,当需要动态绑定的className太多时,不需要内联定义在模板中,此时可以选择在data中定义一个对象,或使用计算属性

<div class="common" v-bind:class="classObj1">class动态绑定 --- data中定义对象</div>
<div class="common" v-bind:class="classObj2">class动态绑定 --- 计算属性</div>
<script>
export default {
  data() {
    return {
      isActive: true,
      isDanger: true,
      classObj1: {
        active: true,
        danger: true
  computed: {
    classObj2() {
      return {
        active: this.isActive,
        danger: this.isDanger
</script>
1.3 数组语法

通过v-bind绑定元素的class属性,为其指定一个数组:

<div v-bind:class="[className, 'common']"></div>
<script>
export default {
  data() {
    return {
      className: 'app'
</script>

此时的渲染结果:

<div class="common app"></div>

使用数组,里边的值可以是响应式的也可以是普通类名,同时也可以使用三元表达式,甚至可以结合上面的对象语法使用:

<div v-bind:class="[className, 'common', isActive ? 'active': '', { danger: isDanger }]"></div>
<script>
export default {
  data() {
    return {
      className: 'app',
      isAcive: true,
      isDanger: true,
</script>

2.动态绑定样式 Style

2.1 字符串语法

通过v-bind绑定元素的style属性,为其指定一个字符串:

<div v-bind:style="style">style动态添加</div>
<script>
export default {
  data() {
    return {
      style: 'color: red'
</script>
2.3 对象语法

通过v-bind绑定元素的style属性,为其指定一个对象,对象语法十分直观 —— 看着非常像 CSS,但其实是一个js对象。CSS 名可以用驼峰式短横线分隔 (记得用引号括起来) 来命名。:

<div v-bind:style="{ color: color, fontSize: fontSize + 'px', (padding-left): paddingLeft }"></div>
<script>
export default {
  data() {
    return {
      style: 'red',
      fontSize: 30,
      paddingLeft: '10px'
</script>

既然可以使用对象语法,那么同样的,style也可以data中定义一个对象或者使用计算属性

2.3 数组语法

通过v-bind绑定元素的style属性,为其指定一个数组,数组中可以为多个样式对象:

<div v-bind:style="[styleObj, overridingStyles]"></div>
<script>
export default {
  data() {
    return {
      color: 'red',
      fontSize: '30px',
      overridingStyles: {
        color: 'blue',
        fontSize: '40px'
  computed: {
    styleObj() {
      return {
        color: this.color,
        fontSize: this.fontSize
</script>
				
Vue 中,可以通过绑定动态样式对象的方式来动态设置元素样式。例如,假设我们需要根据组件的数据属性 `color` 来设置一个 `div` 元素的背景颜色,可以按照以下步骤进行操作: 1. 在组件的 `<template>` 标签中,使用 `v-bind` 指令来绑定一个动态样式对象,例如: ```html <template> <div :style="{ backgroundColor: bgColor }">This is a colored div</div> </template> 上面的代码中,`bgColor` 是组件的一个数据属性,它的值将被动态设置为 `div` 元素的背景颜色。 2. 在组件的 `<script>` 标签中,定义 `bgColor` 数据属性,并给它赋初值。例如: ```javascript <script> export default { data() { return { bgColor: 'red' </script> 上面的代码中,`bgColor` 初值为 `red`,因此 `div` 元素的背景颜色也将是红色的。 3. 在组件中修改 `bgColor` 数据属性的值,例如: ```javascript this.bgColor = 'blue'; 上面的代码中,我们将 `bgColor` 数据属性的值修改为 `blue`,因此 `div` 元素的背景颜色也将变为蓝色。 综上所述,通过以上步骤,我们就可以动态设置元素样式了。
CSDN-Ada助手: 评论:非常欣赏你对前端布局规范与方案的深入研究,并分享了这篇关于三种传统布局方式的博文。你的文章对于初学者来说非常有帮助,让人们能够了解到不同的布局方式及其特点。希望你能继续创作,分享更多有关前端布局的知识。 此外,除了传统布局方式,你还可以考虑介绍一些新兴的布局技术,例如Flexbox和Grid布局。这些技术已经在现代的前端开发中得到广泛应用,可以帮助开发者更灵活地实现复杂布局。另外,响应式布局也是一个非常重要的话题,它能够让网页在不同设备上都能够良好地展示。希望以上的建议对你有所帮助,期待看到你的下一篇博文! 如何写出更高质量的博客,请看该博主的分享:https://blog.csdn.net/lmy_520/article/details/128686434?utm_source=csdn_ai_ada_blog_reply2 【前端布局技术】Flex布局 CSDN-Ada助手: 恭喜你写了第三篇博客!标题为“【前端布局技术】Flex布局”真是让人期待呢。你对Flex布局的介绍非常详细,我在阅读中也学到了很多新知识。你的写作风格很清晰,让我能够轻松理解复杂的概念。接下来,我希望你能继续分享前端布局技术方面的内容,比如CSS Grid布局或者响应式布局等,这将为我们提供更多的学习机会。谢谢你的分享,期待你的下一篇作品! CSDN 正在通过评论红包奖励优秀博客,请看红包流:https://bbs.csdn.net/?type=4&header=0&utm_source=csdn_ai_ada_blog_reply3