-
Notifications
You must be signed in to change notification settings - Fork 210
/
Copy path_modal-animations.scss
122 lines (108 loc) · 2.51 KB
/
_modal-animations.scss
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
* All animations for CSS Modal
*
* Available:
* - %modal--transition-fade (fade)
* - %modal--transition-zoomIn (zooms in)
* - %modal--transition-plainScreen (hides background)
*
* Usage:
*
* .selector {
* @extend %modal--transition-fade;
* }
*
*/
// Configuration:
$transition-duration: 0.4s !default;
$transition-size-start: scale(0) !default;
$transition-size-end: scale(1) !default;
// Fade in the modal
%modal--transition-fade {
@media screen and (min-width: $modal-small-breakpoint) {
transition: opacity $transition-duration;
}
@extend %modal;
@extend %modal-theme;
}
// Fade in and zoom in the modal
%modal--transition-zoomIn {
@extend %modal;
@extend %modal-theme;
// Scale to zero
.modal-inner {
-webkit-transform: $transition-size-start;
transform: $transition-size-start;
opacity: 0;
-webkit-transition: all $transition-duration;
transition: all $transition-duration;
}
.modal-close:before {
-webkit-transition: all $transition-duration;
transition: all $transition-duration;
opacity: 0;
}
.modal-close:after {
-webkit-transform: $transition-size-start;
transform: $transition-size-start;
-webkit-transition: all $transition-duration;
transition: all $transition-duration;
opacity: 0;
}
// Show modal when requested
&:target,
&.is-active {
.modal-inner {
-webkit-transform: $transition-size-end;
transform: $transition-size-end;
opacity: 1;
}
.modal-close:before {
opacity: 1;
}
.modal-close:after {
-webkit-transform: $transition-size-end;
transform: $transition-size-end;
opacity: 1;
// Move back to proper position
top: 25px;
@media screen and (max-width: $modal-small-breakpoint) {
top: 5px;
right: 5px;
left: auto;
}
}
}
}
// Fade in, zoom in and hide backgrund in the modal
%modal--transition-plainScreen {
@extend %modal;
@extend %modal-theme;
@extend %modal-theme-plainScreen;
@extend %modal--transition-zoomIn;
.modal-inner {
box-shadow: 0 0 15px -5px rgba(0, 0, 0, 0.25);
}
.modal-close:before {
-webkit-transition: all $transition-duration;
transition: all $transition-duration;
background: $modal-inner-background;
opacity: 0;
}
.modal-close:after {
box-shadow: 0 -1px 10px -2px rgba(0, 0, 0, 0.2);
}
// Show modal when requested
&:target,
&.is-active {
.modal-close:before {
opacity: 1;
}
.modal-close:after {
top: 23px;
@media screen and (max-width: $modal-small-breakpoint) {
top: 5px;
}
}
}
}