A Pen by Sosami Oluwafemi on CodePen.
Created
February 5, 2019 22:47
-
-
Save saphemmy/f00e1de0a82dbf24ab10e9fb8cd98045 to your computer and use it in GitHub Desktop.
Bootstrap MultiStep Form
This file contains hidden or 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
<!-- MultiStep Form --> | |
<div class="row"> | |
<div class="col-md-6 col-md-offset-3"> | |
<form id="msform"> | |
<!-- progressbar --> | |
<ul id="progressbar"> | |
<li class="active">Personal Details</li> | |
<li>Social Profiles</li> | |
<li>Account Setup</li> | |
</ul> | |
<!-- fieldsets --> | |
<fieldset> | |
<h2 class="fs-title">Personal Details</h2> | |
<h3 class="fs-subtitle">Tell us something more about you</h3> | |
<input type="text" name="fname" placeholder="First Name"/> | |
<input type="text" name="lname" placeholder="Last Name"/> | |
<input type="text" name="phone" placeholder="Phone"/> | |
<input type="button" name="next" class="next action-button" value="Next"/> | |
</fieldset> | |
<fieldset> | |
<h2 class="fs-title">Social Profiles</h2> | |
<h3 class="fs-subtitle">Your presence on the social network</h3> | |
<input type="text" name="twitter" placeholder="Twitter"/> | |
<input type="text" name="facebook" placeholder="Facebook"/> | |
<input type="text" name="gplus" placeholder="Google Plus"/> | |
<input type="button" name="previous" class="previous action-button-previous" value="Previous"/> | |
<input type="button" name="next" class="next action-button" value="Next"/> | |
</fieldset> | |
<fieldset> | |
<h2 class="fs-title">Create your account</h2> | |
<h3 class="fs-subtitle">Fill in your credentials</h3> | |
<input type="text" name="email" placeholder="Email"/> | |
<input type="password" name="pass" placeholder="Password"/> | |
<input type="password" name="cpass" placeholder="Confirm Password"/> | |
<input type="button" name="previous" class="previous action-button-previous" value="Previous"/> | |
<input type="submit" name="submit" class="submit action-button" value="Submit"/> | |
</fieldset> | |
</form> | |
<!-- link to designify.me code snippets --> | |
<div class="dme_link"> | |
<p><a href="http://designify.me/code-snippets-js/" target="_blank">More Code Snippets</a></p> | |
</div> | |
<!-- /.link to designify.me code snippets --> | |
</div> | |
</div> | |
<!-- /.MultiStep Form --> |
This file contains hidden or 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
//jQuery time | |
var current_fs, next_fs, previous_fs; //fieldsets | |
var left, opacity, scale; //fieldset properties which we will animate | |
var animating; //flag to prevent quick multi-click glitches | |
$(".next").click(function(){ | |
if(animating) return false; | |
animating = true; | |
current_fs = $(this).parent(); | |
next_fs = $(this).parent().next(); | |
//activate next step on progressbar using the index of next_fs | |
$("#progressbar li").eq($("fieldset").index(next_fs)).addClass("active"); | |
//show the next fieldset | |
next_fs.show(); | |
//hide the current fieldset with style | |
current_fs.animate({opacity: 0}, { | |
step: function(now, mx) { | |
//as the opacity of current_fs reduces to 0 - stored in "now" | |
//1. scale current_fs down to 80% | |
scale = 1 - (1 - now) * 0.2; | |
//2. bring next_fs from the right(50%) | |
left = (now * 50)+"%"; | |
//3. increase opacity of next_fs to 1 as it moves in | |
opacity = 1 - now; | |
current_fs.css({ | |
'transform': 'scale('+scale+')', | |
'position': 'absolute' | |
}); | |
next_fs.css({'left': left, 'opacity': opacity}); | |
}, | |
duration: 800, | |
complete: function(){ | |
current_fs.hide(); | |
animating = false; | |
}, | |
//this comes from the custom easing plugin | |
easing: 'easeInOutBack' | |
}); | |
}); | |
$(".previous").click(function(){ | |
if(animating) return false; | |
animating = true; | |
current_fs = $(this).parent(); | |
previous_fs = $(this).parent().prev(); | |
//de-activate current step on progressbar | |
$("#progressbar li").eq($("fieldset").index(current_fs)).removeClass("active"); | |
//show the previous fieldset | |
previous_fs.show(); | |
//hide the current fieldset with style | |
current_fs.animate({opacity: 0}, { | |
step: function(now, mx) { | |
//as the opacity of current_fs reduces to 0 - stored in "now" | |
//1. scale previous_fs from 80% to 100% | |
scale = 0.8 + (1 - now) * 0.2; | |
//2. take current_fs to the right(50%) - from 0% | |
left = ((1-now) * 50)+"%"; | |
//3. increase opacity of previous_fs to 1 as it moves in | |
opacity = 1 - now; | |
current_fs.css({'left': left}); | |
previous_fs.css({'transform': 'scale('+scale+')', 'opacity': opacity}); | |
}, | |
duration: 800, | |
complete: function(){ | |
current_fs.hide(); | |
animating = false; | |
}, | |
//this comes from the custom easing plugin | |
easing: 'easeInOutBack' | |
}); | |
}); | |
$(".submit").click(function(){ | |
return false; | |
}) |
This file contains hidden or 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
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> | |
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> |
This file contains hidden or 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
/*custom font*/ | |
@import url(https://fonts.googleapis.com/css?family=Montserrat); | |
/*basic reset*/ | |
* { | |
margin: 0; | |
padding: 0; | |
} | |
html { | |
height: 100%; | |
background: #6441A5; /* fallback for old browsers */ | |
background: -webkit-linear-gradient(to left, #6441A5, #2a0845); /* Chrome 10-25, Safari 5.1-6 */ | |
} | |
body { | |
font-family: montserrat, arial, verdana; | |
background: transparent; | |
} | |
/*form styles*/ | |
#msform { | |
text-align: center; | |
position: relative; | |
margin-top: 30px; | |
} | |
#msform fieldset { | |
background: white; | |
border: 0 none; | |
border-radius: 0px; | |
box-shadow: 0 0 15px 1px rgba(0, 0, 0, 0.4); | |
padding: 20px 30px; | |
box-sizing: border-box; | |
width: 80%; | |
margin: 0 10%; | |
/*stacking fieldsets above each other*/ | |
position: relative; | |
} | |
/*Hide all except first fieldset*/ | |
#msform fieldset:not(:first-of-type) { | |
display: none; | |
} | |
/*inputs*/ | |
#msform input, #msform textarea { | |
padding: 15px; | |
border: 1px solid #ccc; | |
border-radius: 0px; | |
margin-bottom: 10px; | |
width: 100%; | |
box-sizing: border-box; | |
font-family: montserrat; | |
color: #2C3E50; | |
font-size: 13px; | |
} | |
#msform input:focus, #msform textarea:focus { | |
-moz-box-shadow: none !important; | |
-webkit-box-shadow: none !important; | |
box-shadow: none !important; | |
border: 1px solid #ee0979; | |
outline-width: 0; | |
transition: All 0.5s ease-in; | |
-webkit-transition: All 0.5s ease-in; | |
-moz-transition: All 0.5s ease-in; | |
-o-transition: All 0.5s ease-in; | |
} | |
/*buttons*/ | |
#msform .action-button { | |
width: 100px; | |
background: #ee0979; | |
font-weight: bold; | |
color: white; | |
border: 0 none; | |
border-radius: 25px; | |
cursor: pointer; | |
padding: 10px 5px; | |
margin: 10px 5px; | |
} | |
#msform .action-button:hover, #msform .action-button:focus { | |
box-shadow: 0 0 0 2px white, 0 0 0 3px #ee0979; | |
} | |
#msform .action-button-previous { | |
width: 100px; | |
background: #C5C5F1; | |
font-weight: bold; | |
color: white; | |
border: 0 none; | |
border-radius: 25px; | |
cursor: pointer; | |
padding: 10px 5px; | |
margin: 10px 5px; | |
} | |
#msform .action-button-previous:hover, #msform .action-button-previous:focus { | |
box-shadow: 0 0 0 2px white, 0 0 0 3px #C5C5F1; | |
} | |
/*headings*/ | |
.fs-title { | |
font-size: 18px; | |
text-transform: uppercase; | |
color: #2C3E50; | |
margin-bottom: 10px; | |
letter-spacing: 2px; | |
font-weight: bold; | |
} | |
.fs-subtitle { | |
font-weight: normal; | |
font-size: 13px; | |
color: #666; | |
margin-bottom: 20px; | |
} | |
/*progressbar*/ | |
#progressbar { | |
margin-bottom: 30px; | |
overflow: hidden; | |
/*CSS counters to number the steps*/ | |
counter-reset: step; | |
} | |
#progressbar li { | |
list-style-type: none; | |
color: white; | |
text-transform: uppercase; | |
font-size: 9px; | |
width: 33.33%; | |
float: left; | |
position: relative; | |
letter-spacing: 1px; | |
} | |
#progressbar li:before { | |
content: counter(step); | |
counter-increment: step; | |
width: 24px; | |
height: 24px; | |
line-height: 26px; | |
display: block; | |
font-size: 12px; | |
color: #333; | |
background: white; | |
border-radius: 25px; | |
margin: 0 auto 10px auto; | |
} | |
/*progressbar connectors*/ | |
#progressbar li:after { | |
content: ''; | |
width: 100%; | |
height: 2px; | |
background: white; | |
position: absolute; | |
left: -50%; | |
top: 9px; | |
z-index: -1; /*put it behind the numbers*/ | |
} | |
#progressbar li:first-child:after { | |
/*connector not needed before the first step*/ | |
content: none; | |
} | |
/*marking active/completed steps green*/ | |
/*The number of the step and the connector before it = green*/ | |
#progressbar li.active:before, #progressbar li.active:after { | |
background: #ee0979; | |
color: white; | |
} | |
/* Not relevant to this form */ | |
.dme_link { | |
margin-top: 30px; | |
text-align: center; | |
} | |
.dme_link a { | |
background: #FFF; | |
font-weight: bold; | |
color: #ee0979; | |
border: 0 none; | |
border-radius: 25px; | |
cursor: pointer; | |
padding: 5px 25px; | |
font-size: 12px; | |
} | |
.dme_link a:hover, .dme_link a:focus { | |
background: #C5C5F1; | |
text-decoration: none; | |
} |
This file contains hidden or 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
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment