### 一、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-bind`与`class`和一起使用时,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属性[供应商前缀](https://developer.mozilla.org/en-US/docs/Glossary/Vendor_Prefix)的`: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;
}
~~~
- 空白目录
- 第一节 Vue3.x教程、Vue3.x简介、搭建Vue3.x环境、创建运行Vue3.x项目、分析Vue目录结构
- 第二节 Vue3.x绑定数据、绑定html、绑定属性、循环数据
- 第三节 Vue3.x中的事件方法入门、模板语法模板中类和样式绑定
- 第四节 Vue3.x中的事件方法详解、事件监听、方法传值、事件对象、多事件处理程序、事件修饰符、按键修饰符
- 第五节 Vue3.x中Dom操作$refs 以及表单( input、checkbox、radio、select、 textarea )结合双休数据绑定实现在线预约功能
- 第六节 Vue3.x中使用JavaScript表达式 、条件判断、 计算属性和watch侦听
- 第七节 Vue3.x 实现一个完整的toDoList(待办事项) 以及类似京东App搜索缓存数据功能
- 第八节 Vue3.x中的模块化以及封装Storage实现todolist 待办事项 已经完成的持久化
- 第九节 Vue3.x中的单文件组件 定义组件 注册组件 以及组件的使用
- 第十节 Vue3.x父组件给子组件传值、Props、Props验证、单向数据流
- 第十一节 Vue3.x父组件主动获取子组件的数据和执行子组件方法 、子组件主动获取父组件的数据和执行父组件方法
- 第十二节 Vue3.x组件自定义事件 以及mitt 实现非父子组件传值
- 第十三节 Vue3.x自定义组件上面使用v-mode双休数据绑定 以及 slots以及 Prop 的Attribute 继承 、禁用 Attribute 继承
- 第十四节 Vue3.x中组件的生命周期函数(lifecycle)、 this.$nextTick、动态组件 keep-alive、Vue实现Tab切换
- 第十五节 Vue3.x中全局绑定属性、使用Axios和fetchJsonp请求真实api接口数据、函数防抖实现百度搜索
- 第十六节 Vue3.x中的Mixin实现组件功能的复用 、全局配置Mixin
- 第十七节 Vue3.x Teleport、使用Teleport自定义一个模态对话框的组件
- 第十八节 Vue3.x Composition API 详解
- 第十九节 Vue3.x中集成Typescript 使用Typescript
- 第二十节 Vue-Router 详解
- 第二十节 Vuex教程-Vuex 中的 State Mutation Getters mapGetters Actions Modules