前端魔法:掌握动态 class,让网页元素随心所欲

这篇具有很好参考价值的文章主要介绍了前端魔法:掌握动态 class,让网页元素随心所欲。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

当你动态的添加类名,在某个变量匹配需求时自动切换到某个类名,实现其对应的效果。这个过程就是我们常说的动态 class,今天就和大家一起聊聊前端中的动态 class


一、对象语法

1.1 绑定单个 class

我们可以传给 v-bind:class 一个对象,以动态地切换 class,如下案例:

<template>
  <div>
    <el-button @click="clickOn" v-bind:class="{'active':isActive}">点击我</el-button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
    };
  },
  methods: {
    clickOn() {
      this.isActive = !this.isActive;
    },
  },
};
</script>

<style scoped>
.active {
  color: red;
}
</style>

实现效果

动态class,vue,前端,vue


1.2 绑定多个 class

对象中也可存在多个属性,动态切换 class,并且 :class 可以合 class 共存,如下案例:

<template>
  <div>
    <div class="activeOne" v-bind:class="{ activeTwo: isActive, 'activeThree': hasError }"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      hasError: true,
    };
  },
};
</script>

渲染结果

动态class,vue,前端,vue


1.3 绑定计算属性

:class 的表达式过长或逻辑复杂时,可以绑定一个计算属性,一般当条件多于两个时,都可以使用 data 或者 computed,如下案例:

<template>
  <div>
    <div :class="taxonOne">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      isError: null,
      error: {
        type: "fail",
      },
    };
  },
  computed: {
    taxonOne() {
      return {
        taxonTwo: this.isActive && this.error == null, // (isActive 为 true 且 error 为 null) 类名为 taxonTwo
        taxonTherr: this.error && this.error.type == "fail", // (error 不为空且 error 中的 type 值为 "fail") 类名为 taxonTherr
      };
    },
  },
};
</script>
<style scoped>
.taxonTwo {
  color: red;
}
.taxonTherr {
  color: blue;
}
</style>

渲染结果

动态class,vue,前端,vue


二、数组语法

2.1 class 列表

当需要应用多个 class 时,可以使用数组语法,给 :class 绑定一个数组,如下案例:

<template>
  <div>
    <div v-bind:class="['taxonOne', 'taxonTwo']">内容内容内容</div>
  </div>
</template>
<style scoped>
.taxonOne {
  color: red;
}
.taxonTwo {
  border: 1px solid blue;
}
</style>

渲染结果

动态class,vue,前端,vue


2.2 三元运算符

使用三元表达式,根据条件切换 class,如下案例:

<template>
  <div>
    <div v-bind:class="[isActive ? 'taxonOne' : 'taxonTwo']">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: false,
    };
  },
};
</script>
<style scoped>
.taxonOne {
  color: red;
}
.taxonTwo {
  color: blue;
}
</style>

isActivetrue 时的渲染结果

动态class,vue,前端,vue

反之,当 isActivefalse 时的渲染结果

动态class,vue,前端,vue


2.3 数组语法 + 对象语法

class 有多个条件时,这样写较为烦琐,可以在数组语法中使用对象语法,如下案例:

<template>
  <div>
    <div v-bind:class="[{ taxonOne: isActive }, 'taxonTwo']">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
    };
  },
};
</script>
<style scoped>
.taxonOne {
  border: 1px solid red;
}
.taxonTwo {
  color: blue;
}
</style>

渲染结果

动态class,vue,前端,vue


三、复合形式

你可以将 v-if/v-else-if:class 相结合进行使用,如下案例:

<template>
  <div>
    <div v-if="state == '0'" class="taxonOne">内容内容内容</div>
    <div v-else-if="state == '1'" class="taxonTwo">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      state: "0",
    };
  },
};
</script>
<style scoped>
.taxonOne {
  color: red;
}
.taxonTwo {
  color: blue;
}
</style>

state0 时,渲染结果

动态class,vue,前端,vue

state1 时,渲染结果

动态class,vue,前端,vue


:style

除了上面我们说到的动态 class,我们也可以直接动态的绑定 style ,下面一起来看看如何在标签中绑定内联样式。

注意:

  1. 凡是有 -style 属性名都要变成驼峰式,比如 font-size 要变成 fontSize
  2. 除了绑定值,其他的属性名的值要用引号括起来,比如 fontSize:'14px' 而不是 fontSize:14px

一、 对象形式

1.1 直接绑定

这也是最简单的一种形式,直接绑定,如下案例:

<template>
  <div>
    <div :style="{ color: activeColor, fontSize: fontSize + 'px' }">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      activeColor: "red",
      fontSize: 30,
    };
  },
};
</script>

渲染结果

动态class,vue,前端,vue


1.2 三目运算符

三目运算符主要针对变量会动态变化时切换不同的 style 会比较方便,如下案例:

<template>
  <div>
    <div :style="{ color: state == '0' ? 'red' : 'blue'}">内容内容内容</div>
    <div :style="state == '1' ? 'color:red' : 'color:blue'">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      state: "0",
    };
  },
};
</script>

渲染结果

动态class,vue,前端,vue


1.3 计算属性

当逻辑比较复杂时,可以通过绑定一个计算属性,如下案例:

<template>
  <div>
    <div :style="styleState(0)">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  computed: {
    styleState() {
      return function (index) {
        return index == 0 ? "color: red" : "color: blue";
      };
    },
  },
};
</script>

渲染结果

动态class,vue,前端,vue



二、 数组形式

2.1 直接绑定

<template>
  <div>
    <div :style="[styleOne, styleTwo]">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      styleOne: {
        border:"1px solid blue"
      },
      styleTwo: {
        color: "red",
      },
    };
  },
};
</script>

渲染结果

动态class,vue,前端,vue


2.2 三目运算符

<template>
  <div>
    <div :style="[{color:(state == '0' ? 'red' : 'blue')}]">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      state: "0",
    };
  },
};
</script>

渲染结果

动态class,vue,前端,vue


三、调用方法

同样,你也可以选择调用一个方法,如下案例:

<template>
  <div>
    <div :style="setStyle(0)">内容内容内容</div>
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    setStyle(index) {
      return index == 0 ? "color: red" : "color: blue";
    },
  },
};
</script>

渲染结果

动态class,vue,前端,vue


拓展

以上我们展示的都是在 vue 中使用,那在别的平台该如何使用呢?其实是大同小异的,可能在语法上会有一点点的不同,下面来看看在 uniapp 和微信小程序中如何使用动态 class


uniapp 中的动态 class

:class="[{'类名':条件},{'类名':条件},{'类名':条件}]"

<template>
	<view>
		<view :class="[{'taxonOne' : index == '0'},{'taxonTwo' : index == '1'}]">内容内容内容</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				index: "0"
			}
		},
	}
</script>

<style scoped>
	.taxonOne {
		color: red;
	}

	.taxonTwo {
		color: blue;
	}
</style>

index0 时,渲染结果

动态class,vue,前端,vue

index1 时,渲染结果

动态class,vue,前端,vue


微信小程序中的动态 class

index.wxml

<view class="{{ state == '0' ? 'taxonOne' : 'taxonTwo' }}">内容内容内容</view>

index.js

Page({
    data: {
        state: '1'
    },
})

index.wxss

.taxonOne{
    color: red;
}
.taxonTwo{
    color: blue;
}

state0 时,渲染结果

动态class,vue,前端,vue

state1 时,渲染结果

动态class,vue,前端,vue文章来源地址https://www.toymoban.com/news/detail-743984.html

到了这里,关于前端魔法:掌握动态 class,让网页元素随心所欲的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python Selenium 获取动态网页指定元素的超链接

    本文是个人使用Python Selenium 获取动态网页指定元素的超链接的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。 更多精彩内容,可点击进入Python日常小操作专栏或我的个人主页查看 熟悉Python 熟悉Requests 熟悉XPath 熟悉Selenium Python是一种跨平台的计算机程序设计语言。

    2024年01月19日
    浏览(40)
  • AJAX 前端开发利器:实现网页动态更新的核心技术

    AJAX是开发者的梦想,因为你可以: 在不重新加载页面的情况下更新网页 在页面加载后请求来自服务器的数据 在页面加载后接收来自服务器的数据 在后台向服务器发送数据 HTML页面 HTML页面包含一个 div 部分和一个 button div 部分用于显示来自服务器的信息 button 调用一个函数(

    2024年03月22日
    浏览(42)
  • 掌握C++魔法:深入解析类与对象(上篇)

    W...Y的主页 😊 代码仓库分享 💕 🍔前言:  之前我们学习了从C语言转到C++后我们需要知道的一些关键改动与变化。今天我们就要学习C++独有的类与对象。在谈论类与对象之前我们先说一下什么是面向对象的C++,什么是面向过程的C语言。 目录 面向过程和面向对象初步认识

    2024年02月08日
    浏览(26)
  • 掌握C#中异步魔法:同步方法如何优雅调用异步方法

      概述: 上述C#示例演示了如何在同步方法中调用异步方法。通过使用`async`和`await`,实现了同步方法对异步方法的调用。建议使用`await`而不是`Result`来避免潜在的死锁问题。这种模式在处理异步任务时能够提高代码的可读性和性能。 在C#中,从同步方法调用异步方法

    2024年03月25日
    浏览(31)
  • 掌握这些写简历投简历的“黑魔法”,告别简历已读不回!

    “哎,我还能找到工作吗?” 这是最近加我微信的好友,问的最多的一句话。 最近加我微信的朋友很多,我都很奇怪,最近也没怎么发文章,怎么会有这么多人加我。 大概就是因为太卷了,之前写的就业和接单的文章,被平台推荐了。 最近加我的朋友可以分为两大类: 一

    2024年02月13日
    浏览(32)
  • 【深入浅出Selenium库的百变玩法】: 掌握Web自动化测试的关键技术和策略,包括元素定位、页面操作、动态内容处理等,适用于初学者和高级开发者的综合指南

    Selenium是一个功能强大的库,支持多种高级操作,如处理多窗口、多标签页、键盘与鼠标事件、滚动操作等。掌握Selenium可以大大提高Web应用的测试效率和覆盖范围。希望这篇文章能帮助你开启Selenium进行自动化测试的新篇章。 Selenium也是一个广泛使用的自动化测试工具,它支

    2024年02月20日
    浏览(41)
  • 对标ChatGPT3.5,支持手机电脑网页使用,无需魔法

    说到 Claude 是什么,大家可能没听说过。 但是说到 OpenAI,说到 ChatGPT,相信大家一定听说过,玩过。 PS:关于 Claude 网页版的注册教程,我之前已经写过文章了,现在额外介绍如何使用手机App和电脑软件来玩 Claude。 Claude ,这是一支由前 OpenAI 的研究员和工程师组成的团队创建

    2024年02月06日
    浏览(32)
  • 掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「中篇」

    在当今人工智能时代,我们越来越多地依赖于AI助手来解决问题和满足需求。然而,要让AI助手真正理解我们的意图并产生出我们期望的结果并不容易。在本篇文章中,我们将探讨一种关键的技巧,即prompt的使用。通过合理运用prompt,我们可以更好地引导AI助手的思考,从而得

    2024年02月11日
    浏览(29)
  • 掌握AI助手的魔法工具:解密`Prompt`(提示)在AIGC时代的应用(下篇)

    前言:在前面的两篇文章中,我们深入探讨了AI助手中的魔法工具—— Prompt (提示)的基本概念以及在 AIGC(Artificial Intelligence-Generated Content ,人工智能生成内容)时代的应用场景。在本篇中,我们将进一步探索多个领域中 Prompt 的应用,并通过具体的场景举例来加深理解。

    2024年02月07日
    浏览(42)
  • 掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「上篇」

    在当今的AIGC时代,我们面临着越来越多的人工智能技术和应用。其中一个引人注目的工具就是Prompt(提示)。它就像是一种魔法,可以让我们与AI助手进行更加互动和有针对性的对话。那么,让我们一起来了解一下Prompt,它是什么,为什么需要它,怎么使用它以及使用它会有

    2024年02月11日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包