zoukankan      html  css  js  c++  java
  • vue v-bind绑定属性和样式

    这期跟大家分享的,是v-bind指令。它可以往元素的属性中绑定数据,也可以动态地根据数据为元素绑定不同的样式。

    绑定属性

    最简单的例子,我们有一张图片,需要定义图片的src。我们可以直接在元素的属性里面定义:

    <div id="app">
        <img src="https://cn.vuejs.org/images/logo.png" alt="">
    </div>
    
    <!-- ... ... -->
    
    <script type="text/javascript">
        var app = new Vue({
            el: '#app'
        });
    </script>

    但是在实际工作中,我们通常会遇到的情况是,图片地址是从数据里返回的,这个时候v-bind指令就派上了用场。当然,我们可以同时绑定各种属性:

    <div id="app">
        <img v-bind:src="imgSrc" v-bind:alt="imgAlt" v-bind:title="imgTitle">
    </div>
    
    <!-- ... ... -->
    
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                imgSrc: 'https://cn.vuejs.org/images/logo.png',
                imgAlt: 'vue-logo',
                imgTitle: '这是你指定的title,主人'
            }
        });
    </script>

    在浏览器可以看到效果:

    这时候你也许会说,每次都要写一遍v-bind好麻烦。没问题,Vue为你准备好了简写的方式:

    <div id="app">
        <img :src="imgSrc" :alt="imgAlt" :title="imgTitle">
    </div>

    绑定行内样式

    v-bind也可以用于绑定样式,使用行内样式时,关键字是style,跟在html里面直接写行内样式类似。注意样式的写法跟css会有些许不同,横杠分词变成驼峰式分词。

    <div id="app">
        <button class="btn" :style="{ color: 'white', backgroundColor: 'blue' }">点击我吧,主人!</button>
    </div>

    当然,把样式写在vue的data里面会方便一些:

    <div id="app">
        <button class="btn" :style="styles">点击我吧,主人!</button>
    </div>
    
    <!-- ... ... -->
    
    <script type="text/javascript">
        var app = new Vue({
            el: '#app',
            data: {
                styles: {
                    color: 'white',
                    backgroundColor: 'blue'
                }
            }
        });
    </script>

    在浏览器中可以看到html中的行内样式:

    绑定CSS样式

    更常见的做法肯定是根据数据绑定不同的样式了。这时关键字是class。【注意:v-bind:class指令可以与普通的class特性共存】

    <style>
        .is-active {
            color: white;
            background-color: green;
        }
    </style>
    
    <body>
        <div id="app">
            <!-- 根据数据中isActive来决定是否把is-active这个class加给元素 -->
            <button class="btn" :class="{ 'is-active': isActive }">点击我吧,主人!</button>
        </div>
    
        <!-- ... ... -->
    
        <script type="text/javascript">
            var app = new Vue({
                el: '#app',
                data: {
                    isActive: true
                }
            });
        </script>
    </body>

    效果如图:

    当然,在实际工作中isActive的值一般不会像例子中这样直接写死,而是根据用户的交互或者数据进行判断。

    摘https://segmentfault.com/a/1190000008159046

    
    
  • 相关阅读:
    Web开发较好用的几个chrome插件
    SQL注入专题
    内存泄露检测之ccmalloc
    ruby method lambda block proc 联系与区别 next break return
    c++构造函数详解
    VIM使用系列之一—配置VIM下编程和代码阅读环境
    一个项目经理的经验总结
    如何改正拖拉的习惯
    PHP开源软件《个人管理系统》希望大家一起来开发
    PHP 开源软件《个人管理系统》——完善登录模块
  • 原文地址:https://www.cnblogs.com/jkr666666/p/6768974.html
Copyright © 2011-2022 走看看