vue小案例

1、单选框

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<input type="checkbox" v-model="disabled"/>
			<button type="button" :disabled="!disabled">下一步</button>
		</div>
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el:'#app',
				data:{
					disabled:false,
				}
			})
		</script>
	</body>
</html>

2、下拉框:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<form action="下拉框.html" method="">
				<select name="tid">
					<option value="">
						请选择商品
					</option>
					<option value ="" v-for="t in list" :value="t.tid" v-text="t.tname"></option>
				</select>
				<button type="submit">提交</button>
			</form>
		</div>
		
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			new Vue({
				el:'#app',
				data:{
					list:[
						{tid:1,tname:'生活用品'},
						{tid:2,tname:'电子产品'},
						{tid:3,tname:'果蔬产品'}
					]
				}
			})
		</script>
	</body>
</html>

3、超链接

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<ul>
				<li v-for="(n,nid) in list">
					{{n.nid}}<a v-bind:href="n.ref">{{n.name}}</a>
				</li>
			</ul>
		</div>
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el:'#app',
				data:{
					list:[
						{nid:1,name:'十一放假了',ref:'http://www.baidu.com'},
						{nid:2,name:'放假7天',ref:'http://www.qq.com'},
					]
				}
			})
		</script>
	</body>
</html>

4、计算属性

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			商品名<input type="text" v-model="sname" placeholder="请输入商品名" />+
			商品价格<input type="text" v-model="sprice" placeholder="请输入价格" />=
			数量<input type="text" v-model="snum" placeholder="请输入数量" />
			<button type="submit" v-on:click="list.push({sname,sprice,snum})">添加</button>
			<table>
				<tr>
					<th>商品名</th>
					<th>商品价格</th>
					<th>数量</th>
				</tr>
				<tr v-for="v in list">
					<td>{{v.sname}}</td>
					<td>{{v.sprice}}</td>
					<td>{{v.snum}}</td>
				</tr>
			</table>
		</div>
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el:'#app',
				data:{
					sname:'',
					sprice:0,
					snum:0,
					list: [],
				},
				computed:{
					res:function(){
						return parseInt(this.n1) + parseInt(this.n2)
					}
				},
				methods:{
					
				}
			})
		</script>
	</body>
</html>

5、图片轮播

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<button type="button" v-on:click="i = i == 1?4:i-1"><<<</button>
			<button type="button" v-on:click="i = i == 4?1:i+1">>>></button><br>
			<img v-bind:src="'img/j'+i+'.png'" >
		</div>
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el:'#app',
				data:{
					i:1,
					
				}
			})
			/* setInterval(function(){
				console.log(vm)
				vm.i++;
				vm.i%=5;
			},1000) */
		</script>
	</body>
</html>

6、开关灯--show

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<!-- <button type="button" v-on:click="show=!show">{{show?'关灯':'开灯'}}</button><br>
			<img v-bind:src="show?'img/k.jpg':'img/g.jpg'" > -->
			<button type="button" v-on:click="i= i==1?0:i+1, show=!show">{{show?'开灯':'关灯'}} </button><br />
			<!-- <img v-bind:src="show ==show?'img/k.jpg':'img/g.jpg'" /> -->
			<div >
			     <img v-bind:src="'img/'+i+'.jpg'" />
				 <!-- <img v-bind:src="show?'img/k.jpg':'img/g.jpg'" /> -->
			</div>
		</div>
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el:'#app',
				data:{
					i:0,
					show:true,
				}
			})
		</script>
	</body>
</html>

 7、购物车

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<button type="button" @click="add()">添加</button>
			<p v-for="(s,i) in list">
				名称:<input type="text" v-model="s.sname" />
				价格:<input type="number" v-model="s.sprice" />
				数量:<input type="number" v-model="s.snum" />
				小计:<input type="number" v-model="s.sprice*s.snum" readonly="readonly"/>
				<button type="button" @click="del(i)">删除</button>
			</p>
			总计: {{total}}¥ 共: {{count}}件
		</div>
		<script type="text/javascript" src="js/vue.min.js"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el:'#app',
				data:{
					list:[],
				},
				created() {
					
				},
				computed:{
					total() {
						var sum = 0;
						this.list.forEach(function(v, i) {
							sum += v.sprice * v.snum
						})
						return sum;
					},
					count() {
						var sum = 0;
						this.list.forEach(function(v,i) {
							sum += v.snum * 1;
						})
						return sum;
					}
				},
				methods:{
					add(){
						this.list.push({
							sname:'',
							sprice: 0,
							snum: 1
						})
					},
					del(i){
						this.list.splice(i,1)
					}
				}
			})
		</script>
	</body>
</html>

8、观察者(全选 单选)--监听机制

文本框数据改变(复选框、下拉框)

监听数据的变化,从而执行的功能

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div id="app">
			<input v-model="sprice" />
			<hr >
			<!-- 复选框全选 绑定单个值真和假 -->
			<!-- 全选把数组内容交给爱好 -->
			<input type="checkbox" v-model="qx" />全选
			<p v-for="h in list">
				<!-- 绑定数组 数据绑定-->
				<input type="checkbox" v-model="hobby" :value="h" />{{h}}
			</p>
			{{hobby}}
		</div>
	</body>
	<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		var vm = new Vue({
			el: "#app",
			data: {
				sprice: 0,
				list: [
					'游戏',
					'音乐',
					'书籍',
				],
				//默认不选
				qx: false,
				hobby: [],
			},
			watch: {
				//观察谁写谁
				sprice(newval,oldval){
					//观察者监听模式
					console.log(newval,oldval)
				},
				qx(newval){
					//全选
					if(newval){
						this.hobby=this.list
					}else{ //全不选
						this.hobby=[]
					}
				}
			}
		})
	</script>
</html>

9、鼠标事件---选中高亮显示

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			/* 激活  高亮显示 */
			.active{
				color: red;
				background-color: cornsilk;
			}
		</style>
	</head>
	<body>
		<div id="app">
			<ul>
				<!-- 静态效果 -->
				<!-- <li class="active">第一项</li> -->
				
				<!-- 动态效果 has-json格式 -->
				<!-- 鼠标悬浮事件i改变,高亮显示的行就改变 -->
				<li :class="{active: i==0}" @mousemove="i=0" @mouseout="i=100">第一项</li>
				<li :class="{active: i==1}" @mousemove="i=1"  @mouseout="i=100">第二项</li>
				<li :class="{active: i==2}" @mousemove="i=2"  @mouseout="i=100">第三项</li>
			</ul>
		</div>
		<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			var vm = new Vue({
				el: '#app',
				data: {
					i:0
				},
			})
		</script>
	</body>
</html>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给你介绍一个用 Vue 3.0 实现的小案例。 这个案例是一个简单的待办事项列表,可以添加、删除和标记完成任务。 我们先来看一下代码实现: ```html <template> <div> <h2>待办事项列表</h2> <input type="text" v-model="newTodo" placeholder="请输入待办事项"> <button @click="addTodo()">添加</button> <ul> <li v-for="(todo, index) in todos" :key="index"> <span :class="{ done: todo.done }">{{ todo.content }}</span> <button @click="deleteTodo(index)">删除</button> <button @click="toggleDone(index)">{{ todo.done ? '未完成' : '已完成' }}</button> </li> </ul> </div> </template> <script> import { reactive } from 'vue'; export default { setup() { const state = reactive({ newTodo: '', todos: [] }); const addTodo = () => { if (state.newTodo.trim() !== '') { state.todos.push({ content: state.newTodo, done: false }); state.newTodo = ''; } }; const deleteTodo = (index) => { state.todos.splice(index, 1); }; const toggleDone = (index) => { state.todos[index].done = !state.todos[index].done; }; return { newTodo: state.newTodo, todos: state.todos, addTodo, deleteTodo, toggleDone }; } }; </script> <style> .done { text-decoration: line-through; } </style> ``` 这个案例使用了 Vue 3.0 的 Composition API,使用 `reactive` 创建响应式对象,然后在 `setup` 函数中定义了添加、删除和标记完成任务的函数,并通过 `return` 返回这些函数和响应式数据,最后在模板中使用了指令和事件监听器来实现交互效果。 如果你想要更详细的介绍,可以参考 Vue 3.0 官方文档:https://v3.vuejs.org/guide/introduction.html。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值