Vue动态样式方法总结

news2025/2/24 16:05:06

Vue动态样式实现方式

在这里插入图片描述

前言

本文主要针对 Vue2.x 来展开vue的动态css样式方法归纳。
如果亲爱的读者们需要,后续会更新Vue3的动态样式方法或者使用TypeScript来实现。
CSS动态样式 一般用于设置某个字段根据状态显示不同的样式。
比如 字段A,平时返回0,正常显示字段黑色;返回1时,显示异常,文字颜色为红色

Vue动态样式实现方式

  • :style 动态设置style行内样式,优先级最高
  • :class 动态设置class类名
  • method:{} 调用方法return返回
  • v-if/v-else + 复合类名

:style

// 1、三元表达式  对象形式
<div class="name" :style="{color:state == true ? 'red' : 'black'}">麻辣香锅</div>
<div class="name" :style="state == true ? 'color:red' : 'color:black'">麻辣牛锅</div>
// 2、直接对象形式  
<div class="name" :style="{fontSize:`${size}px`}">麻辣火锅</div>
// 3、数组形式
<div class="name" :style="[styleObj1,styleObj2]">麻辣香锅</div>
// 4、复合型
<div class="name" :style="[{color:state ? 'red' : 'black'},styleObj2]">麻辣香锅</div>
// 4、调用方法形式
<div class="name" :style="setStyle()">麻辣鸡煲</div>
export default {
	data(){
    	return{
            state:1,
            size:14,
            Obj1:{
                color:red
            },
            Obj2:{
                fontSize:12px
            }
        }
	},
    method:{
        setStyle(){
            let obj = {
                color:'red',
                fontSize:'14px'
            }
            return obj
        }
    }
}
<style>
  .name{
    color:yellow;
    font-size:12px;
  }
</style>

注意:

  • HTML上调用的所有东西,最好是该vue实例的data、method、watch、computed等本身的变量和函数,一般不要直接调用外部的函数,比如是工具类untils的方法,有需要可以在data中新建变量绑定在HTML上,在data方法或其他方式去调用。
  • js的样式属性名注意用驼峰命名法,比如font-size —— fontSize

:class

// 1、三元表达式,对象/数组形式,单个条件
<div class="name" :class="{'success-text':state == true}">广式煲仔饭</div>
<div :class="['name', state == true ? 'success' : '']">广式煲仔饭</div>
// 相当于
<div class="name" :class="state == true ? 'success-text : ''">广式煲仔饭</div>

// 2、对象形式,多个条件
<div class="name" :class="{'success-text':state == true,'success-text2':state2 == true}">广式煲仔饭</div>

// 3、data形式或者computed形式   (缺点就是类名一定只能是一个单词)
<div class="name" :class="classObject">广式煲仔饭</div>
<div class="name" :class="classObject_cp">广式煲仔饭</div>

// 4、mothod方法
<div class="name" :class="setClass()">广式煲仔饭</div>
<button @click="state = state ? false : true">改变state状态</button>

export default {
  data () {
    return {
      state:true,
      state2:true,
      styleObj1:{
        color:'red'
      },
      styleObj2:{
        fontSize:'14px'
      },
      classObject:{
        success_text:true,  // 因为变量名不能用-来隔开,所以只能匹配到_或只有一个单词的类名
        success_text2:true
      }
    }
  },
  computed:{
    classObject_cp:function(){
      return{
        success:this.state,
        success2:this.state2
      }
    }
  },
  methods: {
    setClass(){
      return {
        success_text:this.state,
        success_text2:this.state2
      }
    },
    changeState(){
      this.state = this.state ? false : true
    }
  }
}
<style>
  .name{
    color:yellow;
    font-size:12px;
  }
  .error-text{
    color:red;
  }
  .success-text{
    color:greenyellow;
  }
  .success-text2{
    font-size:16px;
    font-weight: 600;
  }
  .success{
    color:greenyellow;
  }
  .success2{
    font-size:16px;
    font-weight: 600;
  }
</style>
  • :class 目标就是通过判断找到对应的css类名

  • 方法3或4,注意类名只能是单个单词或_连接等,此外的,都不行,因为js变量名是以单个单词组成的。
    在这里插入图片描述
    比如这里success-text,变量无法表达出来,就算了驼峰命名也不行,因为successText是类名,不像:style行内式,是作为css属性名。

  • :style优先级高,无需考虑本标签元素class的属性,因为一定会被style相同的属性所覆盖;

v-if/v-else + 复合类名

        <div class="father">
          <div class="child success-text">child</div>
          <div class="child">
            <div v-if="state == true" class="success-text">child</div>
            <div v-else-if="state == false" class="error-text">child</div>
            <div v-else>--</div>  
          </div>
          <div class="child">child</div>
        </div>

    <style>
        .father{
            color:black
        }
        .child{
            fotn-size:16px
        }
        .success-text:{
            color:green
        }
        .error-text{
            color:red
        }
    </style>

结尾

纸上得来终觉浅,
绝知此事要躬行。

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

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

相关文章

富文本编辑器介绍

1、富文本编辑器的意义 普通的文本框&#xff08;如input, text&#xff09;只能输入纯文本以及 Emoji&#xff08;只不过是特殊编码的文本&#xff09;&#xff0c;如果只是简简单单写些纯文本的内容&#xff08;比如表单&#xff0c;简单的评论等&#xff09;&#xff0c;这…

包管理工具Yarn的使用和命令总结

大家好&#xff0c;今天总结了一下Yarn这个包管理工具的使用&#xff0c;虽然Npm 已经奠定了前端工程基础&#xff0c;但是追求完美的前端程序员们又基于 Npm 不足的地方&#xff0c;提供了新的完善思路&#xff0c;针对如 Npm 安装包的速度问题&#xff0c;包的版本问题加以改…

css 实现虚线效果的3种方式详解

一、效果 首先可以看一下下图显示的实现效果&#xff1a; 用三种方式实现了虚线效果&#xff1a; 点击查看demo代码 二、实现 1、border 属性 查看 mdn 的 border&#xff0c;我们知道 border 可以用于设置一个或多个以下属性的值&#xff1a;border-width、border-style、…

【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

&#x1f935;‍♂️ 个人主页: 计算机魔术师 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f310; 推荐一款找工作神器网站: 点击跳转牛客网 |笔试题库|面试经验|实习招聘内推| 还没有账户的小伙伴 速速点击链接…

vue系列(三)——手把手教你搭建一个vue3管理后台基础模板

目录 一、前言&#xff1a; 二、网站页面分析 三、开发步骤 &#xff08;一&#xff09;、安装element &#xff08;二&#xff09;、安装使用svg插件 &#xff08;三&#xff09;、编写主界面框架代码 &#xff08;四&#xff09;、编写菜单栏 &#xff08;五&#xff0…

如何使用wireshark抓取HTTPS数据包?

1、wireshark 抓包为什么不显示出来&#xff1f; wireshark 是基于网络层的抓包工具&#xff0c;通过捕获通信双方的TCP/IP包实现内容提取。对于应用层的数据&#xff0c;如果应用层协议是公开的&#xff0c;就可以直接显示数据。处理HTTPS 协议时&#xff0c;因为不知道客户端…

前端知识——css之flex布局

1.基本概念 flex布局是一种布局模型&#xff0c;经常被称之为flexbox&#xff0c;使用flex布局之后&#xff0c;他会给子元素提供强大空间分配和对齐能力。 在没有使用flex布局之前&#xff0c;常用布局有&#xff1a;流式布局&#xff0c;浮动布局&#xff0c;定…

Vite代理解决跨域问题

Vite代理解决跨域问题 我们在编写前端项目的时候&#xff0c;经常会遇到跨域的问题&#xff0c;当我们访问后端 API 的 URL 路径时&#xff0c;只要域名、端口或访问协议&#xff08;如 HTTP 和 HTTPS&#xff09;有一项不同&#xff0c;就会被浏览器认定为跨域。另外我们也会…

小程序真机调试提示系统错误

Error: 系统错误&#xff0c;错误码&#xff1a;80051,source size 7935KB exceed max limit 2MB [20220929 16:18:58][wxfc8aa5984cac7f72] [1.06.2208010][win32-x64]// 说明你源文件大小为7985kb 超过了2M 所以编译失败解决方法 1. 压缩项目中的图或转为base64格式 …

【Spring+SpringMVC+Mybatis】Spring+SpringMVC+Mybatis实现前端到后台完整项目

文章目录&#x1f3f4;‍☠️SpringMVC简介SpringMVC是什么SpringMVC的基础架构SpringMVC的优点&#x1f3f3;️‍&#x1f308;SpringMVC接管Web说明三层框架SpringMVC的简单开发&#x1f6a9;Spring搭建&#x1f6a9;Mybatis搭建&#x1f3c1; Spring整合Mybatis✅结语&#…

(element-ui)取消el-table的hover状态,取消高亮显示

文章目录前言方法一 ------覆盖css样式方法二------卸载掉背景颜色&#xff08;类似于方法一&#xff09;方法三------使用函数方法方法四------禁用鼠标悬浮怎么办&#xff1f;究极解决------将错就错前言 在使用element-ui的el-table表格的过程中&#xff0c;会发现&#xf…

VsCode配置JavaWeb(最新)

我个人是很喜欢VsCode的&#xff0c;开源免费、功能全面。所以为了方便&#xff0c;我把我几乎所有的运行都集成到了VsCode上来&#xff0c;JavaWeb也不例外。 前言 之前也在CSDN上看到有些博主写了配置方法&#xff0c;但是很不幸的是&#xff0c;插件Tomcat for java已经不可…

Web过滤器:Filter

Filter 概述工作原理生命周期web.xml配置的常用节点FilterConfig类过滤器链FilterChainHttpFilter的简化设计自动登录功能的改进验证登入页面的改进浏览器的缓存功能概述 Filter过滤器,是Servlet技术中最实用的技术,能够管理Web服务器的所有Web资源,实现信息拦截、权限访问控…

vue动态路由添加,vue-router的addRoute方法实现权限控制,添加根路由和子路由

addRoute路由分为静态路由和动态路由静态路由和动态路由的优缺点动态路由实现思路&#xff1a;动态路由遇到的问题与解决方式动态添加子路由路由分为静态路由和动态路由 静态路由和动态路由的优缺点 1、中大型项目&#xff0c;采用的都是动态路由方式,因为后台导航目录运营人…

Vue3如何封装组件?

&#x1f525;&#x1f525;&#x1f525;欢迎关注csdn前端领域博主: 前端小王hs &#x1f525;&#x1f525;&#x1f525;email: 337674757qq.com &#x1f525;&#x1f525;&#x1f525;前端交流群&#xff1a; 598778642 在开发Vue3项目的过程中&#xff0c;我们经常会使…

H5页面跳转微信小程序时:wx.miniProgram.navigateTo 报错 ‘wx‘ is not defined no-undef

有一个功能&#xff0c;需要从H5页面跳转到微信小程序&#xff0c;查了微信官方文档&#xff1a;只需要引入js文件&#xff0c;然后直接使用即可&#xff1a; 1&#xff1a;引用&#xff1a; 当然也可以下载下来直接引用项目具体位置的js文件 2: 使用&#xff1a; 然后一直报错…

vue3 hooks使用

vue3 hooks使用 今天我们稍微说一下 vue3 项目中的 hooks 的使用&#xff0c;其实这个 hooks 呢是和 vue2 当中的 mixin 是类似的&#xff0c;学习过 vue2 的小伙伴一定对 mixin 一定比较熟悉&#xff0c;就算没用过也一定了解过&#xff0c;也就是混入&#xff0c;通过 mixin …

useDark的使用方法以及Element-Plus深色主题切换案例(vue3)

useDark 顾名思义&#xff0c;是否使用深色模式&#xff0c;useDark它是通过读取localStorage/sessionStorage的存储值&#xff08;key 是可自定义的&#xff09;。从而设置html的class。VueUse的官方案例使用了Tailwind CSS 偏好的暗模式。因为我们不一定都用得到Tailwind CSS…

vue实现本地预览word(docx)、excel(xlsx)、pdf文件

vue实现本地预览word(docx)、excel(xlsx)、pdf文件 实现效果&#xff1a; 通过点击预览&#xff0c;浏览器打开新标签页展示文件内容 word效果&#xff1a; pdf效果&#xff1a; excel效果&#xff1a; 前期准备&#xff1a; word插件&#xff1a; npm install --save …

【TFS-CLUB社区 第5期赠书活动】〖Python OpenCV从入门到精通〗等你来拿,参与评论,即可有机获得

文章目录❤️‍&#x1f525; 赠书活动 - 《Python OpenCV从入门到精通》❤️‍&#x1f525; 编辑推荐❤️‍&#x1f525; 内容提要❤️‍&#x1f525; 赠书活动 → 获奖名单❤️‍&#x1f525; 赠书活动 - 《Python OpenCV从入门到精通》 内容简介&#xff1a; 《Python O…