热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手机html5卡,手机端js和html5刮刮卡效果

H5的Canvas实现刮刮卡效果。刮开之后是随机生成的8位码。IE8不行HTML5刮刮卡.demo{width:320px;margin:10pxauto20pxauto;m

H5的Canvas实现刮刮卡效果。 刮开之后是随机生成的8位码。

4be236b04b30a505593d8f5185b3ddd7.jpg

IE8不行...

HTML5 刮刮卡

.demo{width:320px; margin:10px auto 20px auto; min-height:300px;}

.msg{text-align:center; height:32px; line-height:32px; font-weight:bold; margin-top:50px}

HTML5 刮刮卡(支持手机)

刮开灰色部分看看,再来一次

//生成随机数据。n表示位数

var jschars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];

function generateMixed(n) {

var res = "";

for(var i = 0; i

var id = Math.ceil(Math.random()*61);

res += jschars[id];

}

//alert(res);

return res;

}

//禁用页面的鼠标选中拖动的事件

var bodyStyle = document.body.style;

bodyStyle.mozUserSelect = 'none';

bodyStyle.webkitUserSelect = 'none';

//定义图片类,获取canvas元素,并设置背景和位置属性

var img = new Image();

var canvas = document.getElementById('canvasTop');

var canvasBotm = document.getElementById('canvasBotm');

canvas.style.backgroundColor='transparent';

canvas.style.position = 'absolute';

canvasBotm.style.backgroundColor='#f3f3f3'; //验证码背景色

canvasBotm.style.position = 'absolute';

var imgs = ['p_0.jpg','p_1.jpg'];

var num = Math.floor(Math.random()*2);

img.src = imgs[num];

img.addEventListener('load', function(e) {

var ctx;

var w = img.width,

h = img.height;

var offsetX = canvas.offsetLeft,

offsetY = canvas.offsetTop;

var mousedown = false;

//函数layer()用来绘制一个灰色的正方形

function layer(ctx) {

ctx.fillStyle = 'grey';

ctx.fillRect(0, 0, w, h);

}

function layerBotm(ctxBotm) {

ctxBotm.fillStyle = 'grey';

ctxBotm.fillRect(0, 0, w, h);

}

//定义了按下事件

function eventDown(e){

e.preventDefault();

mousedown=true;

}

//定义了松开事件

function eventUp(e){

e.preventDefault();

mousedown=false;

}

//定义了移动事件

function eventMove(e){

e.preventDefault();

if(mousedown) { //当按下时,获取坐标位移,并通过arc(x, y, 10, 0, Math.PI * 2)来绘制小圆点

if(e.changedTouches){

e=e.changedTouches[e.changedTouches.length-1];

}

var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0,

y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0;

with(ctx) {

beginPath()

arc(x, y, 10, 0, Math.PI * 2);

fill();

}

}

}

//通过canvas调用以上函数,绘制图形,并且侦听触控及鼠标事件,调用相应的函数

canvas.width=w;

canvas.height=h;

canvasBotm.width=w;

canvasBotm.height=h;

//canvas.style.backgroundImage='url('+img.src+')';

//canvas.style.backgroundColor='#f3f3f3';

ctxBotm=canvas.getContext("2d");

ctx=canvasBotm.getContext("2d");

ctx.font="50px Arial";

// 创建渐变

var gradient=ctx.createLinearGradient(0,0,canvas.width,0);

gradient.addColorStop("0","magenta");

gradient.addColorStop("0.5","blue");

gradient.addColorStop("1.0","red");

//实习字体

ctx.fillStyle=gradient;

ctx.fillText(generateMixed(8),40,90);

//空心字体

ctx.strokeStyle=gradient;

ctx.strokeText(generateMixed(8),40,90);

ctx=canvas.getContext('2d');

ctx.fillStyle='transparent';

ctx.fillRect(0, 0, w, h);

layerBotm(ctxBotm);

layer(ctx);

ctx.globalCompositeOperation = 'destination-out';

canvas.addEventListener('touchstart', eventDown);

canvas.addEventListener('touchend', eventUp);

canvas.addEventListener('touchmove', eventMove);

canvas.addEventListener('mousedown', eventDown);

canvas.addEventListener('mouseup', eventUp);

canvas.addEventListener('mousemove', eventMove);

});

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。



推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • 关于如何快速定义自己的数据集,可以参考我的前一篇文章PyTorch中快速加载自定义数据(入门)_晨曦473的博客-CSDN博客刚开始学习P ... [详细]
  • [翻译]PyCairo指南裁剪和masking
    裁剪和masking在PyCairo指南的这个部分,我么将讨论裁剪和masking操作。裁剪裁剪就是将图形的绘制限定在一定的区域内。这样做有一些效率的因素࿰ ... [详细]
  •  项目地址https:github.comffmydreamWiCar界面做的很难看,美工方面实在不在行。重点是按钮触摸事件的处理,这里搬了RepeatListener项目代码,例 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 涉及的知识点-ViewGroup的测量与布局-View的测量与布局-滑动冲突的处理-VelocityTracker滑动速率跟踪-Scroller实现弹性滑动-屏幕宽高的获取等实现步 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
author-avatar
sweet梓潼_470
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有