1.前端页面应用滑块验证可以防止页面频繁向后台请求数据;
2.主要用到js事件:
onmousedown() 鼠标按下时响应
onmousemove() 鼠标移动时响应
onmouseup() 鼠标弹起时响应
3.获取页面距离:
e.clientX
obj.offsetWidth
obj.offsetLeft
4.代码:
html:
- <div class="box">
- <div class="txt">滑块验证</div>
- <div class="btn">>></div>
- <div class="bg"></div>
- </div>
css:
- *{
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- }
- .box{
- position: relative;
- width:300px;
- height:30px;
- background-color: #ccc;
- margin:20px auto;
- font-size:14px;
- line-height:30px;
- box-sizing:border-box;
- z-index:1;
- }
- .txt{
- position: absolute;
- left: 50%;
- top:0;
- transform: translateX(-50%);
- color:blue;
- z-index:3;
- }
- .btn{
- position: absolute;
- top:0;
- left: 0;
- width:40px;
- height:30px;
- border:1px solid #ccc;
- background-color: #fff;
- text-align: center;
- line-height: 30px;
- cursor: move;
- box-sizing: border-box;
- z-index:4;
- }
- .bg{
- position: absolute;
- left: 0;
- top:0;
- width:0;
- height:30px;
- background-color:green;
- box-sizing: border-box;
- z-index:2;
- }
js:
- window.onload = function(){
- var box = document.querySelector(".box"),
- txt = document.querySelector(".txt"),
- btn = document.querySelector(".btn"),
- bg = document.querySelector(".bg"),
- end = false;
- btn.onmousedown = function(e){
- var e = e || window.event;
- var point = e.clientX - box.offsetLeft;
- btn.onmousemove = function(e){
- var moveW = e.clientX - box.offsetLeft - point;
- btn.style.left = moveW + "px";
- bg.style.width = moveW + "px";
- if(btn.offsetLeft<=0){
- btn.style.left = "0";
- }
- if(btn.offsetLeft>=(box.clientWidth - btn.clientWidth)){
- btn.style.left = box.clientWidth - btn.clientWidth
- txt.innerHTML = "验证完成";
- btn.onmousemove = null;
- btn.onmousedown = null;
- end = true;
- }
- }
- btn.onmouseup = function(){
- btn.onmousemove = null;
- if(!end){
- btn.style.left = "0";
- bg.style.width = "0";
- }
- }
- }
- }
5.显示

-