VUE的class、style的使用与模板渲染
日期:2018-05-19
来源:程序思维浏览:1972次
2.3.3.1. class的绑定
对象语法
数组语法
2.3.3.2. style的绑定
对象语法
使用对象的形式绑定样式
数组语法
绑定多个对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="../node_modules/vue/dist/vue.js"></script>
<style type="text/css">
.active {
background: pink;
width: 200px;
height: 200px;
float: left;
margin-left: 30px;
}
.bd {
border: 1px solid red;
float: left;
}
</style>
</head>
<body>
<div id="app">
<!--绑定单个类样式-->
<div v-bind:class="{active:isActive}"></div>
<!--绑定多个类样式-->
<div v-bind:class="{active:isActive,bd:hasBorder}"></div>
<!--使用对象的方式绑定类样式-->
<div v-bind:class="classObject"></div>
<!--使用数组绑定-->
<div v-bind:class="[classA,classB]"></div>
<!--三元表达式-->
<div v-bind:class="[classA, isB ? classB : '']"></div>
<!--内联样式的绑定-->
<div v-bind:style="{fontSize: size + 'px', backgroundColor: bgcolor, width: width}">
vue 内联样式的绑定
</div>
</div>
</body>
</html>
<!--
样式的绑定
1. v-bind:class="{active:isActive}
当绑定的数据isActive的值为true时,就会为该元素添加类样式
2. v-bind:class="{active:isActive,bd:hasBorder}"
支持混合类样式绑定,即同时绑定多个类样式
3. v-bind:class="classObject"
支持使用对象绑定类样式
4. v-bind:class="[classA,classB]"
5. <div v-bind:class="[classA, isB ? classB : '']">
当 v-bind:style 使用需要厂商前缀的 CSS 属性时,如 transform,Vue.js 会自动侦测并添加相应的前缀。
-->
<script>
var vm = new Vue({
el: '#app',
data: {
isActive: true,
hasBorder: true,
classObject: {
active: true,
bd: true
},
//内联样式
size: 19,
width: 200,
bgcolor: 'red',
//数组形式
classA: "a",
classB: 'b',
isB: true
}
})
</script>
模板渲染
2.4.1. 条件渲染
v-if v-else-if v-else
v-show
支持模板语法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--引入js-->
<script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!--在这里加入模型数据-->
{{ message }}
<!--这里 v-if 指令将根据表达式 greeting 值的真假删除/插入 <p> 元素。-->
<p v-if="greeting">Hello!</p>
<!--bool值可以使条件表达式-->
<p v-if="Math.random()>0.5">根据随机值判断是否显示</p>
<!--使用v-if配合template可以实现模板渲染-->
<template v-if='bool'>
<h1>{{header}}</h1>
<p>{{paragraph}} 1</p>
<p>{{paragraph}} 2</p>
<ul>
<li v-for="data in array">{{data}}</li>
</ul>
</template>
</div>
</body>
</html>
<script>
var viewModel = {
//模型数据的初始化
message: 'hello world!',
greeting:true,
bool:true,
header:"这是一个标题",
paragraph:"这是一个段落",
array:[1,2,3,4]
}
// viewModel 连接模型和数据库
var vm = new Vue({
el: '#app',
data: viewModel,
})
</script>
2.4.2. 列表渲染
v-for
支持模板语法
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<!--view-->
<ul>
<span v-for="n in 10">{{n}}</span>
</ul>
<ul>
<!--简单的列表渲染-->
<li v-for='data in liData1'>
{{data}}
</li>
</ul>
<ul>
<!--复杂的列表渲染-->
<li v-for='data in liData2'>
{{data.text}}
</li>
</ul>
<ul>
<!--添加index-->
<li v-for="(data,index) in liData2">
{{data.text}}=======index===={{index}}
</li>
</ul>
<!--模板语法-->
<ul>
<h2>模板渲染</h2>
<template v-for="item in items">
<li>{{ item.name }}</li>
<li class="divider">{{item.age}}</li>
</template>
</ul>
</div>
</body>
</html>
<script>
// model
var dataModel = {
num: 10,
liData1: [1, 2, 3],
liData2: [{
text: "这是一段文本"
}, {
text: "这是一段文本"
}, {
text: "这是一段文本"
}, {
text: "这是一段文本"
}],
items: [{
name: 1,
age: 1
}, {
name: 2,
age: 2
}]
}
// viewModel
var app = new Vue({
el: '#app',
data: dataModel
})
</script>
2.4.3. template模板用法(简单了解)
template标签用法
vue实例的 el 和 template 选项
配合使用,完成页面的渲染
组件/模板内部的元素一定要有一个根元素包裹
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<!--引入js-->
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<!--视图的入口-->
<div id="app">
</div>
<script id="tp1" type="x-template">
<div class="tp1">
<p>this is a tp1 from script tag</p>
</div>
</script>
</body>
</html>
<script>
//在这里,将template对应的script内部的元素挂载到对应的el所指定的位置
var vm= new Vue({
el:'#app',
template:"#tp1"
})
</script>
- 上一篇:VUE是如何进行数据的绑定
- 下一篇:VUE的内置指令总结
精品好课