A Pen by Edward Lance Lorilla on CodePen.
Created
June 6, 2021 16:12
-
-
Save edwardlorilla/d0394de6b74b4be13a729bd070577161 to your computer and use it in GitHub Desktop.
【JavaScript html 】 sliding verification
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div id="dragContainer"><!-- Initial background of container --> | |
<div id="dragBg"></div><!-- Green background --> | |
<div id="dragText"></div><!-- Sliding container text --> | |
<div id="dragHandler" class="dragHandlerBg"></div> | |
</div> <!-- Slider Initial background of the slider --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//Load (the event will be triggered after the page is loaded) | |
window.onload = function() { | |
//Get the sliding control container, gray background | |
var dragContainer = document.getElementById("dragContainer"); | |
//Get the left part of the slider, green background | |
var dragBg = document.getElementById("dragBg"); | |
//Get the sliding verification container text | |
var dragText = document.getElementById("dragText"); | |
//Get the slider | |
var dragHandler = document.getElementById("dragHandler"); | |
//The maximum offset of the slider = the text length of the sliding verification container-the length of the slider | |
var maxHandlerOffset = dragContainer.clientWidth-dragHandler.clientWidth; | |
//Whether the verification is successful | |
var isVertifySucc = false; | |
initDrag(); | |
function initDrag() { | |
//Write "drag slider verification" in the sliding verification container text | |
dragText.textContent = "Drag the slider to verify"; | |
//Add mouse press monitoring to the slider | |
dragHandler.addEventListener("mousedown", onDragHandlerMouseDown); | |
} | |
//Select the slider | |
function onDragHandlerMouseDown() { | |
//Mouse movement monitoring | |
document.addEventListener("mousemove", onDragHandlerMouseMove); | |
//Release the mouse to | |
document.addEventListener("mouseup", onDragHandlerMouseUp); | |
} | |
//Sliders move | |
function onDragHandlerMouseMove() { | |
/* | |
There is no width attribute for html elements, only clientWidth | |
offsetX is relative to the current element, clientX and pageX are relative to its parent element | |
*/ | |
//The amount of slider movement | |
var left = event.clientX-dragHandler.clientWidth / 2; | |
// | |
if(left <0) { | |
left = 0; | |
//If the movement of the slider> the maximum offset of the slider, call the verification success function | |
} else if(left> maxHandlerOffset) { | |
left = maxHandlerOffset; | |
verifySucc(); | |
} | |
//The amount of slider movement | |
dragHandler.style.left = left + "px"; | |
//The length of the green background | |
dragBg.style.width = dragHandler.style.left; | |
} | |
//Release the slider function | |
function onDragHandlerMouseUp() { | |
//Remove mouse movement monitoring | |
document.removeEventListener("mousemove", onDragHandlerMouseMove); | |
//Remove the mouse and release the monitor | |
document.removeEventListener("mouseup", onDragHandlerMouseUp); | |
//Initialize the movement of the slider | |
dragHandler.style.left = 0; | |
//Initialize the green background | |
dragBg.style.width = 0; | |
} | |
//Verification is successful | |
function verifySucc() { | |
//Successful mark, no rebound | |
isVertifySucc = false; | |
//The text of the container text is changed to white "verification passed" font | |
dragText.textContent = "Verification passed"; | |
dragText.style.color = "white"; | |
//Verify the background of the slider passed | |
dragHandler.setAttribute("class", "dragHandlerOkBg"); | |
//Remove mouse press monitoring | |
dragHandler.removeEventListener("mousedown", onDragHandlerMouseDown); | |
//Remove mouse movement monitoring | |
document.removeEventListener("mousemove", onDragHandlerMouseMove); | |
//Remove the mouse and release the monitor | |
document.removeEventListener("mouseup", onDragHandlerMouseUp); | |
// After the match is successful, write the page you want to jump to | |
//window.location.href="success page.html" rel="external nofollow"; | |
}; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#dragContainer { | |
position: relative; | |
display: inline-block; | |
background: #e8e8e8; | |
width: 300px; | |
height: 33px; | |
border: 2px solid #e8e8e8; | |
} | |
#dragBg { | |
position: absolute; | |
background-color: #7ac23c; | |
width: 0px; | |
height: 100%; | |
} | |
#dragText { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
text-align: center; | |
line-height: 33px; | |
user-select: none; | |
-webkit-user-select: none; | |
} | |
#dragHandler { | |
position: absolute; | |
width: 40px; | |
height: 100%; | |
cursor: move; | |
} | |
.dragHandlerBg { | |
background: #fff no-repeat center url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg=="); | |
} | |
.dragHandlerOkBg { | |
background: #fff no-repeat center url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg=="); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment