470 lines
7.6 KiB
SCSS
470 lines
7.6 KiB
SCSS
/*!
|
|
* Ladda
|
|
* http://lab.hakim.se/ladda
|
|
* MIT licensed
|
|
*
|
|
* Copyright (C) 2013 Hakim El Hattab, http://hakim.se
|
|
*/
|
|
|
|
|
|
// CONFIG
|
|
$spinnerSize: 32px;
|
|
|
|
// MIXINS
|
|
@mixin prefix( $property, $value ) {
|
|
-webkit-#{$property}: $value;
|
|
-moz-#{$property}: $value;
|
|
-ms-#{$property}: $value;
|
|
-o-#{$property}: $value;
|
|
$property: $value;
|
|
}
|
|
|
|
@mixin transition( $value ) {
|
|
-webkit-transition: $value !important;
|
|
-moz-transition: $value !important;
|
|
-ms-transition: $value !important;
|
|
-o-transition: $value !important;
|
|
transition: $value !important;
|
|
}
|
|
|
|
@mixin vendor-transform( $value ) {
|
|
@include prefix( transform, $value );
|
|
}
|
|
|
|
@mixin transform-origin( $value ) {
|
|
@include prefix( transform-origin, $value );
|
|
}
|
|
|
|
@mixin buttonColor( $name, $color ) {
|
|
&[data-color=#{$name}] {
|
|
background: $color;
|
|
|
|
&:hover {
|
|
background-color: lighten($color, 5%);
|
|
}
|
|
}
|
|
}
|
|
|
|
// BUTTON BASE
|
|
.ladda-button {
|
|
position: relative;
|
|
|
|
.ladda-spinner {
|
|
position: absolute;
|
|
top: 50%;
|
|
z-index: 2;
|
|
display: inline-block;
|
|
width: $spinnerSize;
|
|
height: $spinnerSize;
|
|
margin-top: -$spinnerSize / 2;
|
|
pointer-events: none;
|
|
opacity: 0;
|
|
}
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
z-index: 3;
|
|
}
|
|
|
|
.ladda-progress {
|
|
position: absolute;
|
|
top: 0;
|
|
width: 0;
|
|
height: 100%;
|
|
visibility: hidden;
|
|
background: rgba(0, 0, 0, 0.2);
|
|
opacity: 0;
|
|
@include left(0);
|
|
@include transition( 0.1s linear all );
|
|
|
|
&[data-loading] .ladda-progress {
|
|
visibility: visible;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
&[disabled],
|
|
&[data-loading] {
|
|
cursor: default;
|
|
background-color: #999;
|
|
border-color: rgba(0, 0, 0, 0.07);
|
|
|
|
&:hover {
|
|
cursor: default;
|
|
background-color: #999;
|
|
}
|
|
}
|
|
|
|
&[data-size="xs"] {
|
|
padding: 4px 8px;
|
|
|
|
.ladda-label {
|
|
font-size: 0.7em;
|
|
}
|
|
}
|
|
|
|
&[data-size="s"] {
|
|
padding: 6px 10px;
|
|
|
|
.ladda-label {
|
|
font-size: 0.9em;
|
|
}
|
|
}
|
|
|
|
&[data-size="l"] .ladda-label {
|
|
font-size: 1.2em;
|
|
}
|
|
|
|
&[data-size="xl"] .ladda-label {
|
|
font-size: 1.5em;
|
|
}
|
|
}
|
|
|
|
// EASING
|
|
.ladda-button,
|
|
.ladda-button .ladda-spinner,
|
|
.ladda-button .ladda-label {
|
|
@include transition( 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) background-color );
|
|
}
|
|
|
|
.ladda-button[data-style="zoom-in"],
|
|
.ladda-button[data-style="zoom-in"] .ladda-spinner,
|
|
.ladda-button[data-style="zoom-in"] .ladda-label,
|
|
.ladda-button[data-style="zoom-out"],
|
|
.ladda-button[data-style="zoom-out"] .ladda-spinner,
|
|
.ladda-button[data-style="zoom-out"] .ladda-label {
|
|
@include transition( 0.3s ease all );
|
|
}
|
|
|
|
// EXPAND LEFT
|
|
.ladda-button[data-style="expand-right"] {
|
|
.ladda-spinner {
|
|
@include right(14px);
|
|
}
|
|
|
|
&[data-size="s"] .ladda-spinner,
|
|
&[data-size="xs"] .ladda-spinner {
|
|
@include right(4px);
|
|
}
|
|
|
|
&[data-loading] {
|
|
@include padding-right(56px);
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
}
|
|
|
|
&[data-size="s"],
|
|
&[data-size="xs"] {
|
|
@include padding-right(40px);
|
|
}
|
|
}
|
|
}
|
|
|
|
// EXPAND RIGHT
|
|
.ladda-button[data-style="expand-left"] {
|
|
.ladda-spinner {
|
|
@include left(14px);
|
|
}
|
|
|
|
&[data-size="s"] .ladda-spinner,
|
|
&[data-size="xs"] .ladda-spinner {
|
|
@include left(4px);
|
|
}
|
|
|
|
&[data-loading] {
|
|
@include padding-left(56px);
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
}
|
|
|
|
&[data-size="s"],
|
|
&[data-size="xs"] {
|
|
@include padding-left(40px);
|
|
}
|
|
}
|
|
}
|
|
|
|
// EXPAND UP
|
|
.ladda-button[data-style="expand-up"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-spinner {
|
|
top: -$spinnerSize;
|
|
@include margin-left(-$spinnerSize / 2);
|
|
@include left(50%);
|
|
}
|
|
|
|
&[data-loading] {
|
|
padding-top: 54px;
|
|
|
|
.ladda-spinner {
|
|
top: 14px;
|
|
margin-top: 0;
|
|
opacity: 1;
|
|
}
|
|
|
|
&[data-size="s"],
|
|
&[data-size="xs"] {
|
|
padding-top: 32px;
|
|
|
|
.ladda-spinner {
|
|
top: 4px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// EXPAND DOWN
|
|
.ladda-button[data-style="expand-down"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-spinner {
|
|
top: 62px;
|
|
@include left(50%);
|
|
margin-left: -$spinnerSize / 2;
|
|
}
|
|
|
|
&[data-size="s"] .ladda-spinner,
|
|
&[data-size="xs"] .ladda-spinner {
|
|
top: 40px;
|
|
}
|
|
|
|
&[data-loading] {
|
|
padding-bottom: 54px;
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
&[data-size="s"],
|
|
&[data-size="xs"] {
|
|
padding-bottom: 32px;
|
|
}
|
|
}
|
|
|
|
// SLIDE LEFT
|
|
.ladda-button[data-style="slide-left"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
@include left(100%);
|
|
@include margin-left(-$spinnerSize / 2);
|
|
}
|
|
|
|
&[data-loading] {
|
|
.ladda-label {
|
|
opacity: 0;
|
|
@include left(-100%);
|
|
}
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
@include left(50%);
|
|
}
|
|
}
|
|
}
|
|
|
|
// SLIDE RIGHT
|
|
.ladda-button[data-style="slide-right"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
@include right(100%);
|
|
@include margin-left(-$spinnerSize / 2);
|
|
}
|
|
|
|
&[data-loading] {
|
|
.ladda-label {
|
|
opacity: 0;
|
|
@include left(100%);
|
|
}
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
@include left(50%);
|
|
}
|
|
}
|
|
}
|
|
|
|
// SLIDE UP
|
|
.ladda-button[data-style="slide-up"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
margin-top: 1em;
|
|
@include left(50%);
|
|
@include margin-left(-$spinnerSize / 2);
|
|
}
|
|
|
|
&[data-loading] {
|
|
.ladda-label {
|
|
top: -1em;
|
|
opacity: 0;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
margin-top: -$spinnerSize / 2;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
// SLIDE DOWN
|
|
.ladda-button[data-style="slide-down"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
margin-top: -2em;
|
|
@include margin-left(-$spinnerSize / 2);
|
|
@include left(50%);
|
|
}
|
|
|
|
&[data-loading] {
|
|
.ladda-label {
|
|
top: 1em;
|
|
opacity: 0;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
margin-top: -$spinnerSize / 2;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
// ZOOM-OUT
|
|
.ladda-button[data-style="zoom-out"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-spinner {
|
|
@include left(50%);
|
|
@include margin-left(-$spinnerSize / 2);
|
|
@include vendor-transform( scale( 2.5 ) );
|
|
}
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
display: inline-block;
|
|
}
|
|
|
|
&[data-loading] .ladda-label {
|
|
opacity: 0;
|
|
@include vendor-transform( scale( 0.5 ) );
|
|
}
|
|
|
|
&[data-loading] .ladda-spinner {
|
|
opacity: 1;
|
|
@include vendor-transform( none );
|
|
}
|
|
}
|
|
|
|
// ZOOM-IN
|
|
.ladda-button[data-style="zoom-in"] {
|
|
overflow: hidden;
|
|
|
|
.ladda-spinner {
|
|
@include margin-left(-$spinnerSize / 2);
|
|
@include left(50%);
|
|
@include vendor-transform( scale( 0.2 ) );
|
|
}
|
|
|
|
.ladda-label {
|
|
position: relative;
|
|
display: inline-block;
|
|
}
|
|
|
|
&[data-loading] .ladda-label {
|
|
opacity: 0;
|
|
@include vendor-transform( scale( 2.2 ) );
|
|
}
|
|
|
|
&[data-loading] .ladda-spinner {
|
|
opacity: 1;
|
|
@include vendor-transform( none );
|
|
}
|
|
}
|
|
|
|
// CONTRACT
|
|
.ladda-button[data-style="contract"] {
|
|
width: 100px;
|
|
overflow: hidden;
|
|
|
|
.ladda-spinner {
|
|
@include left(50%);
|
|
@include margin-left(-16px);
|
|
}
|
|
}
|
|
|
|
.ladda-button[data-style="contract"][data-loading] {
|
|
width: 52px;
|
|
border-radius: 50%;
|
|
|
|
.ladda-label {
|
|
opacity: 0;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
// OVERLAY
|
|
.ladda-button[data-style="contract-overlay"] {
|
|
width: 100px;
|
|
overflow: hidden;
|
|
|
|
@include ltr () {
|
|
box-shadow: 0 0 0 3000px rgba(0, 0, 0, 0);
|
|
}
|
|
|
|
@include rtl () {
|
|
box-shadow: 0 3000px 0 0 rgba(0, 0, 0, 0);
|
|
}
|
|
|
|
.ladda-spinner {
|
|
@include left(50%);
|
|
@include margin-left(-16px);
|
|
}
|
|
|
|
&[data-loading] {
|
|
width: 52px;
|
|
border-radius: 50%;
|
|
|
|
@include ltr () {
|
|
box-shadow: 0 0 0 3000px rgba(0, 0, 0, 0.8);
|
|
}
|
|
|
|
@include rtl () {
|
|
box-shadow: 0 3000px 0 0 rgba(0, 0, 0, 0.8);
|
|
}
|
|
|
|
.ladda-label {
|
|
opacity: 0;
|
|
}
|
|
|
|
.ladda-spinner {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
|