首页 程序笔记 HTML5实现刮刮卡的效果

HTML5实现刮刮卡的效果

HTML5实现类似刮刮卡的功能

上面是最终实现刮刮卡效果

注意要点设置:

1.设置用户缩放:user-scalable=no|yes

[java] view plaincopyprint?

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />  

2.禁止拖动:

[java] view plaincopyprint?

document.ontouchmove = function(e){ e.preventDefault(); }; //文档禁止 touchmove事件  

3.禁止弹出选择菜单:

[java] view plaincopyprint?

document.documentElement.style.webkitTouchCallout = "none";  

具体实现代码:

[html] view plaincopyprint?

<!DOCTYPE html>  

<html lang="en">  

    <head>  

        <meta charset="UTF-8" />  

        <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport" />  

        <title>志玲传说</title>  

        <style type="text/css">  

            body {  

                width: 320px;  

                min-height: 568px;  

                overflow: hidden;  

                margin: 0;  

            }  

            #canvas {  

                background: url(img/lzl.jpg);  

                /*奖品图片*/  

                fixed center center no-repeat;  

                background-size: cover;  

                width: 320px;  

                min-height: 480px;  

                overflow: hidden;  

                position: relative;  

            }  

            .before {  

                background: none !important;  

            }  

            #canvas canvas {  

                cursor: url("img/bird.png") 0 0, auto;  

                /*PC端的手势图片*/  

            }  

        </style>  

    </head>  

    <body oncontextmenu="return false;" onselectstart="return false;">  

        <div id="canvas">  

        </div>  

    </body>  

    <script type="text/javascript">  

        (function() {  

            window.onload = function() {  

                /**禁止拖动设置*/  

                document.ontouchmove = function(e) {  

                    e.preventDefault();  

                };  

                /**判断浏览器是否支持canvas**/  

                try {  

                    document.createElement('canvas').getContext('2d');  

                } catch (e) {  

                    var addDiv = document.createElement('div');  

                    alert('您的手机不支持刮刮卡效果哦~!');  

                }  

            };  

            var u = navigator.userAgent,  

                mobile = 'PC';  

            if (u.indexOf('iPhone') > -1) mobile = 'iphone';  

            if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) mobile = 'Android';  

            function createCanvas(parent, width, height) {  

                var canvas = {};  

                canvas.node = document.createElement('canvas');  

                canvas.context = canvas.node.getContext('2d');  

                //此处可以自己给标签添加  

                canvas.node.width = width || 320;  

                canvas.node.height = height || 480;  

                //给canvas标签添加Id  

                canvas.node.id = 'canvasTag';  

                parent.appendChild(canvas.node);  

                return canvas;  

            }  

            function init(container, width, height, fillColor, type) {  

                var canvas = createCanvas(container, width, height);  

                var ctx = canvas.context;  

                // define a custom fillCircle method  

                ctx.fillCircle = function(x, y, radius, fillColor) {  

                    this.fillStyle = fillColor;  

                    this.beginPath();  

                    this.moveTo(x, y);  

                    this.arc(x, y, radius, 0, Math.PI * 2, false);  

                    this.fill();  

                };  

                ctx.clearTo = function(fillColor) {  

                    ctx.fillStyle = fillColor;  

                    ctx.fillRect(0, 0, width, height);  

                };  

                ctx.clearTo(fillColor || "#ddd");  

                canvas.node.addEventListener(mobile == "PC" ? "mousedown" : "touchstart", function(e) {  

                    canvas.isDrawing = true;  

                }, false);  

                canvas.node.addEventListener(mobile == "PC" ? "mouseup" : "touchend", function(e) {  

                    canvas.isDrawing = false;  

                }, false);  

                canvas.node.addEventListener(mobile == "PC" ? "mousemove" : "touchmove", function(e) {  

                    if (!canvas.isDrawing) {  

                        return;  

                    }  

                    if (type == 'Android') {  

                        var x = e.changedTouches[0].pageX - this.offsetLeft;  

                        var y = e.changedTouches[0].pageY - this.offsetTop;  

                    } else {  

                        var x = e.pageX - this.offsetLeft;  

                        var y = e.pageY - this.offsetTop;  

                    }  

                    var radius = 20;  

                    var fillColor = '#ff0000';  

                    ctx.globalCompositeOperation = 'destination-out';  

                    ctx.fillCircle(x, y, radius, fillColor);  

                }, false);  

            }  

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

            init(container, 320, 568, '#696868', mobile);  

        })();  

    </script>  

</html>  

如有问题欢迎吐槽。

3

站心网

HTML5实现类似刮刮卡的功能 上面是最终实现刮刮卡效果 注意要点设置: 1.设置用户缩放:user-scalable=no|y..

为您推荐

html/js调用本地邮箱发送邮件

用a标签:<a href="mailto:收件人邮箱?subject=test&cc=抄送人邮箱&subject=主题&body=内容">调用邮箱本地发送邮件</a>js发送:/*js调用本地邮箱发送邮件*/function mailsome1() {var who = prompt("请输入收件人邮..

使用 html2canvas 实现截图功能

html2canvas 是一个开源的 JavaScript 库,用于将网页上的 HTML 元素渲染成图像。它通过遍历页面的 DOM 树和计算样式,然后将其绘制到 <canvas> 元素上,最终生成图片。该库不依赖服务器端,而是通过浏览器端的 Java..

网站统计中的访问信息收集的前端实现

网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascri..

使用SuperWebSocket实现Web消息推送

在大部分Web系统中,我们可能遇到需要向客户端推送消息的需求。SuperWebSocket第三方库能让我们轻松的完成任务。SuperWebSocket第三方库可以从网上下载,不过通过Visual Studio Nuget安装更快。引用SuperWebSocket相..

.NET C# 使用Hook钩子实现全局监听键盘和鼠标

C# 是一种面向对象的编程语言,具有丰富的类库和工具支持,适用于各种类型的应用程序开发。Windows 提供了一种称为"钩子"(Hook)的机制,允许拦截并处理系统级别的事件,如键盘按键和鼠标移动。通过结合 C# 和 Hook..

.NET C#连接FTP实现文件上传下载

在 .NET 中可以使用 System.Net.FtpWebRequest 类来连接 FTP 服务器,实现文件上传和下载。以下是实现文件上传和下载的完整代码示例。1. 上传文件到 FTP 服务器using System;using System.IO;using System.Net;class..

C#使用 Attribute 实现 AOP 功能

在 C# 中,通过自定义 Attribute 并结合一些技术(如动态代理、反射等)可以实现 AOP(面向切面编程)。AOP 通常用于日志记录、性能监控、权限验证等横切关注点。以下是一个使用 C# Attribute 实现 AOP 功能的示例。..

使用CSS columns-visibility实现砌体布局

CSS的 columns 属性(如 columns、column-count 和 column-width)通常用于多列文本布局,而不是直接用于砌体布局。然而,结合 columns 和 visibility 属性,可以在某些情况下实现类似砌体布局的效果,虽然它并不完..

GreenSock: 高性能的 HTML5 动画库

在现代网页开发中,动画已经成为提升用户体验的关键元素。无论是滚动效果、页面切换、按钮点击还是复杂的交互动画,良好的动画效果不仅能吸引用户,还能使界面更加生动、易用。GreenSock(GSAP,GreenSock Animation..

HTQL 提取和查询HTML和XML数据的轻量级查询语言

HTQL(Hyper-Text Query Language)是一种用于提取和查询HTML和XML数据的轻量级查询语言。HTQL提供类似SQL的语法,可以方便地从网页或其他基于标签的文档中提取结构化数据,而无需解析整个文档。这使得它在爬虫、数..

js使用IntersectionObserver实现锚点在当前页面视口时导读高亮

在 JavaScript 中可以通过监听页面滚动事件,检查每个锚点的位置,并根据当前滚动位置高亮相应的导航项,从而实现页面内锚点链接的导读高亮效果。交叉观察器 API(Intersection Observer API)提供了一种异步检测目..

js使用scroll事件实现锚点滚动到页面顶部时导航高亮

在 JavaScript 中,可以通过监听页面滚动事件,并判断页面顶部与各个锚点的距离来实现导航高亮效果。当某个锚点的内容块滚动到页面顶部时,自动高亮相应的导航项。以下是实现方式:1. HTML 结构假设我们有多个内容区..

ASP.NET Core实现多语言本地化Web应用程序

构建全球可访问的网站和应用程序需要对内容进行适当的本地化,以吸引来自不同文化和地区的用户。ASP.NET Core 提供强大的本地化支持,以用户首选的语言和格式呈现内容。在本综合指南中,我们将探索 ASP.NET Core 中..

支付宝第三方支付平台对接原理和实现

如果把商户网站使用第三方支付平台(比如支付宝)的原理搞清楚,那编程就变得简单多了。 整个过程大致这样: 1、商户与支付宝签约。 2、在商户网站购买商品,填写数量,确定购买后跳转到结账页面。结账页面可能包括订..

类似php iconv的函数功能,C#实现方法

在与一个第三方接口对接时,发现对方无法用GZip解压我发过去的数据,看了对方PHP的示例代码,发现对方使用的是PHP的$file = iconv("IOS-8859-1","UTF-8",gzencode($data_json));大致意思是要先压缩,在把压缩的数组..

c#实现与Java无差异的GZip压缩和GZip解压缩

c#实现与Java无差异的GZip压缩和GZip解压缩,其中有个坑就是GZip压缩的时候,只有在GZipStream在Dispose后调应对应MemoryStream.ToArray()所得到的结果才是正确的压缩数据。如果在zipStream.Write(bytes, 0, bytes.L..

.NET Core 管道模型中间件及管道模拟实现

管道,PipelineASP.NET Core 路由,认证,绘画,缓存,都是由管道来处理的中间件。MVC WEB API,都是建立在某个特殊的中间件之上。MVC,路由的中间件,请求地址和控制器之间的映射,在此基础上实现了实例化控制器,..

Linq to Object的Where和Select实现原理

Linq的Where是一个基于委托的代码封装,把数据筛选的通用逻辑完成,把判断逻辑交给委托传递。Select是基于委托的代码封装,把数据转换的通用逻辑完成,把转换逻辑交给委托传递。Linq还有很多方法,这些方法大多都是..

ASP.NET MVC4/5实现asp-append-version为css/js带上版本号

.NET Core MVC/Razor Page中使用TagHelpers的asp-append-version属性就可以为css或者js文件加上版本号。例如:<linkrel="stylesheet"href="~/css/site.min.css"asp-append-version="true"/>这样输出的Html是这样的:..

什么是微服务架构?它与单体应用程序架构有什么区别?如何在.NET中实现微服务架构?

微服务架构是一种软件架构风格,通过将应用程序拆分为一组小型、自治的服务来构建应用程序。每个服务都专注于解决特定的业务功能,并通过轻量级的通信机制进行交互。这些服务可以独立开发、部署和扩展,可以使用不同..

发表回复

返回顶部