// // Progress animations // @keyframes progress-bar-stripes { from { background-position: $spacer-y 0; } to { background-position: 0 0; } } // // Basic progress bar // .progress { display: block; width: 100%; height: $spacer-y; // todo: make a new var for this margin-bottom: $spacer-y; } .progress[value] { // Set overall background background-color: $progress-bg; // Remove Firefox and Opera border border: 0; // Reset the default appearance appearance: none; // Set overall border radius @include border-radius($border-radius); } // Filled-in portion of the bar .progress[value]::-ms-fill { background-color: $progress-bar-color; // Remove right-hand border of value bar from IE10+/Edge border: 0; } .progress[value]::-moz-progress-bar { background-color: $progress-bar-color; border-top-left-radius: $border-radius; border-bottom-left-radius: $border-radius; } .progress[value]::-webkit-progress-value { background-color: $progress-bar-color; border-top-left-radius: $border-radius; border-bottom-left-radius: $border-radius; } // Tweaks for full progress bar .progress[value="100"]::-moz-progress-bar { border-top-right-radius: $border-radius; border-bottom-right-radius: $border-radius; } .progress[value="100"]::-webkit-progress-value { border-top-right-radius: $border-radius; border-bottom-right-radius: $border-radius; } // Unfilled portion of the bar .progress[value]::-webkit-progress-bar { background-color: $progress-bg; @include border-radius($border-radius); @include box-shadow($progress-box-shadow); } base::-moz-progress-bar, // Absurd-but-syntactically-valid selector to make these styles Firefox-only .progress[value] { background-color: $progress-bg; @include border-radius($border-radius); @include box-shadow($progress-box-shadow); } // IE9 hacks to accompany custom markup. We don't need to scope this via media queries, but I feel better doing it anyway. @media screen and (min-width:0\0) { .progress { background-color: $progress-bg; @include border-radius($border-radius); @include box-shadow($progress-box-shadow); } .progress-bar { display: inline-block; height: $spacer-y; text-indent: -999rem; // Simulate hiding of value as in native `` background-color: $progress-bar-color; border-top-left-radius: $border-radius; border-bottom-left-radius: $border-radius; } .progress[width="100%"] { border-top-right-radius: $border-radius; border-bottom-right-radius: $border-radius; } } // // Striped // .progress-striped[value]::-webkit-progress-value { @include gradient-striped(); background-size: $spacer-y $spacer-y; } .progress-striped[value]::-moz-progress-bar { @include gradient-striped(); background-size: $spacer-y $spacer-y; } .progress-striped[value]::-ms-fill { @include gradient-striped(); background-size: $spacer-y $spacer-y; } // IE9 @media screen and (min-width:0\0) { .progress-bar-striped { @include gradient-striped(); background-size: $spacer-y $spacer-y; } } // // Animated // .progress-animated[value]::-webkit-progress-value { animation: progress-bar-stripes 2s linear infinite; } .progress-animated[value]::-moz-progress-bar { animation: progress-bar-stripes 2s linear infinite; } // IE9 @media screen and (min-width:0\0) { .progress-animated .progress-bar-striped { animation: progress-bar-stripes 2s linear infinite; } } // // Variations // .progress-success { @include progress-variant($progress-bar-success-bg); } .progress-info { @include progress-variant($progress-bar-info-bg); } .progress-warning { @include progress-variant($progress-bar-warning-bg); } .progress-danger { @include progress-variant($progress-bar-danger-bg); }