• 3. Vue3.x中的事件方法入门


    一、Vue3.x中的事件方法入门

    业务逻辑:

    export default {
        data() {
            return {
                num: 1,
                msg: "你好vue",
            };
        },
        methods: {
            setMsg() {
                this.msg = "我是方法里改变后的msg";
            },
            getMsg() {
                alert(this.msg);
            },
        },
    };

    template模板

    <template>
    <div>
        <h2>{{ msg }}</h2>
    
        <button @click="setMsg()">设置msg</button>
        <br />
        <br>
        <button @click="getMsg()">获取msg</button>
    
        <br>
        <br>
        <h2>Num:{{num}}</h2>
    
        <button @click="num += 1">Add 1</button>
    </div>
    </template>

    二、Vue3 v-bind绑定Class

    v-bindclass和一起使用时,Vue提供了特殊的增强功能style。除了字符串外,表达式还可以求值为对象或数组。

    1.1、v-bind:class绑定字符串

    业务逻辑

    export default {
        name: "App",
        data() {
            return {
                isActive: "active",
            };
        },
    };

    template模板

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

    Css

    .active {
        width: 100px;
        height: 100px;
        background: red;
    }

    1.2、v-bind:class绑定对象

    业务逻辑

    export default {
        name: "App",
        data() {
            return {
                 isActive: true,
       			 hasError: false
            };
        },
    };

    template模板

    
    <div :class="{ 'active': isActive, 'error': hasError }">
        v-bind:class演示
    </div>

    Css

    .active {
        width: 100px;
        height: 100px;
        background: red;
    }
    
    .error {
        color: blue;
    }

    1.3、v-bind:class 结合 class的使用

    业务逻辑

    export default {
        name: "App",
        data() {
            return {
                 isActive: true,
       			 hasError: false
            };
        },
    };

    template模板

    class会与:class共同存在

    <div class="static" :class="{ 'active': isActive, 'error': hasError }">
        v-bind:class演示
    </div>

    Css

    .static {
        font-size: 20px;
    }
    
    .active {
        width: 100px;
        height: 100px;
        background: red;
    }
    
    .error {
        color: blue;
    }

    它将呈现:

    <div class="static active error"></div>

    1.4、数组语法

    业务逻辑:

    data() {
      return {
        activeClass: 'active',
        errorClass: 'text-danger'
      }
    }

    模板:

    <div :class="[activeClass, errorClass]"></div>

    1.5、数组语法 结合三目运算

    业务逻辑:

    export default {
        name: "App",
        data() {
            return {
                isActive: true,
                activeClass: 'active',
                errorClass: 'error',
            };
        },
    };

    模板:

    <div :class="[isActive ? activeClass : errorClass]">active</div>

    Css:

    .active {
        width: 100px;
        height: 100px;
        background: red;
    }
    
    .error {
        color: blue;
    }

    三、v-bind:style 绑定内联样式

    2.1、第一种绑定方式

    业务逻辑:

    data() {
      return {
        activeColor: 'red',
        fontSize: 30
      }
    }

    模板:

    <div :style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>

    2.2、第二种绑定方式

    业务逻辑:

    data() {
      return {
        styleObject: {
          color: 'red',
          fontSize: '13px'
        }
      }
    }

    模板:

    <div :style="styleObject"></div>

    2.3、第三种绑定方式 数组方式

    业务逻辑:

    data() {
      return {
    			 baseStyles: {
                    color: 'orange',
                    fontSize: '13px'
                },
                overridingStyles: {
                    width: "100px",
                    height: "100px",
                    background: "blue"
                }
      }
    }

    模板:

    <div :style="[baseStyles, overridingStyles]"></div>

    2.4、自动前缀

    当您使用需要一个CSS属性供应商前缀:style,例如transform,Vue公司会自动检测并添加适当的前缀到应用的样式。

    2.5、多个值

    您可以为样式属性提供多个(前缀)值的数组,例如:

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

    这只会呈现浏览器支持的数组中的最后一个值。在此示例中,它将display: flex为支持非前缀版本的flexbox的浏览器呈现。

    四、案例:循环数据 第一个数据高亮显示

    业务逻辑:

    export default {
        name: "App",
        data() {
            return {
              list: ['马总', '刘总', '李总'],
            };
        },
    };

    模板:

    <ul>
        <li v-for="(item,index) in list" :key="index" :class="{'red':index==0,'blue':index==1}">{{item}}</li>
    </ul>

    Css:

    .red {
        color: red;
    }
    
    .blue {
        color: blue;
    }
  • 相关阅读:
    js预编译
    JS防抖和节流模式的实际应用
    常见的几种数组去重的方法,总有一种适合你~
    调用微信扫一扫功能,踩坑'invalid signature'
    如何快速的vue init 属于自己的vue模板?
    如何做到在webpack打包vue项目后,在外部动态修改配置文件
    vue拖拽组件 vuedraggable API options实现盒子之间相互拖拽排序克隆clone
    js解析URL参数
    vue复选框 模拟checkbox多选全选,vue页面加载屏蔽花括号
    js毫秒转换天时分秒/动态倒计时
  • 原文地址:https://www.cnblogs.com/guxia/p/14386561.html
Copyright © 2020-2023  润新知