materialize-stepper
Version:
A little plugin, inspired by MDL-Stepper, that implements a stepper to Materializecss framework.
228 lines (225 loc) • 8.3 kB
CSS
/**
* Materialize Stepper - A little plugin that implements a stepper to Materializecss framework.
* @version v3.1.0
* @author Igor Marcossi (Kinark) <igormarcossi@gmail.com>.
* @link https://github.com/Kinark/Materialize-stepper
*
* Licensed under the MIT License (https://github.com/Kinark/Materialize-stepper/blob/master/LICENSE).
*/
.card-content ul.stepper {
margin: 1em -24px;
padding: 0 24px; }
@media only screen and (min-width: 993px) {
.card-content ul.stepper.horizontal {
margin-left: -24px;
margin-right: -24px;
padding-left: 24px;
padding-right: 24px; }
.card-content ul.stepper.horizontal:first-child {
margin-top: -24px; }
.card-content ul.stepper.horizontal .step.step-content {
padding-left: 40px;
padding-right: 40px; }
.card-content ul.stepper.horizontal .step.step-content .step-actions {
padding-left: 40px;
padding-right: 40px; } }
ul.stepper {
counter-reset: section;
overflow-y: auto;
overflow-x: hidden; }
ul.stepper .wait-feedback {
left: 0;
right: 0;
top: 0;
z-index: 2;
position: absolute;
width: 100%;
height: 100%;
text-align: center;
display: flex;
justify-content: center;
align-items: center; }
ul.stepper .step {
position: relative;
transition: height 400ms cubic-bezier(0.4, 0, 0.2, 1), padding-bottom 400ms cubic-bezier(0.4, 0, 0.2, 1); }
ul.stepper .step .step-title {
margin: 0 -24px;
cursor: pointer;
padding: 15.5px 44px 24px 64px;
display: block; }
ul.stepper .step .step-title:hover {
background-color: rgba(0, 0, 0, 0.06); }
ul.stepper .step .step-title::after {
content: attr(data-step-label);
display: block;
position: absolute;
font-size: 12.8px;
font-size: 0.8rem;
color: #424242;
font-weight: 400; }
ul.stepper .step .step-content {
position: relative;
display: none;
height: 0;
transition: height 400ms cubic-bezier(0.4, 0, 0.2, 1);
width: inherit;
overflow: visible;
margin-left: 41px;
margin-right: 24px; }
ul.stepper .step .step-content .step-actions {
padding-top: 16px;
padding-bottom: 4px;
display: flex;
justify-content: flex-start; }
ul.stepper .step .step-content .step-actions .btn:not(:last-child), ul.stepper .step .step-content .step-actions .btn-flat:not(:last-child), ul.stepper .step .step-content .step-actions .btn-large:not(:last-child) {
margin-right: 5px; }
ul.stepper .step .step-content .row {
margin-bottom: 7px; }
ul.stepper .step::before {
position: absolute;
counter-increment: section;
content: counter(section);
height: 26px;
width: 26px;
color: white;
background-color: #B2B2B2;
border-radius: 50%;
text-align: center;
line-height: 26px;
font-weight: 400;
transition: background-color 400ms cubic-bezier(0.4, 0, 0.2, 1);
font-size: 14px;
left: 1px;
top: 13px; }
ul.stepper .step.active .step-title {
font-weight: 500; }
ul.stepper .step.active .step-content {
height: auto;
display: block; }
ul.stepper .step.active::before, ul.stepper .step.done::before {
background-color: #2196f3; }
ul.stepper .step.done::before {
content: '\e5ca';
font-size: 16px;
font-family: 'Material Icons'; }
ul.stepper .step.wrong::before {
content: '\e001';
font-size: 24px;
font-family: 'Material Icons';
background-color: red; }
ul.stepper .step.feedbacking .step-content > *:not(.wait-feedback) {
opacity: 0.1; }
ul.stepper .step:not(:last-of-type)::after {
content: '';
position: absolute;
top: 52px;
left: 13.5px;
width: 1px;
height: 40%;
height: calc(100% - 52px);
background-color: rgba(0, 0, 0, 0.1);
transition: height 400ms cubic-bezier(0.4, 0, 0.2, 1); }
ul.stepper .step:not(:last-of-type).active {
padding-bottom: 36px; }
ul.stepper > li:not(:last-of-type) {
padding-bottom: 10px; }
@media only screen and (min-width: 993px) {
ul.stepper.horizontal {
position: relative;
display: flex;
justify-content: space-between;
min-height: 458px;
overflow: hidden; }
ul.stepper.horizontal::before {
content: '';
background-color: transparent;
width: 100%;
min-height: 84px;
box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
position: absolute;
left: 0; }
ul.stepper.horizontal .step {
position: static;
padding: 0 ;
width: 100%;
display: flex;
align-items: center;
height: 84px; }
ul.stepper.horizontal .step::before {
content: none; }
ul.stepper.horizontal .step:last-of-type {
width: auto ; }
ul.stepper.horizontal .step:not(:last-of-type)::after, ul.stepper.horizontal .step.active:not(:last-of-type)::after {
content: '';
position: static;
display: inline-block;
width: 100%;
height: 1px; }
ul.stepper.horizontal .step .step-title {
line-height: 84px;
height: 84px;
margin: 0;
padding: 0 25px 0 65px;
display: inline-block;
max-width: 220px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex-shrink: 0; }
ul.stepper.horizontal .step .step-title::before {
position: absolute;
counter-increment: section;
content: counter(section);
height: 26px;
width: 26px;
color: white;
background-color: #B2B2B2;
border-radius: 50%;
text-align: center;
line-height: 26px;
font-weight: 400;
transition: background-color 400ms cubic-bezier(0.4, 0, 0.2, 1);
font-size: 14px;
left: 1px;
top: 28.5px;
left: 19px; }
ul.stepper.horizontal .step .step-title::after {
top: 15px; }
ul.stepper.horizontal .step.active ~ .step .step-content {
left: 100%; }
ul.stepper.horizontal .step.active .step-content {
left: 0 ; }
ul.stepper.horizontal .step.active .step-title::before, ul.stepper.horizontal .step.done .step-title::before {
background-color: #2196f3; }
ul.stepper.horizontal .step.done .step-title::before {
content: '\e5ca';
font-size: 16px;
font-family: 'Material Icons'; }
ul.stepper.horizontal .step.wrong .step-title::before {
content: '\e001';
font-size: 24px;
font-family: 'Material Icons';
background-color: red; }
ul.stepper.horizontal .step .step-content {
position: absolute;
height: calc(100% - 84px);
top: 84px;
display: block;
left: -100%;
width: 100%;
overflow-y: auto;
overflow-x: hidden;
margin: 0;
padding: 20px 20px 76px 20px;
transition: left 400ms cubic-bezier(0.4, 0, 0.2, 1); }
ul.stepper.horizontal .step .step-content .step-actions {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 20px;
background-color: transparent;
flex-direction: row-reverse; }
ul.stepper.horizontal .step .step-content .step-actions .btn:not(:last-child), ul.stepper.horizontal .step .step-content .step-actions .btn-flat:not(:last-child), ul.stepper.horizontal .step .step-content .step-actions .btn-large:not(:last-child) {
margin-left: 5px;
margin-right: 0; } }