• 动态地绑定一个或多个特性(此处的特性是指行间样式的属性)
  • :后的为传递的参数

    1. <section id="app">
    2. <!-- 绑定一个属性 -->
    3. <img v-bind:src="imageSrc">
    4. <!-- 动态特性名 (2.6.0+) -->
    5. <button v-bind:[key]="value"></button>
    6. <!-- 缩写 -->
    7. <img :src="imageSrc">
    8. <!-- 动态特性名缩写 (2.6.0+) -->
    9. <button :[key]="value"></button>
    10. <!-- 内联字符串拼接 -->
    11. <img :src="'https:' + fileName">
    12. </section>
    13. <script>
    14. const vm = new Vue({
    15. el: "#app",
    16. data: {
    17. imageSrc:'https://dss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3363295869,2467511306&fm=26&gp=0.jpg',
    18. key:'a',
    19. fileName:'//dss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=3363295869,2467511306&fm=26&gp=0.jpg',
    20. value:'123'
    21. }
    22. });
    23. </script>

    v-bind的无参数,且绑定一个对象,键值对为特性

    1. <div v-bind="{naem:key,age:'18',height:'163cm', class:'zzz'}"></div>

    绑定class

  • 对象语法

    1. <div :class='{red:true}'></div>

    image.png
    当为false
    image.png
    使用对象绑定class时当value为真时key才被添加为类名
    可以使用

    1. <section id="app">
    2. <div :class='{red:classA}'></div>
    3. </section>
    4. <script>
    5. const vm = new Vue({
    6. el: "#app",
    7. data: {
    8. classA:true,
    9. }
    10. });
    11. </script>
  • 数组语法

我们可以把一个数组传给 v-bind:class,以应用一个 class 列表

  1. <div v-bind:class="[classA, classB]"></div>

在数组语法总可以使用三元表达式来切换class

  1. <div v-bind:class="[isActive ? activeClass : '', errorClass]"></div>

在数组语法中可以使用对象语法

  1. <div v-bind:class="[classA, { classB: isB, classC: isC }]">
  2. <div v-bind:class="classA" class="red">

v-bind:class 可以与普通 class 共存

  1. <div v-bind:class="classA" class="red">

绑定style

看着比较像CSS,但其实是一个JavaScript对象
CSS属性名可以用驼峰式(camelCase)或者短横线分隔(kebab-case)来命名
但是使用短横线分隔时,要用引号括起来
使用对象语法

  1. <div v-bind:style="{ fontSize: size + 'px' }">123</div>
  2. <div v-bind:style="{ 'font-size': size + 'px' }">123</div>
  1. data: {
  2. size: 30
  3. }

也可以直接绑定一个样式对象,这样模板会更清晰:

  1. <div v-bind:style="styleObject"></div>
  1. data: {
  2. styleObject: {
  3. fontSize: '13px'
  4. }
  5. }

使用数组语法
数组语法可以将多个样式对象应用到同一个元素

  1. <section id="app">
  2. <div v-bind:style="[styleA,styleB]">123456</div>
  3. </section>
  4. <script>
  5. const vm = new Vue({
  6. el: "#app",
  7. data: {
  8. styleA:{
  9. color:'red',
  10. 'font-size': '30px',
  11. },
  12. styleB:{
  13. width:'100px',
  14. height:'100px',
  15. background:'blue'
  16. }
  17. }
  18. });
  19. </script>
  • 自动添加前缀
    绑定style时,使用需要添加浏览器引擎前缀的CSS属性时,如 transform,Vue.js会自动侦测并添加相应的前缀。
  • 多重值
    从 2.3.0 起你可以为 style 绑定中的属性提供一个包含多个值的数组,常用于提供多个带前缀的值:

    1. <div v-bind:style="{ display: ['-webkit-box', '-ms-flexbox', 'flex'] }"></div>

    这样写只会渲染数组中最后一个被浏览器支持的值。在本例中,如果浏览器支持不带浏览器前缀的 flexbox,那么就只会渲染 display: flex。
    修饰符:
    修饰符 (modifier) 是以英文句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。

  • .camel
    由于绑定特性时,会将大写字母转换为小写字母,如:

    1. <!-- 最终渲染的结果为:<svg viewbox="0 0 100 100"></svg> -->
    2. <svg :viewBox="viewBox"></svg>

    image.png
    所以,Vue提供了v-bind修饰符 camel,该修饰符允许在使用 DOM 模板时将 v-bind 属性名称驼峰化,例如 SVG 的 viewBox 属性

    1. <svg :view-box.camel="viewBox"></svg>
  • .prop

被用于绑定 DOM 属性 (property)

  1. <div v-bind:text-content.prop="text"></div>
  • .sync

讲解组件时再说

传递一个对象的所有属性

如果你想要将一个对象的所有属性都作为 prop 传入,你可以使用不带参数的 v-bind 。例如,对于一个给定的对象 person:

  1. person: {
  2. name: 'shanshan',
  3. age: 18
  4. }

传递全部属性:

  1. <my-component v-bind="person"></my-component>

上述代码等价于:

  1. <my-component
  2. :name="person.name"
  3. :age="person.age"
  4. ></my-component>