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 相关文章推荐
ExtJS下grid的一些属性说明
Dec 13 Javascript
JavaScript DOM 学习第七章 表单的扩展
Feb 19 Javascript
JQuery获取文本框中字符长度的代码
Sep 29 Javascript
JavaScript词法作用域与调用对象深入理解
Nov 29 Javascript
Javascript验证Visa和MasterCard信用卡号的方法
Jul 27 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
妙用Angularjs实现表格按指定列排序
Jun 23 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
解决vue keep-alive 数据更新的问题
Sep 21 Javascript
vue数据操作之点击事件实现num加减功能示例
Jan 19 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
May 01 Javascript
Vue和React有哪些区别
Sep 12 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 观察者模式的实现代码
2013/05/10 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
PHP url的pathinfo模式加载不同控制器的简单实现
2016/08/12 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
Laravel框架实现简单的学生信息管理平台案例
2019/05/07 PHP
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
javascript 系统文件夹文件操作及参数介绍
2013/01/08 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
Python连接SQLServer2000的方法详解
2017/04/19 Python
Python3数字求和的实例
2019/02/19 Python
500行Python代码打造刷脸考勤系统
2019/06/03 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python滑块验证码的破解实现
2019/11/10 Python
python GUI库图形界面开发之PyQt5控件QTableWidget详细使用方法与属性
2020/02/25 Python
python3跳出一个循环的实例操作
2020/08/18 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
H5 canvas实现贪吃蛇小游戏
2017/07/28 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
英格兰足协官方商店:England Store
2019/07/12 全球购物
护理专业大学生自我推荐信
2014/01/25 职场文书
致垒球运动员加油稿
2014/02/16 职场文书
自我鉴定总结
2014/03/24 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
2015年党建工作总结
2015/03/30 职场文书
物业工程部经理岗位职责
2015/04/09 职场文书
Python上下文管理器Content Manager
2021/06/26 Python
浅谈Redis缓冲区机制
2022/06/05 Redis