美文网首页
javascript 拖动滑块验证效果实现

javascript 拖动滑块验证效果实现

作者: 何必自找失落_ | 来源:发表于2016-12-09 11:50 被阅读0次
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>拖动滑块验证</title>
        <link rel="stylesheet" type="text/css" href="css/reset.css">
        <style type="text/css">
            #demo{
                height: 30px;
                width: 260px;
                color: #000;
                margin: 20px auto;
                font-size: 14px;
                border: 1px solid #ccc;
                line-height: 30px;
                position: relative;
            }
            #bar,#ban,p{
                position: absolute;
                left: 0px;
                top: 0px;
            }
            p{
                height: 30px;
                width: 260px;
                text-align: center;
            }
            #bar{
                width: 40px;
                height: 30px;
                border-left: 1px solid #ccc;
                border-right: 1px solid #ccc;
                left: -1px;
                text-align: center;
                cursor: pointer;
            }
            #ban{
                height: 30px;
                background-color: #7ac23c;
            }
        </style>
    </head>
    <body>
        <div id="demo">
            <div id="ban">
            </div>
            <p>拖动滑块验证</p>
            <div id="bar">
                >>
            </div>
        </div>
        <script type="text/javascript">
            window.onload = function (){
                var ban = document.getElementById("ban");
                var bar = document.getElementById('bar');
                isMove = false;//是否可以移动 默认值false 当滑块点击就可以移动了
                var oldX = 0;// 鼠标的初始位置
                var isTrue = false //是否移动成功
                bar.onmousedown = function (event){
                    var event = event || window.event;
                    oldX = event.clientX;
                    isMove = true;// 按下之后可以滑动了
                    return false;
                }
                bar.onmouseout = bar.onmouseup = function (){
                    isMove = false;
                    // 如果 失败就会回到初始位置
                    if (!isTrue) {
                        goMoren();
                    }
                    return false;
                }
                function goMoren(){
                    var timer = setInterval(function (){
                        var speed = (bar.offsetLeft - (-1))/5;
                        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
                        bar.style.left = ban.style.width = bar.offsetLeft - speed + "px";
                        if (bar.offsetLeft == -1) {
                            clearInterval(timer);
                        }
                    },30)
                }
                document.onmousemove = function (event){
                    var event = event || window.event;
                    // 鼠标在窗口中滑动 且isMove 为true 确认滑动
                    if (isMove) {
                        var dirX =  event.clientX - oldX;
                        console.log(dirX);
                        bar.style.left = bar.offsetLeft + dirX + 'px';
                        //越界处理
                        if (bar.offsetLeft <= -1) {
                            bar.style.left = '-1px';
                        }
                        if (bar.offsetLeft + bar.offsetWidth >= 261) {
                            bar.style.left = 261 - bar.offsetWidth + 'px';
                            bar.innerHTML = "√";
                            bar.style.color = "#7ac23c";
                            isTrue = true;
                        }
                        ban.style.width = bar.offsetLeft + "px";
                        oldX = event.clientX;
                    }
                    return false;
                }
            }
        </script>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:javascript 拖动滑块验证效果实现

          本文链接:https://www.haomeiwen.com/subject/qjpemttx.html