|
2 | 2 | <html>
|
3 | 3 | <head>
|
4 | 4 | <meta charset="UTF-8">
|
5 |
| - <title>跟随对联广告-豪情</title> |
| 5 | + <title>拖动滑块验证-豪情</title> |
6 | 6 | <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
|
7 | 7 | <style type="text/css">
|
8 | 8 | *{ margin:0; padding:0; }
|
|
13 | 13 | .inner{ padding:15px; }
|
14 | 14 | .clearfix{ overflow:hidden; _zoom:1; }
|
15 | 15 | .none{ display:none; }
|
16 |
| - #drag{position:relative;background-color:#e8e8e8;width:300px;height:34px;line-height:34px;text-align:center;} |
17 |
| - #drag .handler{position:absolute;top:0px;left:0px;width:40px;height:32px;border:1px solid #ccc;cursor:move;} |
| 16 | + #slider{position:relative;background-color:#e8e8e8;width:300px;height:34px;line-height:34px;text-align:center;} |
| 17 | + #slider .handler{position:absolute;top:0px;left:0px;width:40px;height:32px;border:1px solid #ccc;cursor:move;} |
18 | 18 | .handler_bg{background:#fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;}
|
19 | 19 | .handler_ok_bg{background:#fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;}
|
20 |
| - #drag .drag_bg{background-color:#7ac23c;height:34px;width:0px;} |
21 |
| - #drag .drag_text{position:absolute;top:0px;width:300px;-moz-user-select:none;-webkit-user-select:none;user-select:none;-o-user-select:none;-ms-user-select:none;} |
| 20 | + #slider .drag_bg{background-color:#7ac23c;height:34px;width:0px;} |
| 21 | + #slider .drag_text{position:absolute;top:0px;width:300px;-moz-user-select:none;-webkit-user-select:none;user-select:none;-o-user-select:none;-ms-user-select:none;} |
| 22 | + .unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;} |
| 23 | + .slide_ok{color:#fff;} |
22 | 24 | </style>
|
23 | 25 | </head>
|
24 | 26 | <body>
|
25 | 27 | <div class="wrap">
|
26 |
| - <div id="drag"> |
| 28 | + <div id="slider"> |
27 | 29 | <div class="drag_bg"></div>
|
28 | 30 | <div class="drag_text" onselectstart="return false;" unselectable="on">拖动滑块验证</div>
|
29 | 31 | <div class="handler handler_bg"></div>
|
30 | 32 | </div>
|
31 | 33 | </div>
|
32 |
| -<div style="display:none1;"> |
| 34 | +<div style="display:none;"> |
33 | 35 | <div id="div" style="width:100px;height:200px;background:#000;"></div>
|
34 | 36 | <button id="btn">test</button>
|
35 | 37 | </div>
|
36 | 38 | <script>
|
37 | 39 | (function(){
|
38 |
| - |
| 40 | + var dog = { |
| 41 | + $ : function(id){ |
| 42 | + return document.querySelector(id); |
| 43 | + }, |
| 44 | + on: function(el, type, handler){ |
| 45 | + el.addEventListener(type, handler, false); |
| 46 | + }, |
| 47 | + off: function(el, type, handler){ |
| 48 | + el.removeEventListener(type, handler, false); |
| 49 | + } |
| 50 | + } |
| 51 | + function Slider(){ |
| 52 | + var args = arguments[0]; |
| 53 | + for(var i in args){ |
| 54 | + this[i] = args[i]; |
| 55 | + } |
| 56 | + this.init(); |
| 57 | + } |
| 58 | + Slider.prototype = { |
| 59 | + init : function(){ |
| 60 | + this.getDom(); |
| 61 | + this.dragBar(this.handler); |
| 62 | + }, |
| 63 | + getDom : function(){ |
| 64 | + this.slider = dog.$('#' + this.id); |
| 65 | + this.handler = dog.$('.handler'); |
| 66 | + this.bg = dog.$('.drag_bg'); |
| 67 | + }, |
| 68 | + dragBar : function(handler){ |
| 69 | + var that = this, |
| 70 | + startX = 0, |
| 71 | + lastX = 0, |
| 72 | + doc = document, |
| 73 | + width = this.slider.offsetWidth, |
| 74 | + max = width - handler.offsetWidth, |
| 75 | + drag = { |
| 76 | + down : function(e){ |
| 77 | + that.slider.classList.add('unselect'); |
| 78 | + startX = e.clientX - handler.offsetLeft; |
| 79 | + dog.on(doc, 'mousemove', drag.move); |
| 80 | + dog.on(doc, 'mouseup', drag.up); |
| 81 | + return false; |
| 82 | + }, |
| 83 | + move : function(e){ |
| 84 | + lastX = e.clientX - startX; |
| 85 | + lastX = Math.max(0, Math.min(max, lastX)); |
| 86 | + if(lastX >= max){ |
| 87 | + handler.classList.add('handler_ok_bg'); |
| 88 | + that.slider.classList.add('slide_ok'); |
| 89 | + dog.off(handler, 'mousedown', drag.down); |
| 90 | + drag.up(); |
| 91 | + } |
| 92 | + that.bg.style.width = lastX + 'px'; |
| 93 | + handler.style.left = lastX + 'px'; |
| 94 | + }, |
| 95 | + up : function(){ |
| 96 | + that.slider.classList.remove('unselect'); |
| 97 | + if(lastX < width){ |
| 98 | + that.bg.style.width = 0; |
| 99 | + handler.style.left = 0; |
| 100 | + } |
| 101 | + dog.off(doc, 'mousemove', drag.move); |
| 102 | + dog.off(doc, 'mouseup', drag.up); |
| 103 | + } |
| 104 | + } |
| 105 | + dog.on(handler, 'mousedown', drag.down); |
| 106 | + } |
| 107 | + } |
| 108 | + var defaults = { |
| 109 | + id : 'slider', |
| 110 | + } |
| 111 | + new Slider(defaults); |
39 | 112 | }());
|
40 | 113 | </script>
|
41 | 114 | </body>
|
|
0 commit comments