v-bind操作class

v-bind操作class

参考文献:
Vue的快速上手
Vue指令上
Vue指令下
Vue指令的综合案例
指令的修饰符

文章目录

  • v-bind操作class
    • v-bind对于样式控制的增强
    • 操作class
    • 案例(tab导航高亮)
    • 操作style
    • 操作style案例
  • 结语

    博客主页: He guolin-CSDN博客

    关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!

嗨!收到一张超美的图, 愿你每天都能顺心!

在这里插入图片描述

注:在看本文章前优先把参考文献看完!!!

v-bind对于样式控制的增强

为了方便开发者进行样式控制,Vue扩展了v-bind的语法,可以针对class类名style行内式进行控制。

操作class

语法 :class = “对象/数组”
1.对象 -> 键就是类名,值是布尔值。如果值为true,有这个类,否则没有这个类

<div class="box" :class="{类名1:布尔值,类名2:布尔值}"></div>

使用场景:一个类名来回切换。

2.数组 -> 数组中所有的类,都会添加到盒子上,本质就是一个class列表

<div class="box" :class="[类名1,类名2,类名3]"></div>

使用场景:批量添加或删除类。
那么我们接下来我们通过代码来演示一下。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 200px;
            height: 200px;
            border: 3px solid #000;
        }
        .pink{
            background-color: pink;
        }
        .big{
            width: 300px;
            height: 300px;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="box">Hello Word</div>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el:"#app",
            data:{

            }
        })
    </script>
</body>
</html>

在这串代码中,我们队box类进行了简单的css样式设置,同时设置了pink和big两个类,但是我们将这两个属性写进盒子里,他就会覆盖原来有的类,我们不希望将它写死,而是动态的控制这些类。
我们可以稍作修改。
1.用对象的方法

<div class="box" :class="{pink:true,big:false}">Hello Word</div>

2.用数组的方法。(不显示big,数组里就不加上)

<div class="box" :class="["big"]">Hello Word</div>

这样它就会对我们的盒子颜色改成粉色,而且不会改变我们的盒子大小。
在这里插入图片描述

案例(tab导航高亮)

既然了解了我们的v-bind对class的操作,那么接下来看一个对导航栏高亮控制的案例。

核心思路:
1.基于数据渲染tab -> v-for
2.准备下标记录高亮的是哪一个tab -> activeIndex
3.基于下标,动态控制class类名 -> v-bind:calas

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        ul{
            list-style: none;
            list-style-type: none;
            padding-left: 0;
        }
        ul li {
            display: inline; 
            margin-right: 2px; 
            font-size: 24px;
            
        }
        ul li a{
            text-decoration: none;
        }
        .active{
            background-color: red;
            color: white;
        }
    </style>
</head>
<body>
    <div id="app">
        <ul>
            <li v-for="(item,index) in list" :key="item.id" @click="activeIndex = index">
                <a :class="{active:index === activeIndex}" href="#">{{item.name}}</a>
            </li>
        </ul>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el:"#app",
            data:{
                activeIndex:0,//记录高亮
                list:[
                    { id: 1, name: "今日秒杀" },
                    { id: 2, name: "每日特价" },
                    { id: 3, name: "品类秒杀" },
                ]
            }
        })
    </script>
</body>
</html>

我们对li标签进行循环输出,并且在点击时将我们的高亮值赋值为此标签对应的id值以此来实现我们的目的,我们用v-bind进行属性设置,只有被点击的li标签才会显示属性的样式。接下来我们来看看效果。

在这里插入图片描述

操作style

语法 :style=“样式对象”

<div class="box" :style="{css属性名1:css属性值,css属性名2:css属性值}"></div>

以我们写v-bind控制class属性的例子为例,我们改成对样式的控制来控制我们的属性

<div class="box" :style="{width:'300px',height:'300px'}"></div>

在这里插入图片描述

可以看到我们的盒子变成了300*300。
注意:如果属性名有一杠,例如background-color要用引号引起来,或者写成驼峰。

操作style案例

我们可以来做个进图条
其本质就是两个盒子,进图条这个盒子在增长的时候改变一下宽的比例就可以实现。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .out{
            position: relative;
            width: 400px;
            height: 50px;
            border-radius: 100px;
            border: 1px solid black;
            float: left;
        }
        .in{
            height: 50px;
            border-radius: 100px;
            background-color: blue;
        }
        .click{
            width: 50px;
            height: 50px;
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="out">
            <div class="in" :style="{width:prcent+'%'}"></div>
        </div>
        <button class="click" @click="start">开始</button>
        <p>{{prcent}}%</p>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.16/dist/vue.js"></script>
    <script>
        const app = new Vue({
            el: "#app",
            data: {
                prcent:0
            },
            methods:{
                start(){
                    let interval = setInterval(()=>{
                        if(this.prcent < 100){
                            this.prcent += 1;
                        }else{
                            clearInterval(interval)//当进度百分百时停止动画
                        }
                    },10)//每隔10毫秒进度条增加百分之1
                }
            }
        })
    </script>
</body>

</html>

我们对in这个盒子里的宽度以百分比来呈现,并写了一个方法start,我们点击开始按钮,当进度条没有达到百分百的时候,会每隔一段时间进行增长。
我们来看一下运行效果。
在这里插入图片描述

结语

本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes1.28 编译 kubeadm修改证书有效期到 100年.并更新k8s集群证书

文章目录 前言一、资源准备1. 下载对应源码2.安装编译工具3.安装并设置golang 二、修改证书有效期1.修改证书有效期2.修改 CA 证书有效期 三、编译kubeadm四、使用新kubeadm方式1.当部署新集群时,使用该kubeadm进行初始化2.替换现有集群kubeadm操作 前言 kubeadm 默认证书为一…

HarmonyOS NEXT应用开发边学边玩系列:从零实现一影视APP (三、影视搜索页功能实现)

在HarmonyOS NEXT开发环境中&#xff0c;我们可以使用nutpi/axios库来简化网络请求的操作。本文将展示如何使用HarmonyOS NEXT框架和nutpi/axios库&#xff0c;从零开始实现一个简单的影视APP&#xff0c;主要关注影视搜索页的功能实现。 为什么选择nutpi/axios&#xff1f; n…

高级运维:shell练习2

1、需求&#xff1a;判断192.168.1.0/24网络中&#xff0c;当前在线的ip有哪些&#xff0c;并编写脚本打印出来。 vim check.sh #!/bin/bash# 定义网络前缀 network_prefix"192.168.1"# 循环遍历1-254的IP for i in {1..254}; do# 构造完整的IP地址ip"$network_…

好用的php商城源码有哪些?

选择一个优秀的商城工具&#xff0c;能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统&#xff0c;那么现实中都有哪些好用的PHP商城源码值得推荐呢&#xff1f;下面就带大家一起来了解一下。 1.TigShop 【推荐指数】&#xff1a;★★★★★☆ 【推…

Docker Desktop 构建java8基础镜像jdk安装配置失效解决

Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像&#xff0c;前几天我使用Docker Desktop环境重新构建了一个…

Open FPV VTX开源之嵌入式OSD配置

Open FPV VTX开源之嵌入式OSD配置 1. 源由2. 安装3. 配置步骤一&#xff1a;备份/etc/telemetry.conf步骤二&#xff1a;修改/etc/telemetry.conf步骤三&#xff1a;配置时区步骤四&#xff1a;重启摄像头 4. 实测5. 参考资料 1. 源由 穿越机模拟图传延迟通常在10ms左右。 最…

数据平台浅理解

定义 数据平台架构是指用于收集、存储、处理和分析数据的一系列组件、技术和流程的整体架构设计。它就像是一个复杂的数据生态系统的蓝图&#xff0c;旨在高效地管理数据从产生源头到产生价值的整个生命周期。 主要层次 数据源层 这是数据的起点&#xff0c;包含各种类型的数据…

CSS3的aria-hidden学习

前言 aria-hidden 属性可用于隐藏非交互内容&#xff0c;使其在无障碍 API 中不可见。即当aria-hidden"true" 添加到一个元素会将该元素及其所有子元素从无障碍树中移除&#xff0c;这可以通过隐藏来改善辅助技术用户的体验&#xff1a; 纯装饰性内容&#xff0c;如…

【ArcGIS初学】产生随机点计算混淆矩阵

混淆矩阵&#xff1a;用于比较分类结果和地表真实信息 总体精度(overall accuracy) :指对角线上所有样本的像元数(正确分类的像元数)除以所有像元数。 生产者精度(producers accuracy) &#xff1a;某类中正确分类的像元数除以参考数据中该类的像元数(列方向)&#xff0c;又称…

认识机器学习中的结构风险最小化准则

上一篇文章我们学习了关于经验风险最小化准则&#xff0c;其核心思想是通过最小化训练数据上的损失函数来优化模型参数&#xff0c;从而提高模型在训练集上的表现。但是这也会导致一个问题&#xff0c;经验风险最小化原则很容易导致模型在训练集上错误率很低&#xff0c;但在未…

设计模式-工厂模式/抽象工厂模式

工厂模式 定义 定义一个创建对象的接口&#xff0c;让子类决定实列化哪一个类&#xff0c;工厂模式使一个类的实例化延迟到其子类&#xff1b; 工厂方法模式是简单工厂模式的延伸。在工厂方法模式中&#xff0c;核心工厂类不在负责产品的创建&#xff0c;而是将具体的创建工作…

Chatper 4: Implementing a GPT model from Scratch To Generate Text

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture4.2 Normalizing activations with layer normalization4.3 Implementing a feed forward network with GELU activations4.4 Adding shortcut connections4.5 Connecting at…

Unity ShaderGraph中Lit转换成URP的LitShader

ShaderGraph中的LitShader如下&#xff1a; 在顶点和片元着色器暴露出了上图中的几个参数&#xff0c;要转换成URPLitShaderLab,首先要找到这几个参数&#xff0c;打开LitShader&#xff0c;找到第一个Pass&#xff0c;可以看到下图中的顶点和片元的定义函数&#xff0c;还有引…

uni-app的学习

uni-app 有着跨平台支持、丰富的插件和生态系统、高性能、集成开发工具HBuilderX的配合使用。允许使用者仅通过一套代码发布到多平台使用。 uni-app官网 uni-app 是一个适合开发跨平台移动应用和小程序的框架&#xff0c;能够大幅提高开发效率。 一、了解 1.1 工具准备 从Git…

USRP X310 Windows 烧录镜像

说明 USRP-X 系列设备包含两个用于两个以太网通道的 SFP 端口。由于 SFP 端口支持 1 千兆 (SFP) 和 10 千兆 (SFP) 收发器&#xff0c;因此 UHD 附带了多个 FPGA 图像&#xff0c;以确定上述接口的行为。 注意&#xff1a;Aurora 图像需要从 FPGA 源代码手动构建。 FPGA 图像…

Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器

Spring Boot – 动态启动/停止 Kafka 监听器 当 Spring Boot 应用程序启动时&#xff0c;Kafka Listener 的默认行为是开始监听某个主题。但是&#xff0c;有些情况下我们不想在应用程序启动后立即启动它。 要动态启动或停止 Kafka Listener&#xff0c;我们需要三种主要方法…

Docker save load 镜像 tag 为 <none>

一、场景分析 我从 docker hub 上拉了这么一个镜像。 docker pull tomcat:8.5-jre8-alpine 我用 docker save 命令想把它导出成 tar 文件以便拷贝到内网机器上使用。 docker save -o tomcat-8.5-jre8-alpine.tar.gz 镜像ID 当我把这个镜像传到别的机器&#xff0c;并用 dock…

计算机网络(三)——局域网和广域网

一、局域网 特点&#xff1a;覆盖较小的地理范围&#xff1b;具有较低的时延和误码率&#xff1b;使用双绞线、同轴电缆、光纤传输&#xff0c;传输效率高&#xff1b;局域网内各节点之间采用以帧为单位的数据传输&#xff1b;支持单播、广播和多播&#xff08;单播指点对点通信…

浅谈云计算01 | 云计算服务的特点

在当今数字化时代&#xff0c;云计算作为一种强大的技术解决方案&#xff0c;正逐渐改变着企业和个人对信息技术的使用方式。本文将详细探讨云计算的五个主要特点&#xff0c;包括按需自助服务、广泛的网络接入、资源池化、快速弹性伸缩以及可计量服务。 一、按需自助服务 云…

【Qt】01-了解QT

踏入QT的殿堂之路 前言一、创建工程文件1.1 步骤介绍1.2 编译介绍方法1、方法2、编译成功 二、了解框架2.1 main.cpp2.2 .Pro文件2.2.1 注释需要打井号。2.2.2 F1带你进入帮助模式2.2.3 build文件 2.3 构造函数 三、编写工程3.1 main代码3.2 结果展示 四、指定父对象4.1 main代…