【前端】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 ...
随机推荐
- 把www.domain.com均衡到本机不同的端口 反向代理 隐藏端口 Nginx做非80端口转发 搭建nginx反向代理用做内网域名转发 location 规则
负载均衡-Nginx中文文档 http://www.nginx.cn/doc/example/loadbanlance.html 负载均衡 一个简单的负载均衡的示例,把www.domain.com均衡 ...
- xpath-grab english name
from scrapy.spider import Spider from scrapy.crawler import CrawlerProcess import pymysql conn = pym ...
- ctf-HITCON-2016-houseoforange学习
目录 堆溢出点 利用步骤 创建第一个house,修改top_chunk的size 创建第二个house,触发sysmalloc中的_int_free 创建第三个house,泄露libc和heap的地址 ...
- ArcGIS Server管理工具之批量发布动态地图服务工具.md
友好阅读链接:(http://swj.me/2015/08/26/batchPublishtools/) update0918: 修复了创建链接文件时而出错的bug 修复了在24011的警告已处理的情 ...
- android开发笔记(一)Android studio 输入法
以前都是用的时候查资料做些增添即可,现在下决心系统学习下. 首先发现developer.Android.com在开发工具上开始推出了 Android Studio了,不过他自己没有sdk manage ...
- Java 之NIO
1. NIO 简介 Java NIO(New IO)是从1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API; NIO 与原来的IO有同样的作用和目的,但是使用的方式完全不同 ...
- git子模块submodule
添加submodule: git submodule add 子模块git地址 把这个module放置的文件夹(这个文件夹须事先不存在) git submodule add http://xxx.x ...
- Oracle 学习笔记 12 -- 序列、索引、同义词
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/Topyuluo/article/details/24232449 数据库的对象包含:表.视图.序列. ...
- 联想yoga table2 1371f 进入bios 的巧妙方法
win8.1 的平板,无键盘,触屏失灵,接了个鼠标 我在这里向大家介绍最后一个方法<ignore_js_op>▲在metro界面下找到设置选项 <ignore_js_op> ...
- Linux系统常用命令汇总
命令格式:命令 -选项 参数,例如:ls -la /usr:当有多个选项时,可以写在一起.ifconfig:查看当前机器的IP信息service network restart:重启网络服务servi ...