位置: IT常识 - 正文

Vue 通过style属性、class属性来动态修改CSS样式(vue style import)

编辑:rootadmin
Vue 通过style属性、class属性来动态修改CSS样式

推荐整理分享Vue 通过style属性、class属性来动态修改CSS样式(vue style import),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue style import,vue的:style,vue中style的scoped,vue绑定style属性里的属性,vue中style用法,vue中style的scoped,vue-styleguidist,vue中style的scoped,内容如对您有帮助,希望把文章链接给更多的朋友!

目录

前情提要

总结

修改class属性总结

修改style属性总结

修改class属性

修改style属性

整活时间,超级变变变

前情提要

需求:根据data某些属性,动态修改某个节点的样式或者class

1、首先很重要的一点是 v-bind: 引号内的是JS表达式而不是单纯一个值或者字符串,判断时候使用的是truthy真值,而不是布尔值,大白话就是会进行类型转换。就当成你在script标签中写的JS就行了(注意区分JS表达式和JS代码)

JS表达式:产生一个值,可以放在任何需要值的地方,用处非常大,如三目表达式、1+'2'、Math.max(a,b)、vue里的有返回值的methods,computed,props里的属性等等JS代码(语句): 如if(x>1){.......}

2、另一点是,你需要保证动态的变量被vue所管理,能监听到变化,深入响应式原理 — Vue.js

如果没有动态更新,请考虑数据是不是响应式,浏览器支持(IOS某些版本有问题),页面渲染问题($nexttick)等因素。

这样节点才会重新渲染。

PS:动态修改class或Style不会和原生的属性冲突,效果是加法,你可以静态和动态都写。

总结

老样子,上来先给出总结,来自于vue官网Class 与 Style 绑定 — Vue.js的变通

修改class属性总结<!-- 三目表达式判断,给的是类名--><div :class="isSquare?'square':'circular'"></div><div :class="[isChange?'blue':'red',isSquare?'square':'circular']"></div><!--布尔值--><div :class="{'square':isSquare,'square-color':isColor}"></div>修改style属性总结<div class="square" :style="{'background-color':isChange?'blue':'red','color':isChange?'white':'black'}">测试</div><div class="square" :style="{'height':data_height+'px','width':data_width+'px'}">测试</div>

总结只是让会的人勾起回忆的,如果刚接触,或者想看更多变式,请看下面详解。

特别注意: 注意属性必带的双引号""已经被使用了,所以双引号内表示字符串只能使用单引号' ',否则会出现匹配冲突。

修改class属性

1、利用JS表达式提供一个字符串

<!--HTML部分 --><div :class="isSquare?'square':'circular'"></div><!--isSquare真值为真,等同于--><div class="square"></div><!--isSquare真值为假,等同于--><div class="circular"></div>

这种方法用得比较多,你可以变化着JS表达式的内容,你会发生最后的行为和原生的操作没有太大的区别,易读性比较好。

如果需要多个,则变为数组(这种行为不太规范,也有点怪,推荐使用下面vue的官方方法)

<div :class="[isChange?'blue':'red',isSquare?'square':'circular']"></div>

2、vue提供的对象方法

Vue 通过style属性、class属性来动态修改CSS样式(vue style import)

通过真值判断是否应用这个class,注意尽量不要用对象键名的简写否则容易出错,观察也不便。如果键名中有短横线'-'则必须使用完整字符串形式, {'hello-class':'hello'}。

<!--HTML部分 --><div class="hello" :class="{'square':isSquare,'square-color':isColor}"></div><!--此时isSquare和isColor真值为真,等同于--><div class="hello square square-color"></div>//data部分data:{ isSquare:true, isColor:1}

还有一点,不要忘了对象的键值也是一个JS表达式,也就是说你可以这样写

<!--HTML部分 --><div class="hello" :class="{'square':isSquare="是方的"?1:false,'square-color':isColor}"></div><!--此时isSquare和isColor真值为真,等同于--><div class="hello square square-color"></div>//data部分data:{ isSquare:'是方的', isColor:1}

是不是让人眼前一黑

3、数组对象写法

其实还有一个数组里包对象的,但其实多个class名,一个对象就能完成的,数组里套对象,好像有点脱裤子放屁,看你们要怎么使用吧。

<!--HTML部分 --><div class="hello" :class="[{'square':isSquare},{'square-color':isColor}]"></div><!--此时isSquare和isColor真值为真,等同于--><div class="hello square square-color"></div>

JS表达式目的是提供一个值,也就是说你可以把这个值当成data里的变量,意味着你也可以整个对象/数组写在data里。

<!--HTML部分 --><div :class="divObject"></div>//data部分data:{ divObject:{ 'hello':true, 'isSquare':true }}

是不是特别简单

只要是JS表达式的变式后面就不再展示了,请自行变通。

修改style属性

1、对象的写法(最推荐、最舒服的)

<!--HTML部分 --><div class="square" :style="{'background-color':isChange?'blue':'red','color':isChange?'white':'black'}">测试</div>

附上vscode截图 因为csdn的代码块实在不怎么好看出来哪些是动态的变量

vscode截图

注意!CSS property 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,要用引号括起来) 

所以以下同等效果,同时三目运算符后的字符串也能换成data中的数据。

<!--HTML部分 --><div class="square" :style="{backgroundColor:isChange?color_active:color_disactive,color:isChange?textColor_active:textColor_disactive}">测试</div>

vscode截图

//date部分data:{ isChange:false, color_active:'blue', color_disactive:'red', textColor_active:'white', textColor_disactive:'black' }

2、数组对象写法

同样的,和class一样,有数组包对象的写法。

<!--HTML部分 --><div class="square" :style="[{'background-color':isChange?'blue':'red'},{'color':isChange?'blue','red'}]"></div>//date部分data:{ isChange:false, color_active:'blue', color_disactive:'red' }

当然,你一样可以利用JS表达式将对应的对象写在data里,这样属性多时候简洁一些,修改也可以直接修改对象里的属性。这样使用JS修改某个Style属性,区别于直接修改一整个class。

整活时间,超级变变变

看完上面,大家会发现,咦?style属性为什么没有直接提供一个字符串呢,当然有。

<div class="container" :style="isSquare?'background-color:'blue'':''"></div>

哒哒哒,写完,好了,匹配错误!记得我们开头说过的吗,引号匹配的问题。此时无论双引号还是单引号都不能表达这个blue的字符串。而且这也写指定样式很不方便。

那这怎么办呢,这时候,模板字符串就派出用场了。模板字符串最后会解析成字符串,所以这也能当做一个JS表达式。

<div class="container" :style="`background-color:${isChange?'pink':'orange'}`"></div><!-- 或者这样 --><div class="container" :style="'background-color:'+`${isChange?'pink':'orange'}`"></div>

模板字符串中的插值语法${}和vue标签里的插值语法{{}}一样也是一种JS表达式,也就是开始套娃了。

所以多个属性时,可以使用模板字符串,因为使用了对象,所以需要注意冒号的写法不能包括在字符串里。

<div class="container" :style="{'background-color':`${isChange?'yellow':'green'}`,'border-radius':`${isSquare?'50%':'0'}`}"></div>

以上的代码在某些语法检查中会提示错误导致下面的代码没有代码提示,不建议使用,但是不影响执行。

时间差不多,先分享到这,以后想起什么再继续写。手动码字不容易求个点赞,如有错,自己修改即可。

本文链接地址:https://www.jiuchutong.com/zhishi/310748.html 转载请保留说明!

上一篇:mysql中SQL语句的使用注意(mysql基本sql语句大全(基础用语篇))

下一篇:帝国CMS提示“您来自的链接不存在”怎么解决?(帝国cms使用手册)

  • 论坛签名网站推广方法分析(论坛签名营销)

    论坛签名网站推广方法分析(论坛签名营销)

  • vivox70怎么显示流量(vivox70怎么显示中国移动)

    vivox70怎么显示流量(vivox70怎么显示中国移动)

  • 钉钉接龙怎么发起(钉钉接龙怎么发起电脑操作)

    钉钉接龙怎么发起(钉钉接龙怎么发起电脑操作)

  • 微信群发看不出被删除(微信群发看不到别人是不是删除你)

    微信群发看不出被删除(微信群发看不到别人是不是删除你)

  • 华为nova5pro指纹在哪(华为nova5pro指纹解锁不灵敏怎么办)

    华为nova5pro指纹在哪(华为nova5pro指纹解锁不灵敏怎么办)

  • 苹果x后压屏和原装屏的区别(iphonex后压屏和原装屏)

    苹果x后压屏和原装屏的区别(iphonex后压屏和原装屏)

  • 苹果8p贴了很多膜都有白边(苹果8p贴膜总是有白边怎么办)

    苹果8p贴了很多膜都有白边(苹果8p贴膜总是有白边怎么办)

  • 魅族17为什么没有光学防抖(为什么我的魅族17没有flyme9)

    魅族17为什么没有光学防抖(为什么我的魅族17没有flyme9)

  • 情侣黄钻一个人能开吗(情侣黄钻一个人过期了另一个人还会显示嘛)

    情侣黄钻一个人能开吗(情侣黄钻一个人过期了另一个人还会显示嘛)

  • 三星什么时候更新安卓10(三星什么时候更新安卓14)

    三星什么时候更新安卓10(三星什么时候更新安卓14)

  • 手机后盖碎了有影响吗(手机后盖碎了有危险吗)

    手机后盖碎了有影响吗(手机后盖碎了有危险吗)

  • qq注销了几天可以完全注销(qq注销了几天可以恢复)

    qq注销了几天可以完全注销(qq注销了几天可以恢复)

  • oppoa11什么时候上市的(oppoa11什么时候升级coloros13)

    oppoa11什么时候上市的(oppoa11什么时候升级coloros13)

  • 抖音里关注请求是什么意思(抖音里关注请求是谁发出的)

    抖音里关注请求是什么意思(抖音里关注请求是谁发出的)

  • 手机搜索不到车子蓝牙(手机搜索不到车载)

    手机搜索不到车子蓝牙(手机搜索不到车载)

  • 荣耀v20怎么关闭后台运行(荣耀v20怎么关闭纯净模式)

    荣耀v20怎么关闭后台运行(荣耀v20怎么关闭纯净模式)

  • 小米手环3和小米手环4表带是一样的吗(小米手环3和小米手环3nfc区别)

    小米手环3和小米手环4表带是一样的吗(小米手环3和小米手环3nfc区别)

  • 相机拍慢动作为什么闪屏(相机拍摄慢动作怎么调节)

    相机拍慢动作为什么闪屏(相机拍摄慢动作怎么调节)

  • bakdb是什么文件(bak文件是什么意思)

    bakdb是什么文件(bak文件是什么意思)

  • vivox23幻彩版手机防水吗(vivox23幻彩版手机屏幕多大)

    vivox23幻彩版手机防水吗(vivox23幻彩版手机屏幕多大)

  • QQ音乐总显示无网怎么办(qq音乐无响应怎么回事)

    QQ音乐总显示无网怎么办(qq音乐无响应怎么回事)

  • p30pro和p20pro的区别(p20pro和p30pro哪个性价比高)

    p30pro和p20pro的区别(p20pro和p30pro哪个性价比高)

  • chat gpt 国内版免费网站(chat gpt 国内版免费手机)

    chat gpt 国内版免费网站(chat gpt 国内版免费手机)

  • 一般纳税人开普票税率是3%还是13%
  • 补提去年所得税会计分录怎么写
  • 税务筹划的基本前提是
  • 环境保护税的纳税期限
  • 差旅费计入工资成本吗
  • 贸易公司经营范围有限制吗
  • 信用减值损失借贷方表示什么意思
  • 固定资产一次性折旧政策2023
  • 购买业务委托书计入什么科目
  • 百旺税盘网络连接不上
  • 临时工工资能否用公户支付
  • 差旅费属于什么支出类型
  • 出售固定资产的净收益
  • 一年内到期的非流动负债包括哪些科目
  • 每个月计提工资没有发怎么办
  • 小企业收到下列票据后,银行存款账户不变的是
  • 正规沙场需要缴纳税吗
  • 接收虚开增值税专用发票要判刑吗
  • 怎么计提企业所得税
  • 小型微利企业所得税优惠政策2022
  • 一般纳税人出租不动产增值税税率
  • 纳税人核定征收企业所得税
  • 确认并支付本年职工工资
  • 安装设备用的材料计入什么科目
  • 增值税即征即退属于政府补助吗
  • 增值税红字发票是什么意思
  • 小规模计提缴纳增值税
  • 鸿蒙密码锁设置密码的方法
  • 广告公司车身广告
  • 如何修改去年的智慧团建评议结果
  • 生产企业自营出口应税消费品
  • 页面白屏可能原因前端
  • 库存现金总分类账怎么登记
  • php autoload用法
  • 固定资产清理主要核算什么
  • 子公司注销母子关系流程
  • 计算机视觉的未来发展方向有哪些
  • 应交税费中印花税是什么
  • python中字符串与数字相乘的结果
  • java多线程经典案例
  • springboot怎么配置拦截器
  • element级联选择器动态获取数据
  • 3步搞定纯真ip数量
  • 记 vue-cli-plugin-dll 使用,优化vue-cli项目构建打包速度
  • 在建工程转固定资产会计科目
  • 航空运输电子客票行程单查验
  • 营业收入净额是销售收入净额吗
  • 股东不任职,是否可以参与企业经营
  • 电商刷单返现如何做账务处理合适?
  • 营改增后税率
  • 递延收益金额怎么算
  • 土地补偿费怎么算
  • 支付大型设备税率是多少
  • 收到工会经费怎么指定现金流入
  • 出口退税暂不抵税怎么办
  • 公司支付给实习生的报酬如何税前扣除?
  • sql刷新快捷键
  • ubuntu debian
  • nhaspx.exe是什么
  • mac安装win10键盘失灵
  • 微软官方解决升级问题
  • 服务器不支持密码鉴定
  • win7系统无法更改主题
  • opengl es2.0
  • android中数据存储
  • Android游戏开发教程
  • node.js中的http.get方法使用说明
  • shell脚本简单例子
  • 简述javascript的常用控制结构
  • ubuntu创建虚拟网卡
  • 图片在线预览html5
  • js的异步解决方案有哪些
  • android 5.1 WIFI图标上的感叹号及其解决办法
  • 个人可以到税务开物业费的
  • 唐山宴订餐电话是多少
  • 百旺怎么导出数据
  • 票据代码和票据号码哪个是票据编号
  • 税务局风险防控形成长远
  • 查博士报告怎么查真假
  • 费减备案合格后怎么操作?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设