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 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
jQuery ajax 路由和过滤器使用说明
Aug 02 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
Webpack 实现 Node.js 代码热替换
Oct 22 Javascript
JavaScript中循环遍历Array与Map的方法小结
Mar 12 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
Mar 25 Javascript
jQuery Collapse1.1.0折叠插件简单使用
Aug 28 jQuery
使用javascript做在线算法编程
May 25 Javascript
vue自定义移动端touch事件之点击、滑动、长按事件
Jul 10 Javascript
Vue项目接入Paypal实现示例详解
Jun 04 Javascript
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 jQuery
Vue多选列表组件深入详解
Mar 02 Vue.js
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基础知识回顾
2012/08/16 PHP
php中的curl_multi系列函数使用例子
2014/07/29 PHP
php删除指定目录的方法
2015/04/03 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
浅析JavaScript中的常用算法与函数
2013/11/21 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
js日期联动示例
2014/05/02 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
解决vue单页面多个组件嵌套监听浏览器窗口变化问题
2020/07/30 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
2021/02/18 Vue.js
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
Python编程之多态用法实例详解
2015/05/19 Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
设计模式中的原型模式在Python程序中的应用示例
2016/03/02 Python
深入理解Django的中间件middleware
2018/03/14 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
应届生船舶驾驶求职信
2013/10/19 职场文书
计算机网络专业推荐信
2013/11/24 职场文书
实习生单位鉴定意见
2013/12/04 职场文书
生物技术专业毕业生求职信范文
2013/12/14 职场文书
博士学位自我鉴定范文
2013/12/26 职场文书
入股协议书范本
2014/11/01 职场文书
医院合作意向书范本
2015/05/08 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电