Vue——认识day06_class与style绑定

news2024/11/15 21:54:49

在Vue中,可以使用v-bind指令来将CSS样式动态地绑定到HTML元素上。有两种方式可以实现CSS与style的绑定:

  1. 对象语法:可以将一个包含CSS属性和值的对象传递给v-bind,将对象的属性与HTML元素的style属性进行绑定。例如:
<div v-bind:style="{ color: textColor, fontSize: textSize + 'px' }">Hello World</div>

在上面的例子中,textColor和textSize是Vue实例的data属性,可以在Vue实例中定义和修改它们的值。当数据发生变化时,绑定的CSS样式也会相应地更新。

  1. 数组语法:可以将一个数组传递给v-bind,数组中的每个元素都是一个CSS样式对象。这样可以根据某个条件来动态地切换不同的CSS样式。例如:
<div v-bind:style="[baseStyle, activeStyle]">Hello World</div>

在上面的例子中,baseStyle和activeStyle是包含CSS属性和值的样式对象,可以在Vue实例中定义和修改它们的值。根据某个条件,可以动态地切换不同的样式。

通过v-bind指令,Vue可以实现将CSS样式动态地绑定到HTML元素上,从而可以根据数据的变化来改变样式。这种方式使得前端开发更加灵活和方便。


请看下面的代码示例——绑定class样式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>绑定样式</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
        }
        .happy{
            border: 4px solid red;
            background-color: rgba(255,255,0,0.644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid black;
            background-color: rgba(0, 255, 68, 0.644);
        }
        .normal{
            border: 4px solid blue;
            background-color: rgba(0, 81, 255, 0.644);
        }
        .masoul1{
            background-color: yellowgreen;
        }
        .masoul2{
            font-size: 44px;
            text-shadow: 2px 2px 4px rebeccapurple,-2px -2px 4px skyblue;            
        }
        .masoul3{
            border-radius: 10px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
</head>
<body>

    <div id="root">
        <!-- 绑定class样式——字符串写法,适用于:样式的类名不确定,需要动态指定的 -->
        <!-- 采用:class作为动态的class来绑定 -->
        <div class="basic" :class="mood" @click="changeMood">{{name}}</div>
        <br>
        <hr>
        <br>
        <!-- 绑定class样式——数组写法,适用于:要绑定的样式个数不确定名字也不确定 -->
        <div class="basic" :class="classArr" >{{name}}</div>

        <br>
        <hr>
        <br>

        <!-- 绑定class样式——对象写法,适用于:要绑定的样式个数确定,名字也确定,但要动态决定用不用的 -->
        <div class="basic" :class="classObj">{{name}}</div>
    </div>
    
</body>

<script type="text/javascript">
    Vue.config.productionTip=false
    new Vue({
        el:'#root',
        data:{
            name:'WenJGo',
            mood:'normal',
            classArr:['masoul1','masoul2','masoul3'],
            classObj:{
                masoul1:false,
                masoul2:false
            }
        },
        methods: {
            changeMood(){
                // this.mood = 'happy'
                const arr = ['happy','sad','normal']
                this.mood = arr[Math.floor(Math.random()*3)]
            }
        },
    });
</script>
</html>


请看下面的代码示例——绑定style样式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>绑定样式</title>
    <style>
        .basic{
            width: 400px;
            height: 100px;
            border: 1px solid black;
        }
        .happy{
            border: 4px solid red;
            background-color: rgba(255,255,0,0.644);
            background: linear-gradient(30deg,yellow,pink,orange,yellow);
        }
        .sad{
            border: 4px solid black;
            background-color: rgba(0, 255, 68, 0.644);
        }
        .normal{
            border: 4px solid blue;
            background-color: rgba(0, 81, 255, 0.644);
        }
        .masoul1{
            background-color: yellowgreen;
        }
        .masoul2{
            font-size: 44px;
            text-shadow: 2px 2px 4px rebeccapurple,-2px -2px 4px skyblue;            
        }
        .masoul3{
            border-radius: 10px;
        }
    </style>
    <script type="text/javascript" src="../js/vue.js"></script>
</head>
</head>
<body>

    <div id="root">
        <!-- 绑定class样式——字符串写法,适用于:样式的类名不确定,需要动态指定的 -->
        <!-- 采用:class作为动态的class来绑定 -->
        <div class="basic" :class="mood" @click="changeMood">{{name}}</div>
        <br>
        <hr>
        <br>
        <!-- 绑定class样式——数组写法,适用于:要绑定的样式个数不确定名字也不确定 -->
        <div class="basic" :class="classArr" >{{name}}</div>

        <br>
        <hr>
        <br>

        <!-- 绑定class样式——对象写法,适用于:要绑定的样式个数确定,名字也确定,但要动态决定用不用的 -->
        <div class="basic" :class="classObj">{{name}}</div>

        <br>
        <hr>
        <br>
        <div class="basic" :style="styleObj">{{name}}</div>
        <br>
        <div class="basic" :style="[styleObj,styleObj2]">{{name}}</div>


    </div>
    
</body>

<script type="text/javascript">
    Vue.config.productionTip=false
    new Vue({
        el:'#root',
        data:{
            name:'WenJGo',
            mood:'normal',
            classArr:['masoul1','masoul2','masoul3'],
            classObj:{
                masoul1:false,
                masoul2:false
            },
            styleObj:{
                // 这里的key不能瞎写,这里是将font-size改的符合vue的要求
                fontSize: '40px',
                color:'skyblue',
                // 像这种原先是使用'-'连接的,就修改为驼峰命名
                // backgroundColor:'yellow'
            },
            styleObj2:{
                backgroundColor:'orange'
            }
        },
        methods: {
            changeMood(){
                // this.mood = 'happy'
                const arr = ['happy','sad','normal']
                this.mood = arr[Math.floor(Math.random()*3)]
            }
        },
    });
</script>
</html>

总结、

那么绑定样式这一节就完事啦。

在Vue中,绑定样式的技巧和常用习惯主要有以下几种:

  1. 使用class绑定:可以通过v-bind:class指令来动态地绑定class样式。可以将一个对象传递给v-bind:class,对象的属性可以是一个布尔值,根据布尔值来决定是否应用该样式,也可以是一个表达式,根据表达式的值来决定应用哪个样式。

例如:

<div :class="{ active: isActive, 'text-danger': hasError }"></div>

  1. 使用style绑定:可以通过v-bind:style指令来动态地绑定内联样式。可以将一个对象传递给v-bind:style,对象的属性可以是一个字符串,表示样式的属性和值,也可以是一个表达式,根据表达式的值来决定样式的属性和值。

例如:

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

  1. 使用计算属性:可以使用计算属性来根据一些逻辑计算出样式的属性和值,然后绑定到元素上。

例如:

<div :style="computedStyle"></div>

computed: {
  computedStyle: function() {
    return {
      fontSize: this.size + 'px',
      color: this.isActive ? 'red' : 'blue'
    }
  }
}

  1. 使用样式组件:可以使用第三方的样式组件库,例如Element UI、Vuetify等。这些库一般都提供了一些预定义的样式组件,可以直接使用,也可以通过配置参数来动态地绑定样式。

总的来说,Vue中绑定样式的技巧和常用习惯主要是使用class和style绑定指令,以及结合计算属性和样式组件来实现动态绑定样式。这样可以很方便地根据不同的条件和逻辑来决定应用哪些样式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095915.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Docker 搭建企业级私有仓库HARBOR

目录 1 HARBOR 的获取 1.1 下载软件包地址 1.2 HARBOR 的介绍 2 部署harbor 2.1 仓库端操作 2.1.1 修改harbor配置文件 2.1.2 生成服务端的证书与秘钥 2.1.3 管理HARBOR 2.1.4 查看是否运行 2.2 客户端操作 2.2.1 证书拷贝给客户端 2.2.2 环境配置 2.2.3 批量读取本地镜像 2.2…

Transformer面试真题详解——覆盖99%的Transformer面试问题(建议收藏)

文章目录 1. 请简述一下Transformer的基本结构和原理2. Transformer为什么使用多头注意力机制3. Transformer计算attention为什么选择点乘而不是加法&#xff1f;两个计算复杂度和效果上有什么区别&#xff1f;4. 为什么在softmax之后要对attention进行scaled&#xff08;为什么…

dubbo之时间轮算法分析

文章目录 前言一、参数说明二、具体实现1、HashedWheelTimer2、createWheel3、newTimeout4、start5、run6、waitForNextTick7、transferTimeoutsToBuckets8、expireTimeouts 总结 前言 时间轮&#xff08;TimingWheel&#xff09;是一种高效利用线程资源进行批量化调度的算法&…

ffmpeg音频编码

音视频播放的流程 根据我之前的文章 我们已经从解复用&#xff0c;解码得到原始数据&#xff0c;现在我们逆向&#xff0c;将frame转化packet。也就是原始数据转化为压缩后的数据文件。 介绍 PCM样本格式 PCM(Pulse Code Modulation&#xff0c;脉冲编码调制)⾳频数据是未经…

离散数学------关系理论

一、序偶和笛卡尔积 序偶 两个序偶如果相等&#xff0c;那么他们相对应的第一第二元素分别相等 笛卡尔积 笛卡尔积是集合之间的一种运算&#xff0c;运算的结果是个序偶&#xff0c;第一元素来自前面的集合&#xff0c;第二元素来自后面的集合。 两集合进行笛卡尔积运算后集合…

UE5学习笔记20-给游戏添加声音

一、准备音频资源 1.Jump文件夹中有跳跃的音频资源wav文件夹中是SoundCue的音波资源 2.音乐衰减文件&#xff0c;右键->音频->音效衰减 二、 在对应的动画资源处将音频添加 1.找到对应的动画帧 2.在对应的行右键添加通知->播放音效 3、选中添加的音效选择对应的音频资…

拦截通信助理,拦截小秘书技术

有人叫做空号识别&#xff0c;有人称为彩铃识别&#xff0c;磐石云通过嵌入软交换进行实时识别前期媒体 案例&#xff1a; 王总公司有20坐席的员工回访用户服务满意度业务&#xff0c;由于用户开通了语音秘书和通信助理&#xff0c;漏话提醒等等&#xff0c;坐席拨打时对方由…

【HTML】开源模拟输入框动画

代码地址&#xff1a; https://uiverse.io/eslam-hany/strange-goose-48代码地址&#xff1a; https://uiverse.io/vnuny/moody-swan-60代码地址&#xff1a; https://uiverse.io/boryanakrasteva/hard-pig-16代码地址&#xff1a; https://uiverse.io/Harsha2lucky/lovely…

TCP和UDP的主要区别以及应用场景

目录 1.主要区别 2.应用场景 1.主要区别 TCP&#xff08;Transmission Control Protocol&#xff09;&#xff1a;有连接&#xff0c;可靠传输&#xff0c;面向字节流&#xff0c;全双工通讯&#xff1b; UDP&#xff08;User Datagram Protocol&#xff09;&#xff1a;无连…

树莓派的启动

我的板子是树莓派3B。 [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 6.6.31rpt-rpi-v7 (sergeraspberrypi.com) (gcc-12 (Raspbian 12.2.0-14rpi1) 12.2.0, GNU ld (GNU Binutils for Raspbian) 2.40) #1 SMP Raspbian 1:6.6.31-1rpt1 (202…

【C++ Primer Plus习题】8.6

问题: 解答: #include <iostream> using namespace std;template <typename T> T maxn(T arr[], int len)//通用 {T max 0;for (int i 0; i < len; i){if (max < arr[i]){max arr[i];}}return max; }template<> const char* maxn<const char*&g…

SpringBoot+Vue实现大文件上传(断点续传-后端控制(一))

SpringBootVue实现大文件上传&#xff08;断点续传&#xff09; 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI&#xff0c;spark-md5 2 问题 在前一篇文章&#xff0c;我们写了通过在前端控制的断点续传&#xff0c;但是有两个问题&#xff0c;第一个问题&…

怎么在Windows操作系统部署阿里开源版通义千问(Qwen2)

怎么在Windows操作系统部署阿里开源版通义千问&#xff08;Qwen2&#xff09; | 原创作者/编辑&#xff1a;凯哥Java | 分类&#xff1a;人工智能学习系列教程 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; GitHub上qwen2截图 随着人工智能技术的不断…

【华为】轻松get!eNSP登录无线AC Web界面的新姿势

【华为】轻松get&#xff01;eNSP登录无线AC Web界面的新姿势 无线AC&#xff1a;web界面实验准备华为云配置01 拉取设备02添加UDP端口03再添加VMnet1(VMnet8 也行)网段连接AC的端口04最后设置端口映射 无线AC配置01拉取AC设备和连接华为云02配置AC的g0/0/1端口&#xff08;SVI…

AI时代,需要什么样的服务器操作系统?

文&#xff5c;刘俊宏 编&#xff5c;王一粟 AI时代&#xff0c;中国的服务器系统正在面临一场双重挑战。 今年6月底&#xff0c;最主流的开源服务器操作系统CentOS正式停服&#xff0c;找一个合适的操作系统进行迁移成为了必选项。同时&#xff0c;AI时代的到来&#xff0c…

笔记:《利用Python进行数据分析》之数据聚合

观前提示&#xff1a;这节内容不多&#xff0c;但难度较大&#xff0c;尤其是要能熟练运用时很不容易的 数据聚合 聚合指的是任何能够从数组产生标量值的数据转换过程。之前的例子已经用过一些&#xff0c;比如mean、count、min以及sum等。你可能想知道在GroupBy对象上调用me…

网络原理 - 初识

文章目录 局域网(LAN)广域网(WAN)网络设备IP地址格式 端口号格式 认识网络协议协议分层 OSI七层模型(只是理论,没有实际运用)TCP/IP五层&#xff08;或四层&#xff09;模型网络设备所在分层 封装和分用 计算机之间通过网络来传输数据&#xff0c;也称为网络通信。 根据网络互连…

AI问答:.NET核心组成概要、程序运行步骤和查询SDK版本的方法

.NET三大组成 ①Runtime (运行时)&#xff1a; CLR&#xff1a;公共语言运行时&#xff0c;执行程序、内存管理、垃圾回收&#xff08;GC&#xff09;、安全性检查、异常处理&#xff0c;是跨平台的关键要素。 JIT&#xff1a;实时编译器&#xff0c;将中间语言…

JDBC与数据库之间的操作(增删改查、获取主键、业务逻辑分离、属性文件配置)

参考视频哔哩哔哩 1、Service和Servicelmpl的概念 java中service和servicelmpl是常见的代码组织方式 Service是指业务逻辑的接口&#xff0c;定义了系统对外提供的功能。Servicelmpl是Service接口的具体实现&#xff0c;实现了具体的业务逻辑。 Service和Servicelmpl的好处…

Android自定义View实现不同朝向字体变色

实现效果&#xff1a; 1.一个文字两种颜色 2.实现不同朝向 3.结合ViewPager 思路&#xff1a;TextView可行&#xff1f;系统提供的只能够显示一种颜色&#xff0c;需要自定义View extends TextView&#xff1a;onMeasure()不需要实现 textColor颜色&#xff0c;textSize字体大小…