angular2.x 实现滑动拼图验证码功能

本文介绍了如何在Angular2.x版本及以上实现滑动拼图验证码功能,包括引入js、配置js、引入css文件、组件内使用及ts中引用的相关步骤。同时,文章提供了一个简单的使用示例和注意事项,并提供了原始代码资源链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

angular2.x 实现滑动拼图验证码功能

滑动拼图验证码功能请参考原文链接,感谢作者分享!
- http://www.cnblogs.com/huanglei-/p/8568405.html
- 图片链接和图片上传


下面举例说明在angular2版本及以上版本怎么实现此功能。

引入js

首先将封装好的js插件引入到项目目录下
这里写图片描述

配置js

全局配置
第一种方法是:找到配置文件 angular-cli.json
这里写图片描述
配置里边的script
这里写图片描述
第二种方法:直接在index.html中引入即可
这里写图片描述

引入css文件(全局样式)

直接引入index中的header 标签内即可
这里写图片描述

组件内使用滑块验证码功能

在login 组件内使用
这里写图片描述
在login.html中写入html片段
这里写图片描述
注意:因为在login.html中可能有好几个页面(首页/登录/忘记密码)此时不要通过*ngIf 或者 [hidden] 属性进行现实或隐藏。此处用的是 display:none和display :block 来控制的,以便滑块验证码初始化的时候可以找到元素。

ts中引用

先在login.component.ts中引入
这里写图片描述
封装加载的方法:这里我是在页面初始化就加载了,但是可能所在元素是display:none 状态,所以用了一个三元运算符进行取值,以便找到需要初始化的dom
这里写图片描述
初始化加载 备注:全局只需加载一次即可。
这里写图片描述

示意图 :鼠标划过的时候 显示图片。
这里写图片描述
这里写图片描述

以上就是我的使用心得。在原来基础上做了部分修改,原始的例子和代码请参考原创地址!

http://www.cnblogs.com/huanglei-/p/8568405.html

下面是本例的js css 和 ts

slidingCode.js

(function (window) {
    const l = 42, // 滑块边长
        r = 10, // 滑块半径
        w = 310, // canvas宽度
        h = 155, // canvas高度
        PI = Math.PI
    const L = l + r * 2 // 滑块实际边长

    function getRandomNumberByRange(start, end) {
        return Math.round(Math.random() * (end - start) + start)
    }

    function createCanvas(width, height) {
        const canvas = createElement('canvas')
        canvas.width = width
        canvas.height = height
        return canvas
    }

    function createImg(onload) {
        const img = createElement('img')
        img.crossOrigin = "Anonymous"
        img.onload = onload
        img.onerror = () => {
            img.src = getRandomImg()
        }
        img.src = getRandomImg()
        return img
    }

    function createElement(tagName) {
        return document.createElement(tagName)
    }

    function addClass(tag, className) {
        tag.classList.add(className)
    }

    function removeClass(tag, className) {
        tag.classList.remove(className)
    }

    function getRandomImg() {
        return 'https://picsum.photos/300/150/?image=' + getRandomNumberByRange(0, 1084)
    }

    function draw(ctx, operation, x, y) {
        ctx.beginPath()
        ctx.moveTo(x, y)
        ctx.lineTo(x + l / 2, y)
        ctx.arc(x + l / 2, y - r + 2, r, 0, 2 * PI)
        ctx.lineTo(x + l / 2, y)
        ctx.lineTo(x + l, y)
        ctx.lineTo(x + l, y + l / 2)
        ctx.arc(x + l + r - 2, y + l / 2, r, 0, 2 * PI)
        ctx.lineTo(x + l, y + l / 2)
        ctx.lineTo(x + l, y + l)
        ctx.lineTo(x, y + l)
        ctx.lineTo(x, y)
        ctx.fillStyle = '
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值