P3-动态绑定属性

P3-动态绑定属性

1.动态绑定属性概述

在开发页面展示内容过程中,不仅仅是内容需要动态绑定,我们的属性也需要动态绑定,例如在不同的页面中显示的颜色背景、动态图片地址的更新都是需要动态绑定,这样当数据更新后,我们就不需要修改代码来更新页面的展示样式了。

2.v-bind概述

v-bind就用用来实现属性的动态绑定。
v-bind动态绑定语法

  • 作用:动态绑定属性
  • 缩写::
  • 预期:any (with argument) | Object (without argument)
  • 参数:attrOrProp (optional)

3.v-bind 使用介绍

3.1.v-bind基本使用

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
 
<div id="app">
  <!-- 使用v-bind指令动态绑定属性值,当data中的imgURL和aHref 数据改变时候,div展示层将自动改变,无需修改代码 -->
  <img v-bind:src="imgURL" alt="">
  <a v-bind:href="aHref">百度一下</a>

  <!-- v-bind语法糖写法 省去了v-bing直接写一个冒号即可-->
  <img :src="imgURL" alt="动漫">
  <a :href="aHref">百度一下</a>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好vue',
      imgURL: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606313752264&di=81ec0f4e5b1c210641d1d169539e05db&imgtype=0&src=http%3A%2F%2Fimg4.imgtn.bdimg.com%2Fit%2Fu%3D3646262474%2C2245266927%26fm%3D214%26gp%3D0.jpg',
      aHref: 'http://www.baidu.com'
    }
  })
</script>
</body>
</html>

3.2.v-bind动态绑定class对象语法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>

  <style>
    .active {
      color: red;
    }
  </style>
</head>
<body>
<div id="app">
  <!-- v-bind绑定class对象语法 -->
  <!--<h2 v-bind:class="{key1: value1, key2: value2}">{{message}}</h2>-->
  <!--<h2 v-bind:class="{类名1: true, 类名2: boolean}">{{message}}</h2>-->

  <!-- v-bind绑定class对象示例  -->
  <h2 v-bind:class="{active: isActive , line: isLine}">{{message}}</h2>

  <!-- 上面v-bind绑定class对象的缺点是不够简洁,在大括号里需要些许多个类名。可以将对象的内容放到方法中,这里接收方法返回的数据就简洁了。 -->
  <h2 v-bind:class="getClasses()">{{message}}</h2>

  

  <!-- 当有多个class属性时候,可以将固定的class放在v-bind外面,变动的class使用v-bind绑定实现两种类型class共存 -->
  <h2 class="topic" v-bind:class="getClasses()">{{message}}</h2>

  <!-- class属性绑定事件,触发class名称为active的属性是否显示红色 -->
  <button v-on:click="btnClick()">按钮</button>


</div>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好vue',
      isActive: true,
      isLine: true
    },
    // 通过该方法控制isActive是否为true实现style中.active样式是否生效。
    methods:{
      btnClick: function(){
        this.isActive = !this.isActive
      },
      getClasses: function(){
        return {active: this.isActive , line: this.isLine}
      }
    }
  })
</script>
</body>
</html>
3.2.1.效果展示

在这里插入图片描述

3.3.v-bind动态绑定class数组语法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <h2 v-bind:class="[active, line]">{{message}}</h2>

  <!-- 调用getClasses方法,动态绑定数组格式数据 -->
  <h2 v-bind:class="getClasses()">{{message}}</h2>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好vue',
      active: 'a',
      line: 'l'
    },
    methods: {
      // 返回一个数组格式
      getClasses: function(){
        return [this.active, this.line]
      }
    }
  })
</script>
</body>
</html>

3.4.v-bind动态绑定style对象语法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <!-- v-bind绑定style对象语法 -->
  <!--<h2 :style="{key(属性名): value(属性值)}">{{message}}</h2>-->

  <!-- v-bind绑定style对象示例 -->
  <h2 v-bind:style="{fontSize:finalSize+'px', backgroundColor:finalColor}">{{message}}</h2>

  <!-- 优化上面v-bind绑定style对象,将style对象中的数据替换成方法,书写更简洁。 -->
  <h2 :style="getStyles()">{{message}}</h2>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: 'Hello vue',
      finalSize: 50,
      finalColor: 'red'
    },
    methods: {
      getStyles: function(){
        return {fontSize:this.finalSize+'px', backgroundColor:this.finalColor}
      }
    }
  })
</script>
</body>
</html>
3.4.1.动态绑定属性效果展示
  • 原始展示
    在这里插入图片描述
  • 动态修改数据展示
    在这里插入图片描述

3.5.v-bind动态绑定style数组语法

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <!-- v-bind绑定style数组示例 -->
  <h2 :style="[baseStyle, otherStyle]">{{message}}</h2>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: 'Hello VUE',
      baseStyle: {backgroundColor: 'red'},
      otherStyle: {fontSize: 'red'}
    }
  })
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值