Vue实现动态样式的多种方法汇总

目录
  • 1. 三元运算符判断
  • 2. 动态设置class
  • 3. 方法判断
  • 4. 数组绑定
  • 5. computed结合es6对象的计算属性名方法

1. 三元运算符判断

<text :style="{color:state?'#ff9933':'#ff0000'}">hello world </text>
<script>
export default {
	data() {
		return {
			state: true
		}
	}
}
</script>

2. 动态设置class

2.1 主要运用于:实现循环列表中点击时,相应的元素高亮;(默认首个元素高亮)

<template>
	<div class="wrapper" v-for="(item,index) in houseList" :key="index" @click="rightTap(index)">
		<div class="houseTitle" :class="{'active' : index === rightIndex}">
			{{item.name}}
		</div>
	</div>
</template>
<script>
export default {
	data() {
		return {
			rightIndex:0,
			houseList:[]
		};
	},
	methods:{
		rightTap(index){
			this.rightIndex = index
		}
	}
}
</script>
<style lang="scss" scoped>
.wrapper{
	width: 118px;
	height: 60px;
	margin: 6px auto 0 auto;
	.houseTitle{
		font-size: 22px;
		text-align: center;
		white-space: nowrap;
		overflow: hidden;
		text-overflow: ellipsis;
	}
	.active{
		color:#2a7ffa;
		 background-color: pink;
	}
}
</style>

2.2 主要运用于:为特定数值设置相应样式;

  <div
    :class="activeId === item.id?'activeStyle':'machineBar'"
    v-for="(item,index) in List" :key="index" @click="clickEvent">
      <p>{{item.name}}</p>
  </div>

3. 方法判断

3.1 主要运用于:为不同的数据值设置相应的样式;

<template>
  <div v-for="(item,index) in houseList" :key="index">
     <div :style="getStyle(item.status)">{{item.name}}</div>
  </div>
</template>
<script>
export default {
  data(){
    return{
	  houseList:[
        {
          id:1,
          name:1,
          status:'a'
        },{
          id:2,
          name:2,
          status:'b'
        },{
          id:3,
          name:3,
          status:'c'
        }
      ]
    }
  },
  methods:{
    getStyle(e){
      console.log('值',e)
      if(e === 'a'){
        return {
          width:'60px',
          height:'60px',
          background:'yellow',
          margin: '10px auto'
        }
      }else if(e === 'b'){
        return {
          width:'60px',
          height:'60px',
          background:'red',
          margin: '10px auto'
        }
      }else if(e === 'c'){
        return {
          width:'60px',
          height:'60px',
          background:'pink',
          margin: '10px auto'
        }
      }
    }
  }
}
</script>

3.2 主要运用于:在元素多从事件下,显示相应的样式;

<template>
  <div
      class="homeWrap" :class="{'select': selected === 1,'click': clicked === 1}"
      @click="handleClick(1)" @mousedown="menuOnSelect(1)">
     主页
  </div>
</template>
<script>
export default {
  return {
      selected: 0,
      clicked: 0
  }
  methods:{
    menuOnSelect(value){
      this.selected = value;
    },
    handleClick(value){
      this.selected = 0
      this.clicked = value
    }
  }
 }
</script>
<style lang="stylus" scoped>
  .homeWrap.select
    background red
  .homeWrap.click
    background yellow
</style>

4. 数组绑定

<div :class="[isActive,isSort]"></div>
// 数组与三元运算符结合判断选择需要的class
<div class="item" :class="[item.name? 'lg':'sm']"></div>
<div class="item" :class="[item.age<18? 'gray':'']"></div>
// 数组对象结合
<div :class="[{ active: isActive }, 'sort']"></div>

data() {
  return{
    isActive:'active',
    isSort:'sort'
 }
}
// css
.active{
    /*这里写需要设置的第一种样式*/
  }
.sort{
    /*这里写需要设置的第二种样式*/
  }

5. computed结合es6对象的计算属性名方法

 <div :class="classObject"></div>

  export default {
    data(){
      return{
        isActive:true
      }
    },
    computed:{
      classObject() {
        return{
          class_a:this.isActive,
          class_b:!this.isActive
        //  这里要结合自身项目情况修改填写
        }
      }
    }
  }

// css
.class_a{
    /*这里写需要设置的第一种样式*/
}

.class_b{
   /*这里写需要设置的第二种样式*/
 }

以上就是Vue实现动态样式的多种方法汇总的详细内容,更多关于Vue实现动态样式的资料请关注我们其它相关文章!

(0)

相关推荐

  • vue 动态修改a标签的样式的方法

    公司要做一个类似今日头条的项目,用前后端分离的方式做成HTML5页面,先在微信中运行,领导说想看看效果怎么样.今日头条头部的导航是可以滚动和添加类别的,我们这个项目也是一样.所以在导航这个地方就需要在点击不同分类的同时,样式也是跟着变的,我在网上搜索了一下,发现了下面的代码,简洁清淅,不过具体网址忘记了,先把代码贴出来给大家看一下,想知道网址的可以去网上搜索一下. <!DOCTYPE html> <html lang="en"> <head> <

  • vuejs实现标签选项卡动态更改css样式的方法

    html <ul class="header-list"> <li v-cloak v-for="(item,index) in headerList" v-on:click="selectMainTheme(index)"><a href="java:;" rel="external nofollow" :class="{'active':idx == index}

  • Vue 框架之动态绑定 css 样式实例分析

    今天的小实例是关于 Vue 框架动态绑定 css 样式,这也是非常常用的一个部分 首先说一下 动态绑定,相对的大家都知道静态绑定,静态绑定的话,直接加 class=""就可以了,使用 Vue 呢之前也介绍过一个 v-bing:class="{{redClass:true}}" ,也可以实现绑定,但都不是动态绑定,动态绑定肯定是根据用户的某个操作实现动态的修改样式 先看下面的第一个小实例: 源代码 html 文件: 请看注释 <!DOCTYPE html>

  • Vue.js样式动态绑定实现小结

    在项目中,我们时常会遇到动态的去绑定操作切换不同的CSS样式,结合自身项目中遇到的一些情况,也参考了一些文档,针对vue.js样式的动态绑定切换做出如下小结: 动态切换的核心思想: 利用vue指令v-bind来实现动态绑定,从而设置切换不同的样式- vue的最大特点是数据驱动,利用特殊的语法将DOM"绑定"到底层数据,DOM与数据保持同步,每当数据发生变化,DOM视图就会做出相应的更新和响应,正是基于这种特性,我们得以实现class和style的动态绑定- (一定要充分理解数据驱动的含

  • vue实现条件判断动态绑定样式的方法

    在我们做前端页面的时候,为了美观和直观,我们希望通过条件判断来让页面显示不同的样式,如下图所示: 当值为"是"时,显示绿色的标签,当值为"否"时,显示为灰色的标签. 标签的样式分别为: <el-tag type="success">绿色标签</el-tag> <el-tag type="info">灰色标签</el-tag> 关键在于type的样式部分,我们利用vue的样式绑定,

  • vue实现样式之间的切换及vue动态样式的实现方法

    前言 既然我们选择了vue,那么在做东西时就不要想着去操作dom,所有的都交给vue来解决. 下面来说一个很简单但是很常用的效果,可能人人都会用到这样的需求 请看下图 导航栏的样式切换功能,如果我们使用jquery之类的东西来写,可能要写好多代码,那么我们用vue呢, 代码如下 html 附上vue中style与class绑定API <div id="wrap" class="box"> <div v-for="(list,index)

  • Vue实现动态样式的多种方法汇总

    目录 1. 三元运算符判断 2. 动态设置class 3. 方法判断 4. 数组绑定 5. computed结合es6对象的计算属性名方法 1. 三元运算符判断 <text :style="{color:state?'#ff9933':'#ff0000'}">hello world </text> <script> export default { data() { return { state: true } } } </script>

  • Vue中引入样式文件的方法

    一.在vue中使用scss 首先进行安装如下依赖: cnpm i sass-loader node-sass -D 二.vue中引入样式文件 1)在index.html模板html文件中引入,这种方式引入的原样编译在生成的html文件中,如果想要通过link引入外部的样式文件,建议使用这种方式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>2imis&

  • jquery设置css样式的多种方法(总结)

    设置css样式的多种方法总结,jquery <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style> </style> </head> <body> <ul> <li>兄弟多个1</li&

  • Vue之Vue.set动态新增对象属性方法

    当我们给一个比如props中,或者data中被观测的对象添加一个新的属性的时候,不能直接添加,必须使用Vue.set方法 Vue.set方法用来新增对象的属性.如果要增加属性的对象是响应式的,那该方法可以确保属性被创建后也是响应式的,同时触发视图更新 这里本来food对象是没有count属性的,我们要给其添加count属性就必须使用Vue.set方法,而不能写成'this.food.count = 1' 以上这篇Vue之Vue.set动态新增对象属性方法就是小编分享给大家的全部内容了,希望能给大

  • vue中动态select的使用方法示例

    本文实例讲述了vue中动态select的使用方法.分享给大家供大家参考,具体如下: html代码如下: 通过v-model可以获取到选中的值,如果没值就默认第一个;如果有值就显示有值的那个内容 <template> <div class="violationsList"> <div class="type-select"> <select name="selected" id="" v

  • python 下载文件的多种方法汇总

    本文档介绍了 Python 下载文件的各种方式,从下载简单的小文件到用断点续传的方式下载大文件. Requests 使用 Requests 模块的 get 方法从一个 url 上下载文件,在 python 爬虫中经常使用它下载简单的网页内容 import requests # 图片来自bing.com url = 'https://cn.bing.com/th?id=OHR.DerwentIsle_EN-CN8738104578_400x240.jpg' def requests_downloa

  • MySQL 数据恢复的多种方法汇总

    目录 1.前言 2.直接恢复 2.1 mysqldump 备份全量恢复 2.2 xtrabackup 备份全量恢复 2.3 基于时间点恢复 3.恢复一个表 3.1 从 mysqldump 备份恢复一个表 3.2 从 xtrabackup 备份恢复一个表 4.跳过误操作SQL 4.1 使用备份文件恢复跳过 4.2 使用延迟库跳过 5. 闪回. 5.1 binlog2sql 5.2 MyFlash 1.前言 数据恢复的前提的做好备份,且开启 binlog,格式为 row.如果没有备份文件,那么删掉库

  • vue如何关闭eslint检测(多种方法)

    目录 一.问题描述 二.问题解决 一.问题描述 我们在开发vue项目的时候,创建的时候可能会不小心选择了eslint,这个检测规则对于新手来说,简直就是噩梦,会让你崩溃.所以如果不想让eslint检测,我们该怎么办呢?我总结了一些方法,针对不同的版本. 二.问题解决  1.首先是比较旧的vue项目 比较旧一点的项目可能会有webpack.base.conf.js这样一个文件.有这个文件的话,就直接修改这个文件就可以解决 上图红框框部分,我项目中的文件内容是这样的,其他项目可能有别的一些内容,我们

  • JS生成随机数的多种方法汇总(不同范围、类型的随机数)

    目录 1,生成 [ 0, 1 ) 范围内的随机数(大于等于0,小于1) 2,生成 [ n, m ) 范围内的随机数(大于等于n,小于m) 3,生成 [n,m].(n,m).(n,m] 范围内的随机数 随机整数的生成 1,随机生成 0.1 这两个整数 2,生成 [ 0, n ) 范围内的随机整数(大于等于0,小于n) 3,生成 [ 1, n ] 范围内的随机整数(大于等于1,小于等于n) 4,生成 [ min, max ] 范围内的随机整数(大于等于min,小于等于max) 随机字符串的生成 1,

随机推荐