Как создать многоступенчатый индикатор выполнения с помощью Bootstrap?
В этой статье мы создадим многоступенчатый индикатор выполнения с помощью Bootstrap. В дополнение к Bootstrap мы будем использовать jQuery для манипуляций с DOM.
Индикаторы выполнения используются для визуализации количества выполненной работы. Сила индикатора выполнения указывает на прогресс работы. Обычно он используется в онлайн-веб-приложениях, таких как YouTube, GitHub и т. Д., Чтобы показать, как страница загружена на данный момент. Вы также можете найти индикатор выполнения при загрузке или загрузке контента в веб-приложение.
Многошаговый индикатор выполнения используется для отображения хода работы в пошаговом формате .
Например:
Шаг 1 -> Шаг 2 -> Шаг 3 -> Окончательный
У каждого шага есть индикатор выполнения, который показывает прогресс до следующего шага.
Пример: Чтобы создать многоступенчатый индикатор выполнения, давайте создадим 3 файла index.html , styles.css , script.js .
index.html:
HTML
<!DOCTYPE html> < html > < head > < link href = < script src = </ script > < script src = </ script > < link rel = "stylesheet" href = "styles.css" > </ head > < body > < div class = "container" > < div class = "row justify-content-center" > < div class="col-11 col-sm-9 col-md-7 col-lg-6 col-xl-5 text-center p-0 mt-3 mb-2"> < div class = "px-0 pt-4 pb-0 mt-3 mb-3" > < form id = "form" > < ul id = "progressbar" > < li class = "active" id = "step1" > < strong >Step 1</ strong > </ li > < li id = "step2" >< strong >Step 2</ strong ></ li > < li id = "step3" >< strong >Step 3</ strong ></ li > < li id = "step4" >< strong >Step 4</ strong ></ li > </ ul > < div class = "progress" > < div class = "progress-bar" ></ div > </ div > < br > < fieldset > < h2 >Welcome To GFG Step 1</ h2 > < input type = "button" name = "next-step" class = "next-step" value = "Next Step" /> </ fieldset > < fieldset > < h2 >Welcome To GFG Step 2</ h2 > < input type = "button" name = "next-step" class = "next-step" value = "Next Step" /> < input type = "button" name = "previous-step" class = "previous-step" value = "Previous Step" /> </ fieldset > < fieldset > < h2 >Welcome To GFG Step 3</ h2 > < input type = "button" name = "next-step" class = "next-step" value = "Final Step" /> < input type = "button" name = "previous-step" class = "previous-step" value = "Previous Step" /> </ fieldset > < fieldset > < div class = "finish" > < h2 class = "text text-center" > < strong >FINISHED</ strong > </ h2 > </ div > < input type = "button" name = "previous-step" class = "previous-step" value = "Previous Step" /> </ fieldset > </ form > </ div > </ div > </ div > </ div > </ body > < script src = "script.js" ></ script > </ html > |
styles.css:
CSS
* { margin : 0 ; padding : 0 } html { height : 100% } h 2 { color : #2F8D46 ; } #form { text-align : center ; position : relative ; margin-top : 20px } #form fieldset { background : white ; border : 0 none ; border-radius: 0.5 rem; box-sizing: border-box; width : 100% ; margin : 0 ; padding-bottom : 20px ; position : relative } .finish { text-align : center } #form fieldset:not(:first-of-type) { display : none } #form .previous-step, .next-step { width : 100px ; font-weight : bold ; color : white ; border : 0 none ; border-radius: 0px ; cursor : pointer ; padding : 10px 5px ; margin : 10px 5px 10px 0px ; float : right } .form, .previous-step { background : #616161 ; } .form, .next-step { background : #2F8D46 ; } #form .previous-step:hover, #form .previous-step:focus { background-color : #000000 } #form .next-step:hover, #form .next-step:focus { background-color : #2F8D46 } .text { color : #2F8D46 ; font-weight : normal } #progressbar { margin-bottom : 30px ; overflow : hidden ; color : lightgrey } #progressbar .active { color : #2F8D46 } #progressbar li { list-style-type : none ; font-size : 15px ; width : 25% ; float : left ; position : relative ; font-weight : 400 } #progressbar #step 1: before { content : "1" } #progressbar #step 2: before { content : "2" } #progressbar #step 3: before { content : "3" } #progressbar #step 4: before { content : "4" } #progressbar li:before { width : 50px ; height : 50px ; line-height : 45px ; display : block ; font-size : 20px ; color : #ffffff ; background : lightgray; border-radius: 50% ; margin : 0 auto 10px auto ; padding : 2px } #progressbar li:after { content : '' ; width : 100% ; height : 2px ; background : lightgray; position : absolute ; left : 0 ; top : 25px ; z-index : -1 } #progressbar li.active:before, #progressbar li.active:after { background : #2F8D46 } .progress { height : 20px } .progress-bar { background-color : #2F8D46 } |
script.js
Javascript
$(document).ready( function () { var currentGfgStep, nextGfgStep, previousGfgStep; var opacity; var current = 1; var steps = $( "fieldset" ).length; setProgressBar(current); $( ".next-step" ).click( function () { currentGfgStep = $( this ).parent(); nextGfgStep = $( this ).parent().next(); $( "#progressbar li" ).eq($( "fieldset" ) .index(nextGfgStep)).addClass( "active" ); nextGfgStep.show(); currentGfgStep.animate({ opacity: 0 }, { step: function (now) { opacity = 1 - now; currentGfgStep.css({ 'display' : 'none' , 'position' : 'relative' }); nextGfgStep.css({ 'opacity' : opacity }); }, duration: 500 }); setProgressBar(++current); }); $( ".previous-step" ).click( function () { currentGfgStep = $( this ).parent(); previousGfgStep = $( this ).parent().prev(); $( "#progressbar li" ).eq($( "fieldset" ) .index(currentGfgStep)).removeClass( "active" ); previousGfgStep.show(); currentGfgStep.animate({ opacity: 0 }, { step: function (now) { opacity = 1 - now; currentGfgStep.css({ 'display' : 'none' , 'position' : 'relative' }); previousGfgStep.css({ 'opacity' : opacity }); }, duration: 500 }); setProgressBar(--current); }); function setProgressBar(currentStep) { var percent = parseFloat(100 / steps) * current; percent = percent.toFixed(); $( ".progress-bar" ) .css( "width" , percent + "%" ) } $( ".submit" ).click( function () { return false ; }) }); |
Выход: