动态绑定属性v-bind

本文详细介绍了Vue.js中v-bind指令的使用,包括基本用法、动态绑定class与style。通过实例展示了如何根据条件切换样式,以及使用对象语法和数组语法进行更复杂的绑定操作。同时,提供了练习题帮助读者巩固所学知识。
摘要由CSDN通过智能技术生成

v-bind的基本使用

通过绑定由服务器传过来的地址,以及语法糖

<div id="app">
  <img v-bind:src="imgURL">
  <a v-bind:href="aHref">阿里巴巴图标库</a>

  <!--语法糖的写法-->
  <img :src="imgURL" alt="">
  <a :href="aHref">阿里巴巴图标库</a>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      imgURL: 'https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center',
      aHref: 'https://www.iconfont.cn/'
    }
  })
</script>

v-bind动态绑定class(对象语法)

案例:将字体显示为红色

style都一致,写在开始,后面就不写了

<style>
  .active {
    color: red;
  }
</style>
方法一(不用v-bind)
<h2 class="active">{{message}}</h2>
方法二(用v-bind)
<h2 :class="active">{{message}}</h2>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      active: 'active',
    }
  })
</script>
使用对象都显示 {类名1:true,类名2:boolean}
<!--必须要有的用原来方法class,后面可能会删除的样式,用v-bind绑定-->
<h2 class="title" v-bind:class="{active :isActive,line:isLine}">{{message}}</h2>
......
 data: {
      message: 'HelloWorld',
      isActive: true,
      isLine: true
    },
通过按钮点击显示不同的样式,并将对象放在方法中
<h2 class="title" v-bind:class="getClasses()">{{message}}</h2>
  <button v-on:click="btnClick">按钮</button>
  <script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      isActive: true,
      isLine: true
    },
    methods: {
      btnClick: function (){
        this.isActive = !this.isActive
      },
      getClasses:function (){
        return {active: this.isActive,line: this.isLine}
      }
    }
  })

v-bind动态绑定class(数组语法)

可以将class以数组形式显示
代码:

<div id="app">
  <h2 class="title" :class="[active,line]">{{message}}</h2>
  <h2 class="title" :class="getClasses()">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      active: 'aa',
      line: 'bb'
    },
    methods:{
      getClasses: function (){
        return [this.active,this.line]
      }
    }
  })
</script>
<style>
  .aa {
    background-color: red;
  }
  .bb {
    font-size: 50px;
  }
</style>

练习

点击无序列表中的任意一项,默认第一项字体为红色,此后点击哪一项,哪一项就为红色
代码:

<div id="app">
  <ul>
    <!--<li v-for="m in movies">{{m}}</li>-->
    <li v-for="(m,index) in movies" :class="{'active':option==index}" @click="change(index)" :title="m">{{index+1}}--{{m}}</li>
  </ul>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      movies: ['海王','海尔兄弟','秦时明月','全职高手'],
      option: 0
    },
    methods:{
      change: function (obj){
        //点击哪一项,哪一项就具有active 的样式
        this.option = obj
      }
    }
  })
</script>
<style>
  .active {
    color: red;
  }
</style>

v-bind动态绑定style(对象语法)

以**style="{key(css属性名):value(属性值)}">{{message}}**的形式
其中,key可以不加单引号,但value值必须要加单引号,否则是当成变量来解析

<h2 :style="{fontSize: '50px'}">{{message}}</h2>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld'
    }
  })
</script>

在data中定义好style

<div id="app">
<h2 :style="{fontSize: finalSize}">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      finalSize: '100px'
    }
  })
</script>

多个样式

<div id="app">
  <!--当成表达式-->
  <h2 :style="getStyles()">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      finalSize: 100,
      finalColor: 'red',
    },
    methods:{
      getStyles:function (){
        return {fontSize: this.finalSize+'px',backgroundColor:this.finalColor}
      }
    }
  })
</script>

v-bind动态绑定(数组语法)

代码:

<div id="app">
  <h2 :style="[baseStyle,baseStyle1]">{{message}}</h2>
</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el:'#app',
    data: {
      message: 'HelloWorld',
      baseStyle:{backgroundColor:'red'},
      baseStyle1:{fontSize:'50px'}
    }
  })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值