【前端】Vue.js实现简单价格计算器
价格计算器
实现效果:
实现代码及注释:
<!DOCTYPE html>
<html>
<head>
<title>价格计算器</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style type="text/css"> /* 隐藏未编译的数据绑定,直到Vue实例成功加载 */
[v-cloak]{
display: none;
}
*{
padding: 0;
margin: 0;
}
body{
font: 15px/1.3 "微软雅黑";
color: #545b64;
text-align: center;
}
a, a:visited{
outline: none;
color: #389dc1;
}
a:hover{
text-decoration: none;
}
section, footer, header, aside, nav{
display: block;
} /*-------------------------
The order form
--------------------------*/ form{
background-color: #d5d5d5;
border-radius: 10px;
box-shadow: 0 1px 1px #ccc;
width: 400px;
padding: 35px 45px;
margin: 50px auto;
box-shadow: 1px 0px 20px #f5f5f5;
} form h1{
color:#fff;
font-size: 55px;
font-family: "微软雅黑"
font-weight: normal;
line-height:1;
text-shadow:2px 3px 0 rgba(0,0,0,0.1);
font-weight: normal;
} form ul{
list-style:none;
color:#fff;
font-size:20px;
font-weight:bold;
text-align: left;
margin:20px 0 15px;
} form ul li{
padding:15px 30px;
background-color:#03c03c;
margin-bottom:10px;
box-shadow:0 1px 1px rgba(0,0,0,0.1);
cursor:pointer;
} form ul li span{
float:right;
} form ul li.active{
background-color: orange;
} div.total{
border-top:1px solid rgba(255,255,255,0.5);
padding:15px 30px;
font-size:20px;
font-weight:bold;
text-align: left;
color:#fff;
text-shadow: 2px 2px 2px rgba(0,0,0,0.1);
} div.total span{
float:right;
}
</style> </head>
<body> <!-- v-cloak隐藏所有没有编译过的数据绑定,直到vue实例准备好 --> <form id="main" v-cloak>
<h1>价格计算器</h1>
<ul> <!-- 循环这个服务数组,分配一个点击句柄,并且设置或移除active class -->
<li v-for="service in services" v-on:click="toggleActive(service)" v-bind:class="{'active': service.active}"> <!-- 显示这个数组中每个实体的名称和价格格式化, Vue有一个内置的货币筛选器用于对价格进行 --> {{service.name}} <span>{{service.price | currency}}</span> </li>
</ul> <div class="total"> <!-- 计算所有选定商品的总价格,并且格式化为货币显示方式 --> 总价: <span>{{total() | currency}}</span>
</div>
</form>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.min.js"></script>
<script type="text/javascript"> // 定义一个常规过滤器currency
Vue.filter('currency', function(value){
return '¥' + value.toFixed(2);
}); var demo = new Vue({
el: '#main',
data: {
// 定义model属性,view将会循环
// 通过services数组产生一个li
// 定义services每一项的元素 services: [
{
name: "网站开发",
price: 300,
active: true
},
{
name: "设计",
price: 400,
active: false
},
{
name: "一体化整合",
price: 250,
active: false
},
{
name: "操作培训",
price: 220,
active: false
}
]
}, methods: {
toggleActive: function(s){
s.active = !s.active;
},
total: function(){
var total = 0;
this.services.forEach(function(s){
if(s.active){
total+=s.price;
}
});
return total;
}
}
});
</script> </body>
</html>
【前端】Vue.js实现简单价格计算器的更多相关文章
- Web前端-Vue.js必备框架(一)
Web前端-Vue.js必备框架(一) <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- angular4.0和angularJS、react.js、vue.js的简单比较
angularJS特性 模板功能强大丰富(数据绑定大大减少了代码量) 比较完善的前端MVC框架(只要学习这个框架,按照规定往里面填东西就可以完成前端几乎所有的的问题) 引入了Java的一些概念 ang ...
- Web前端-Vue.js必备框架(五)
Web前端-Vue.js必备框架(五) 页面组件,商品列表组件,详情组件,购物车清单组件,结算页组件,订单详情组件,订单列表组件. vue-router 路由 vuex 组件集中管理 webpack ...
- 基于vue.js的简单用户管理
功能描述:添加.修改.搜索过滤 效果图: <!DOCTYPE html> <html lang="en"> <head> <title&g ...
- Web前端-Vue.js必备框架(四)
Web前端-Vue.js必备框架(四) 计算属性: <div id="aaa"> {{ message.split('').reverse().join('') }} ...
- Web前端-Vue.js必备框架(三)
Web前端-Vue.js必备框架(三) vue是一款渐进式javascript框架,由evan you开发.vue成为前端开发的必备之一. vue的好处轻量级,渐进式框架,响应式更新机制. 开发环境, ...
- Web前端-Vue.js必备框架(二)
Web前端-Vue.js必备框架(二) vue调式工具vue-devtools 过滤器:vue.js允许你自定义过滤器,可被用作一些常见的文本格式化. mustache插值和v-bind表达式. vu ...
- 聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_175 分片上传并不是什么新概念,尤其是大文件传输的处理中经常会被使用,在之前的一篇文章里:python花式读取大文件(10g/50 ...
- 非node环境下的vue.js 实现简单的购物车计算功能 样式请无视
都说vue的双向数据绑定好用,自己用了下,感觉做购物车没想象中好用.自己的实现如下: <!DOCTYPE html> <html lang="en"> &l ...
随机推荐
- Sass之二(进阶篇)
源码链接:http://pan.baidu.com/s/1o8M51hC 1. 数据类型 1.1 Number 数字类型,小数类型,带有像素单位的数字类型,全部都属于Number类型 Number类型 ...
- HDU_5512_Pagodas
Pagodas Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Sub ...
- 前端开发 - JQuery&Bootstrap - 总结
一.JavaScript和Jquery的区别 1.javascript的缺点: 1.书写繁琐,代码量大 2.代码复杂 3.动画效果,很难实现.使用定时器 各种操作和处理 2.定义: 1.Javascr ...
- Python程序员鲜为人知但你应该知道的16个问题(转)
add by zhj: 没找到原文出处,只能找到转载的,文中说有17个坑,其实是16个 全文如下 这篇文章主要介绍了Python程序员代码编写时应该避免的16个“坑”,也可以说成Python程序员代码 ...
- Python多线程、多进程和协程的实例讲解
线程.进程和协程是什么 线程.进程和协程的详细概念解释和原理剖析不是本文的重点,本文重点讲述在Python中怎样实际使用这三种东西 参考: 进程.线程.协程之概念理解 进程(Process)是计算机中 ...
- python全栈开发从入门到放弃之装饰器函数
什么是装饰器#1 开放封闭原则:对扩展是开放的,对修改是封闭的#2 装饰器本身可以是任意可调用对象,被装饰的对象也可以是任意可调用对象#3 目的:''' 在遵循 1. 不修改被装饰对象的源代码 2. ...
- javascript 类型 内存
ecmscript中包含两种类型 基本类型值 引用类型值(对象) 按值传递和按引用传递 function test ($num) { //按值传递,JavaScript中没有按引用 ...
- java 并发——理解 wait / notify / notifyAll
一.前言 前情简介: java 并发--内置锁 java 并发--线程 java 面试是否有被问到过,sleep 和 wait 方法的区别,关于这个问题其实不用多说,大多数人都能回答出最主要的两点区别 ...
- [HZNUOJ] 博
Description 定义一个数字序列为“非下降序列”: 此处我们约定用$n\;表示数字序列的长度,下面定义在n \in [1, \infty]时有效$ $if \;\; n = 1:$ $\;\; ...
- Python+Appium API
1.contextscontexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控 ...