Vue.js中对css的操作(修改)具体方式详解


Posted in Javascript onOctober 30, 2018

使用v-bind:class或者v-bind:style或者直接通过操作dom来对其样式进行更改;

1.v-bind:class || v-bind:style

其中v-bind是指令,: 后面的class 和style是参数,而class之后的指在vue的官方文档里被称为'指令预期值'(这个不必深究,反正个人觉得初学知道他叫啥名有啥用就好了)同v-bind的大多数指令(部分特殊指令如V-for除外)一样,除了可以绑定字符串类型的变量外,还支持一个单一的js表达式,也就是说v-bind:class的'指令预期值'除了字符串以外还可以是对象或者数组(‘v-bind:'中的v-bind可省略)。

1.1:对象语法:

通过对象来绑定v-bind:class=“{'css类名':控制是否显示(true or false)}”

<template>
 <div>
 <div class='mycolor' :class="{'colordisplay':display}"><span>1.1我的对象更改&&绑定test</span></div>
 </div>
</template>
<script>
 export default {
 name: 'mytest',
 data() {
 return {
 display: true
 }
 },
 mounted() {},
 computed: {},
 methods:{}
 }
</script>
<style>
 .colordisplay {
 display: inline;
 background: red;
 border: 1px solid blue
 }
</style>

如果display为true,那么此时该部分的class就是 class="mycolor colordisplay",通过设置display的值就可以控制colordisplay的显示

如果要设置绑定多个class的话就和正常的对象键值对一样中间用逗号隔开就可以了v-bind:class="{'colordisplay':display,'ispay':pay}"

1.2:内联样式:

v-bind:style='mycolor'

template

<div :style='mypagestyle'><span>1.2我的样式内联更改&&绑定test</span></div>

data

mypagestyle:{color: 'yellow',background:"blue"},

1.3:数组语法:

也可以通过数组来绑定v-bind:style='[mycolor1,mycolor2]'

<div :style="[myarr,myarrtest]"><span>1.3我的数组更改&&绑定test</span></div>

 然后设置返回的数据为

myarr:{color: 'white'},
myarrtest:{background:'#000',display:'inline'},

2.计算属性

也可以通过计算属性计算(适用于较为复杂判断)样式

<div class='computed' :class='compuretu'>2.计算属性判断</div>

将计算属性的返回值作为类名,通过判断serd和slid的值来控制样式的显示与否

data() {
 return {serd:true,slid:true}
 }, 
 computed: {
 compuretu: function() {
 return {compuretu: this.serd && this.slid}
 }
 }

设置样式

.compuretu{color:white;background: red}

3.操作节点

由于vue本身是虚拟dom如果通过document来进行节点样式更改的时候有可能会出现'style' is not definde的错误,

这个问题的解决方式就必须得对vue 的理解要求更高一层了,它可以通过在vue本身的周期mounted函数里用ref和$refs 来获取样式,来完成对其样式的更改:示例如下:

<template>
<div>
<div style=“color: green;” ref="abc"><span>我的test</span></div>
</div>
</template>
<script>
export default {
name: 'mytest',
data() {
return {}
},
mounted() {console.log(this.$refs.abc.style.cssText)}
}
<script>
<style>
</style>

说明:

1.ref被用来给元素(子组件)注册引用信息;

2.vm.$refs 一个对象,持有已注册过 ref 的所有子组件(或HTML元素);

使用:在 HTML元素 中,添加ref属性,然后在JS中通过vm.$refs.属性来获取

上述会将style的内容全部输出(color: green;)

这样的话对其进行更改就可以对相应的属性直接更改(this.$refs.abc.style.color=red

<template>
 <div>
 <div :class='{mycss}'><span>我的单个class属性的test</span></div>
 <div class='mycolor' :class="{'colordisplay':display}"><span>1.1我的对象更改&&绑定test</span></div>
 <div :style='mypagestyle'><span>1.3我的样式内联更改&&绑定test</span></div>
 <div :style="[myarr,myarrtest]"><span>1.3我的数组更改&&绑定test</span></div>
 <div class='computed' :class='compuretu'>2.计算属性判断</div>
 <div style="color: green;" ref="abc"><span>3.我的dom更改test</span></div>
 </div>
</template>
<script>
 export default {
 name: 'mytest',
 data() {
 return {
 serd:true,
 slid:true,
 mycss: {
  color: ''
 },
 mypagestyle:{
  color: 'yellow',
  background:"blue"
 },
 myarr:{
  color: 'white'
 },
 myarrtest:{
  background:'#000',
  display:'inline'
 },
 display: true
 }
 },
 mounted() {
 console.log(this.$refs.abc.style.cssText)
 this.$refs.abc.style.color = 'red' //修改属性
 this.$refs.abc.style.background = 'black' //新增属性
 this.$refs.abc.style.display = 'inline' 
 console.log(111) 
 console.log(this.$refs.abc.style.display) 
 },
 computed: {
 compuretu: function() {
 return {
  compuretu: this.serd && this.slid
 }
 }
 },
 methods:{
 
 }
 }
</script>
<style>
 .mycss {
 color: blue
 }
 
 .colordisplay {
 display: inline;
 background: red;
 border: 1px solid blue
 }
 
 .mycolor {
 color: orange
 }
 
 .computed {
 border: 1px solid yellow
 }
 .compuretu{
 color:white;
 background: red;
 }
</style>

当然最后这种方式对于初入门的朋友来讲可能会有点理解不透,所以我更建议大家使用前几种方式

总结

以上所述是小编给大家介绍的Vue.js中对css的操作(修改)具体方式详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript下阻止表单重复提交、防刷新、防后退
Aug 17 Javascript
谈谈关于JavaScript 中的 MVC 模式
Apr 11 Javascript
JavaScript中判断对象类型的几种方法总结
Nov 11 Javascript
jQuery前端框架easyui使用Dialog时bug处理
Dec 05 Javascript
jQuery实现的向下图文信息滚动效果
May 03 Javascript
基于jquery实现智能表单验证操作
May 09 Javascript
JavaScript数据结构链表知识详解
Nov 21 Javascript
轻松学习Javascript闭包
Mar 01 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
vue安装遇到的5个报错及解决方法
Jun 12 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
Jun 29 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
vue组件中的样式属性scoped实例详解
Oct 30 #Javascript
node上的redis调用优化示例详解
Oct 30 #Javascript
elementUI 设置input的只读或禁用的方法
Oct 30 #Javascript
Vue.js 父子组件通信的十种方式
Oct 30 #Javascript
vue通过style或者class改变样式的实例代码
Oct 30 #Javascript
vue通过cookie获取用户登录信息的思路详解
Oct 30 #Javascript
微信小程序实现左滑修改、删除功能
Oct 19 #Javascript
You might like
php 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
php实现读取超大文件的方法
2014/07/28 PHP
纯php生成随机密码
2015/10/30 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
基于jquery的跨域调用文件
2010/11/19 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
jQuery+PHP星级评分实现方法
2015/10/02 Javascript
javascript+css3 实现动态按钮菜单特效
2016/02/06 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
JavaScript实现左右下拉框动态增删示例
2017/03/09 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
微信小程序支付PHP代码
2018/08/23 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
ES6 Proxy实现Vue的变化检测问题
2019/06/11 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
python 生成不重复的随机数的代码
2011/05/15 Python
python3图片转换二进制存入mysql
2013/12/06 Python
python使用pyhook监控键盘并实现切换歌曲的功能
2014/07/18 Python
使用Python编写类UNIX系统的命令行工具的教程
2015/04/15 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
关于多元线性回归分析——Python&amp;SPSS
2020/02/24 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
戴森英国官网:Dyson英国
2019/05/07 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
杠杆的科学教学反思
2014/01/10 职场文书
七夕相亲活动策划方案
2014/08/31 职场文书
学校国庆节活动总结
2015/03/23 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
慰问信的写作格式及范文!
2019/06/24 职场文书