这是微信H5的一款小游戏(一款酒的推广活动),主要游戏页面如下:

游戏规则:

  1. 点击选择2个元素(圈圈图片),放入瓶中,使它们与瓶中已有的三个元素碰撞,调配佳酿。
  2. 只有选择正确的2个元素搭配,才可以调配出对应的好酒,然后就进入奖励礼品页面啦~

正确的选择答案是(用户是不知道这个信息的 ):

选择 以上3条线上的任意2个元素 组合搭配,都可以调酒成功,否则为失败。

技术考虑点:

1. 只能选2个元素,多选或少选,都会出现错误提示信息。

2. 点击元素后,相应的元素出现在瓶子里,同时自己消失。

3. 判断用户是否选择了正确的元素搭配。

HTML代码如下:

 <!-- 瓶子外的六个元素 -->
<div id="pf">
<img src="data:images/pf_hx.png" class="pf_hx">
<img src="data:images/pf_td.png" class="pf_td">
<img src="data:images/pf_cc.png" class="pf_cc">
<img src="data:images/pf_yy.png" class="pf_yy">
<img src="data:images/pf_cx.png" class="pf_cx">
<img src="data:images/pf_sr.png" class="pf_sr">
</div> <!-- 瓶子内等待用户选择两个元素放入 -->
<div id="pf_selected">
</div> <!-- 按钮 -->
<a id="confirm_btn" class="btns">确认调配</a>
<a id="reset_btn" class="btns">重新调配</a>

CSS省略...

JS 代码(实现技术点1、2):

 //点击任意一个元素,发生的动作
$("#pf").find("img").click(function(){
var content = $(this).clone(); // 把被点击的元素保存起来
// 判断瓶子里面是否有两个元素了
var pf_selected = $("#pf_selected").find("img");
if (pf_selected.size()<2){
$("#pf_selected").append(content); //把被点击的元素放入瓶子中
$(this).hide();
}
else{
alert("只能添加两种酒!")
}
})

其实这里的代码可以优化一下,我们这里虽然只有6个元素,那假设有100个元素,用以上方式的时候,你绑定了100个事件,这将可能带来很负面的性能影响。那么有什么更好的方式呢?

当多个元素都调用同一个函数时,用event.target会很有效果。你只要向它们的父节点绑定一次事件,然后通过event.target获取到点击的当前元素。

优化后的代码如下:

 $("#pf").click(function(e){
var clicked = $(e.target); // e.target 捕捉到触发的目标元素
var content = clicked.clone(); //把获取到的目标元素保存起来
var selected_img = $("#pf_selected").find("img")
if (selected_img.size()<2){
$("#pf_selected").append(content);
clicked.hide(); // 触发的目标元素消失
}
else{
alert("只能添加两种酒!")
}
})

JS代码 (实现技术点3:判断用户选择是否正确)

 var mixStyle = ""; //选择口味

 $("#pf").click(function(e){
var clicked = $(e.target);
var content = clicked.clone(); // 获取用户选择的信息,保存在“mixStyle”中
switch (content.attr('class')) {
case "pf_hx":
if (mixStyle === "")
mixStyle = "花香别致";
else
mixStyle = mixStyle + "|花香别致";
break;
case "pf_td":
if (mixStyle === "")
mixStyle = "甜淡清雅";
else
mixStyle = mixStyle + "|甜淡清雅";
break;
case "pf_cc":
if (mixStyle === "")
mixStyle = "层次复杂";
else
mixStyle = mixStyle + "|层次复杂";
break;
case "pf_yy":
if (mixStyle === "")
mixStyle = "愉悦舒爽";
else
mixStyle = mixStyle + "|愉悦舒爽";
break;
case "pf_cx":
if (mixStyle === "")
mixStyle = "醇香沉厚";
else
mixStyle = mixStyle + "|醇香沉厚";
break;
case "pf_sr":
if (mixStyle === "")
mixStyle = "舒润清甜";
else
mixStyle = mixStyle + "|舒润清甜";
break;
} var selected_img = $("#pf_selected").find("img")
if (selected_img.size()<2){
$("#pf_selected").append(content);
clicked.hide();
}
else{
alert("只能添加两种酒!")
}
}) //点击确认调配按钮
$("#confirm_btn").click(function(){
if ($("#pf_selected").find("img").length < 2) {
alert("请选择两种元素!");
return;
}
var mixResult = "失败"; //调配结果
if (mixStyle === "舒润清甜|花香别致" || mixStyle === "花香别致|舒润清甜"
|| mixStyle === "甜淡清雅|愉悦舒爽" || mixStyle === "愉悦舒爽|甜淡清雅"
|| mixStyle === "层次复杂|醇香沉厚" || mixStyle === "醇香沉厚|层次复杂") {
mixResult = "成功";
}
alert(mixResult); })

其他页面们

微信H5页面 - 调酒的更多相关文章

  1. C#开发微信门户及应用(44)--微信H5页面开发的经验总结

    在我们开发微信页面的时候,需要大量用到了各种呈现的效果,一般可以使用Boostrap的效果来设计不同的页面,不过微信团队也提供很多这方面的资源,包括JSSDK的接口,以及Weui的页面样式和相关功能页 ...

  2. 领导让我重新做一个微信H5页面!

    leader:我们需要做一个微信H5页面,效果如图,功能如描述,时间越快越好. 需求是不是很简单呢?2015-11-24 12:44:00文末有最新更新 背景描述 前几天微信转发相关项目开发后,这是第 ...

  3. js-禁止微信H5页面点击右上角菜单时出现“复制链接”,且分享仅支持微信分享

    禁止微信H5页面点击右上角菜单时出现“复制链接”,这个问题已经影响到我很久很久了,起码有2年了, 昨天写H5活动的时候,需求有一个是:可分享,但是禁止复制活动链接, 这一下,就逼我务必好好研究研究了. ...

  4. 微信H5页面前端开发,大多数人都会遇到的几个兼容性坑

    最近给公司微信公众号,写了微信h5业务页面,总结分享一下前端开发过程中的几个兼容性坑,项目直接拿的公司页面,所以下文涉及图片都模糊处理了. 1.ios端兼容input光标高度 问题详情描述:input ...

  5. 微信h5页面调用第三方位置导航

    微信h5页面拉起第三方导航应用 需要准备的: 通过微信认证的公众号有备案过的域名 背景:微信公众号点击菜单栏跳到h5页面,需要用到导航功能 需求:当用户点击导航按钮时,跳转到第三方app进行导航 参考 ...

  6. 微信h5页面下拉露出网页来源的解决办法

    微信h5页面下拉露出网页来源的解决办法:将document的touchmove事件禁止掉 //禁止页面拖动 document.addEventListener('touchmove', functio ...

  7. 微信H5页面内实现一键关注公众号

    H5页面内实现关注公众号的微信JSSDK没有相关接口开放,因此就得动点脑筋来实现该功能了.下面的方法就是通过一种非常蹊跷的方式实现的. 首先,需要在公众号内发表一篇原创文章,注意是原创文章,然后由另一 ...

  8. 微信H5页面 会被软键盘顶起来

    问题描述:H5页面在微信中打开,input输入框获取焦点时,页面被软键盘顶上去:关闭软键盘时,页面不会自动下来(恢复初始状态) H5页面在微信中初始状态如下图: input输入框获取焦点时,页面被软键 ...

  9. 解决微信H5页面软键盘弹起后页面下方留白的问题(iOS端)

    前言:微信H5项目,ios端出现了软键盘输完隐藏后页面不会回弹,下方会有一大块留白 最近微信和ios都有版本升级,不知道是哪边升级造成的,但是经过测试,软键盘收起后,再滚动一下页面,下面的留白就会消失 ...

随机推荐

  1. Qt项目——数字内容管理系统的参考资料和细节

    打开文件路径,若带空格,要用引号括起路径 LPCWSTR与QString的转换:LPCWSTR strL = strQ.toStdWString().c_str(); 用指定程序打开文件(选择文件的打 ...

  2. loadrunner-3个难点

    1.loadrunner 监控windows资源 2.loadrunner如何实现如下: 1.1.1.1 场景一 10进程同时新增用户 测试场景说明:10进程新增用户, 第一个进程从1到1000,第二 ...

  3. Leetcode 215.数组中的第k个最大元素

    数组中的第k个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 ...

  4. NYOJ-769乘数密码,逆元解法;

    乘数密码 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 ->    Link    <- 简单代替密码的第二种,比移位密码稍微复杂点,不过鉴于NYOJ,是完全可以 ...

  5. [POJ2774][codevs3160]Long Long Message

    [POJ2774][codevs3160]Long Long Message 试题描述 The little cat is majoring in physics in the capital of ...

  6. LA3263 一笔画

    题目大意:依次给定多个点(要求第一个点和最后一个点重叠),把前后两个点相连求最后得到的图形的面的个数 根据欧拉定理: 设平面图的顶点数为V,边数为E,面数为F,则V+F-E = 2 这里的E是指如果一 ...

  7. Mayor's posters POJ - 2528

    The citizens of Bytetown, AB, could not stand that the candidates in the mayoral election campaign h ...

  8. CSS实现自适应不同大小屏幕的背景大图的两种方法(转自简书)

    CSS实现自适应不同大小屏幕的背景大图的两种方法 一张清晰漂亮的背景图片能给网页加分不少,设计师也经常会给页面的背景使用大图,我们既不想图片因为不同分辨率图片变形,也不希望当在大屏的情况下,背景有一块 ...

  9. Linux NFS服务器的安装与配置(转载)

    一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 ...

  10. pycharm支持react

    安装nodejs插件 使能node 出现下面的变化,在scope里可以定义使用的范围 创建react项目 使能eslint规则检查功能 配置前端启动脚本: https://www.jetbrains. ...