31
31
// created by taking a few reference shadow sets created by Google's Designers and interpolating
32
32
// all of the values between them.
33
33
34
- @function _get-umbra-map ($color ) {
34
+ @function _get-umbra-map ($color , $opacity ) {
35
35
@return (
36
- 0 : ' 0px 0px 0px 0px #{rgba ($color , 0.2 )} ' ,
37
- 1 : ' 0px 2px 1px -1px #{rgba ($color , 0.2 )} ' ,
38
- 2 : ' 0px 3px 1px -2px #{rgba ($color , 0.2 )} ' ,
39
- 3 : ' 0px 3px 3px -2px #{rgba ($color , 0.2 )} ' ,
40
- 4 : ' 0px 2px 4px -1px #{rgba ($color , 0.2 )} ' ,
41
- 5 : ' 0px 3px 5px -1px #{rgba ($color , 0.2 )} ' ,
42
- 6 : ' 0px 3px 5px -1px #{rgba ($color , 0.2 )} ' ,
43
- 7 : ' 0px 4px 5px -2px #{rgba ($color , 0.2 )} ' ,
44
- 8 : ' 0px 5px 5px -3px #{rgba ($color , 0.2 )} ' ,
45
- 9 : ' 0px 5px 6px -3px #{rgba ($color , 0.2 )} ' ,
46
- 10 : ' 0px 6px 6px -3px #{rgba ($color , 0.2 )} ' ,
47
- 11 : ' 0px 6px 7px -4px #{rgba ($color , 0.2 )} ' ,
48
- 12 : ' 0px 7px 8px -4px #{rgba ($color , 0.2 )} ' ,
49
- 13 : ' 0px 7px 8px -4px #{rgba ($color , 0.2 )} ' ,
50
- 14 : ' 0px 7px 9px -4px #{rgba ($color , 0.2 )} ' ,
51
- 15 : ' 0px 8px 9px -5px #{rgba ($color , 0.2 )} ' ,
52
- 16 : ' 0px 8px 10px -5px #{rgba ($color , 0.2 )} ' ,
53
- 17 : ' 0px 8px 11px -5px #{rgba ($color , 0.2 )} ' ,
54
- 18 : ' 0px 9px 11px -5px #{rgba ($color , 0.2 )} ' ,
55
- 19 : ' 0px 9px 12px -6px #{rgba ($color , 0.2 )} ' ,
56
- 20 : ' 0px 10px 13px -6px #{rgba ($color , 0.2 )} ' ,
57
- 21 : ' 0px 10px 13px -6px #{rgba ($color , 0.2 )} ' ,
58
- 22 : ' 0px 10px 14px -6px #{rgba ($color , 0.2 )} ' ,
59
- 23 : ' 0px 11px 14px -7px #{rgba ($color , 0.2 )} ' ,
60
- 24 : ' 0px 11px 15px -7px #{rgba ($color , 0.2 )} '
36
+ 0 : ' 0px 0px 0px 0px #{rgba ($color , $opacity * 0.2 )} ' ,
37
+ 1 : ' 0px 2px 1px -1px #{rgba ($color , $opacity * 0.2 )} ' ,
38
+ 2 : ' 0px 3px 1px -2px #{rgba ($color , $opacity * 0.2 )} ' ,
39
+ 3 : ' 0px 3px 3px -2px #{rgba ($color , $opacity * 0.2 )} ' ,
40
+ 4 : ' 0px 2px 4px -1px #{rgba ($color , $opacity * 0.2 )} ' ,
41
+ 5 : ' 0px 3px 5px -1px #{rgba ($color , $opacity * 0.2 )} ' ,
42
+ 6 : ' 0px 3px 5px -1px #{rgba ($color , $opacity * 0.2 )} ' ,
43
+ 7 : ' 0px 4px 5px -2px #{rgba ($color , $opacity * 0.2 )} ' ,
44
+ 8 : ' 0px 5px 5px -3px #{rgba ($color , $opacity * 0.2 )} ' ,
45
+ 9 : ' 0px 5px 6px -3px #{rgba ($color , $opacity * 0.2 )} ' ,
46
+ 10 : ' 0px 6px 6px -3px #{rgba ($color , $opacity * 0.2 )} ' ,
47
+ 11 : ' 0px 6px 7px -4px #{rgba ($color , $opacity * 0.2 )} ' ,
48
+ 12 : ' 0px 7px 8px -4px #{rgba ($color , $opacity * 0.2 )} ' ,
49
+ 13 : ' 0px 7px 8px -4px #{rgba ($color , $opacity * 0.2 )} ' ,
50
+ 14 : ' 0px 7px 9px -4px #{rgba ($color , $opacity * 0.2 )} ' ,
51
+ 15 : ' 0px 8px 9px -5px #{rgba ($color , $opacity * 0.2 )} ' ,
52
+ 16 : ' 0px 8px 10px -5px #{rgba ($color , $opacity * 0.2 )} ' ,
53
+ 17 : ' 0px 8px 11px -5px #{rgba ($color , $opacity * 0.2 )} ' ,
54
+ 18 : ' 0px 9px 11px -5px #{rgba ($color , $opacity * 0.2 )} ' ,
55
+ 19 : ' 0px 9px 12px -6px #{rgba ($color , $opacity * 0.2 )} ' ,
56
+ 20 : ' 0px 10px 13px -6px #{rgba ($color , $opacity * 0.2 )} ' ,
57
+ 21 : ' 0px 10px 13px -6px #{rgba ($color , $opacity * 0.2 )} ' ,
58
+ 22 : ' 0px 10px 14px -6px #{rgba ($color , $opacity * 0.2 )} ' ,
59
+ 23 : ' 0px 11px 14px -7px #{rgba ($color , $opacity * 0.2 )} ' ,
60
+ 24 : ' 0px 11px 15px -7px #{rgba ($color , $opacity * 0.2 )} '
61
61
);
62
62
}
63
63
64
- @function _get-penumbra-map ($color ) {
64
+ @function _get-penumbra-map ($color , $opacity ) {
65
65
@return (
66
- 0 : ' 0px 0px 0px 0px #{rgba ($color , 0.14 )} ' ,
67
- 1 : ' 0px 1px 1px 0px #{rgba ($color , 0.14 )} ' ,
68
- 2 : ' 0px 2px 2px 0px #{rgba ($color , 0.14 )} ' ,
69
- 3 : ' 0px 3px 4px 0px #{rgba ($color , 0.14 )} ' ,
70
- 4 : ' 0px 4px 5px 0px #{rgba ($color , 0.14 )} ' ,
71
- 5 : ' 0px 5px 8px 0px #{rgba ($color , 0.14 )} ' ,
72
- 6 : ' 0px 6px 10px 0px #{rgba ($color , 0.14 )} ' ,
73
- 7 : ' 0px 7px 10px 1px #{rgba ($color , 0.14 )} ' ,
74
- 8 : ' 0px 8px 10px 1px #{rgba ($color , 0.14 )} ' ,
75
- 9 : ' 0px 9px 12px 1px #{rgba ($color , 0.14 )} ' ,
76
- 10 : ' 0px 10px 14px 1px #{rgba ($color , 0.14 )} ' ,
77
- 11 : ' 0px 11px 15px 1px #{rgba ($color , 0.14 )} ' ,
78
- 12 : ' 0px 12px 17px 2px #{rgba ($color , 0.14 )} ' ,
79
- 13 : ' 0px 13px 19px 2px #{rgba ($color , 0.14 )} ' ,
80
- 14 : ' 0px 14px 21px 2px #{rgba ($color , 0.14 )} ' ,
81
- 15 : ' 0px 15px 22px 2px #{rgba ($color , 0.14 )} ' ,
82
- 16 : ' 0px 16px 24px 2px #{rgba ($color , 0.14 )} ' ,
83
- 17 : ' 0px 17px 26px 2px #{rgba ($color , 0.14 )} ' ,
84
- 18 : ' 0px 18px 28px 2px #{rgba ($color , 0.14 )} ' ,
85
- 19 : ' 0px 19px 29px 2px #{rgba ($color , 0.14 )} ' ,
86
- 20 : ' 0px 20px 31px 3px #{rgba ($color , 0.14 )} ' ,
87
- 21 : ' 0px 21px 33px 3px #{rgba ($color , 0.14 )} ' ,
88
- 22 : ' 0px 22px 35px 3px #{rgba ($color , 0.14 )} ' ,
89
- 23 : ' 0px 23px 36px 3px #{rgba ($color , 0.14 )} ' ,
90
- 24 : ' 0px 24px 38px 3px #{rgba ($color , 0.14 )} '
66
+ 0 : ' 0px 0px 0px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
67
+ 1 : ' 0px 1px 1px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
68
+ 2 : ' 0px 2px 2px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
69
+ 3 : ' 0px 3px 4px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
70
+ 4 : ' 0px 4px 5px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
71
+ 5 : ' 0px 5px 8px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
72
+ 6 : ' 0px 6px 10px 0px #{rgba ($color , $opacity * 0.14 )} ' ,
73
+ 7 : ' 0px 7px 10px 1px #{rgba ($color , $opacity * 0.14 )} ' ,
74
+ 8 : ' 0px 8px 10px 1px #{rgba ($color , $opacity * 0.14 )} ' ,
75
+ 9 : ' 0px 9px 12px 1px #{rgba ($color , $opacity * 0.14 )} ' ,
76
+ 10 : ' 0px 10px 14px 1px #{rgba ($color , $opacity * 0.14 )} ' ,
77
+ 11 : ' 0px 11px 15px 1px #{rgba ($color , $opacity * 0.14 )} ' ,
78
+ 12 : ' 0px 12px 17px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
79
+ 13 : ' 0px 13px 19px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
80
+ 14 : ' 0px 14px 21px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
81
+ 15 : ' 0px 15px 22px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
82
+ 16 : ' 0px 16px 24px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
83
+ 17 : ' 0px 17px 26px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
84
+ 18 : ' 0px 18px 28px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
85
+ 19 : ' 0px 19px 29px 2px #{rgba ($color , $opacity * 0.14 )} ' ,
86
+ 20 : ' 0px 20px 31px 3px #{rgba ($color , $opacity * 0.14 )} ' ,
87
+ 21 : ' 0px 21px 33px 3px #{rgba ($color , $opacity * 0.14 )} ' ,
88
+ 22 : ' 0px 22px 35px 3px #{rgba ($color , $opacity * 0.14 )} ' ,
89
+ 23 : ' 0px 23px 36px 3px #{rgba ($color , $opacity * 0.14 )} ' ,
90
+ 24 : ' 0px 24px 38px 3px #{rgba ($color , $opacity * 0.14 )} '
91
91
);
92
92
}
93
93
94
- @function _get-ambient-map ($color ) {
94
+ @function _get-ambient-map ($color , $opacity ) {
95
95
@return (
96
- 0 : ' 0px 0px 0px 0px #{rgba ($color , 0.12 )} ' ,
97
- 1 : ' 0px 1px 3px 0px #{rgba ($color , 0.12 )} ' ,
98
- 2 : ' 0px 1px 5px 0px #{rgba ($color , 0.12 )} ' ,
99
- 3 : ' 0px 1px 8px 0px #{rgba ($color , 0.12 )} ' ,
100
- 4 : ' 0px 1px 10px 0px #{rgba ($color , 0.12 )} ' ,
101
- 5 : ' 0px 1px 14px 0px #{rgba ($color , 0.12 )} ' ,
102
- 6 : ' 0px 1px 18px 0px #{rgba ($color , 0.12 )} ' ,
103
- 7 : ' 0px 2px 16px 1px #{rgba ($color , 0.12 )} ' ,
104
- 8 : ' 0px 3px 14px 2px #{rgba ($color , 0.12 )} ' ,
105
- 9 : ' 0px 3px 16px 2px #{rgba ($color , 0.12 )} ' ,
106
- 10 : ' 0px 4px 18px 3px #{rgba ($color , 0.12 )} ' ,
107
- 11 : ' 0px 4px 20px 3px #{rgba ($color , 0.12 )} ' ,
108
- 12 : ' 0px 5px 22px 4px #{rgba ($color , 0.12 )} ' ,
109
- 13 : ' 0px 5px 24px 4px #{rgba ($color , 0.12 )} ' ,
110
- 14 : ' 0px 5px 26px 4px #{rgba ($color , 0.12 )} ' ,
111
- 15 : ' 0px 6px 28px 5px #{rgba ($color , 0.12 )} ' ,
112
- 16 : ' 0px 6px 30px 5px #{rgba ($color , 0.12 )} ' ,
113
- 17 : ' 0px 6px 32px 5px #{rgba ($color , 0.12 )} ' ,
114
- 18 : ' 0px 7px 34px 6px #{rgba ($color , 0.12 )} ' ,
115
- 19 : ' 0px 7px 36px 6px #{rgba ($color , 0.12 )} ' ,
116
- 20 : ' 0px 8px 38px 7px #{rgba ($color , 0.12 )} ' ,
117
- 21 : ' 0px 8px 40px 7px #{rgba ($color , 0.12 )} ' ,
118
- 22 : ' 0px 8px 42px 7px #{rgba ($color , 0.12 )} ' ,
119
- 23 : ' 0px 9px 44px 8px #{rgba ($color , 0.12 )} ' ,
120
- 24 : ' 0px 9px 46px 8px #{rgba ($color , 0.12 )} '
96
+ 0 : ' 0px 0px 0px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
97
+ 1 : ' 0px 1px 3px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
98
+ 2 : ' 0px 1px 5px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
99
+ 3 : ' 0px 1px 8px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
100
+ 4 : ' 0px 1px 10px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
101
+ 5 : ' 0px 1px 14px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
102
+ 6 : ' 0px 1px 18px 0px #{rgba ($color , $opacity * 0.12 )} ' ,
103
+ 7 : ' 0px 2px 16px 1px #{rgba ($color , $opacity * 0.12 )} ' ,
104
+ 8 : ' 0px 3px 14px 2px #{rgba ($color , $opacity * 0.12 )} ' ,
105
+ 9 : ' 0px 3px 16px 2px #{rgba ($color , $opacity * 0.12 )} ' ,
106
+ 10 : ' 0px 4px 18px 3px #{rgba ($color , $opacity * 0.12 )} ' ,
107
+ 11 : ' 0px 4px 20px 3px #{rgba ($color , $opacity * 0.12 )} ' ,
108
+ 12 : ' 0px 5px 22px 4px #{rgba ($color , $opacity * 0.12 )} ' ,
109
+ 13 : ' 0px 5px 24px 4px #{rgba ($color , $opacity * 0.12 )} ' ,
110
+ 14 : ' 0px 5px 26px 4px #{rgba ($color , $opacity * 0.12 )} ' ,
111
+ 15 : ' 0px 6px 28px 5px #{rgba ($color , $opacity * 0.12 )} ' ,
112
+ 16 : ' 0px 6px 30px 5px #{rgba ($color , $opacity * 0.12 )} ' ,
113
+ 17 : ' 0px 6px 32px 5px #{rgba ($color , $opacity * 0.12 )} ' ,
114
+ 18 : ' 0px 7px 34px 6px #{rgba ($color , $opacity * 0.12 )} ' ,
115
+ 19 : ' 0px 7px 36px 6px #{rgba ($color , $opacity * 0.12 )} ' ,
116
+ 20 : ' 0px 8px 38px 7px #{rgba ($color , $opacity * 0.12 )} ' ,
117
+ 21 : ' 0px 8px 40px 7px #{rgba ($color , $opacity * 0.12 )} ' ,
118
+ 22 : ' 0px 8px 42px 7px #{rgba ($color , $opacity * 0.12 )} ' ,
119
+ 23 : ' 0px 9px 44px 8px #{rgba ($color , $opacity * 0.12 )} ' ,
120
+ 24 : ' 0px 9px 46px 8px #{rgba ($color , $opacity * 0.12 )} '
121
121
);
122
122
}
123
123
@@ -127,29 +127,38 @@ $mat-elevation-transition-duration: 280ms !default;
127
127
// The default easing value for elevation transitions.
128
128
$mat-elevation-transition-timing-function : $mat-fast-out-slow-in-timing-function ;
129
129
130
+ // The default color for elevation shadows.
131
+ $mat-elevation-color : black !default ;
132
+
133
+ // The default opacity scaling value for elevation shadows.
134
+ $mat-elevation-opacity : 1 !default ;
135
+
130
136
// Prefix for elevation-related selectors.
131
137
$_mat-elevation-prefix : ' mat-elevation-z' ;
132
138
133
139
// Applies the correct css rules to an element to give it the elevation specified by $zValue.
134
140
// The $zValue must be between 0 and 24.
135
- @mixin mat-elevation ($zValue , $color : black ) {
141
+ @mixin mat-elevation ($zValue , $color : $mat-elevation-color , $opacity : $mat-elevation-opacity ) {
136
142
@if type-of ($zValue ) != number or not unitless ($zValue ) {
137
143
@error ' $zValue must be a unitless number' ;
138
144
}
139
145
@if $zValue < 0 or $zValue > 24 {
140
146
@error ' $zValue must be between 0 and 24' ;
141
147
}
142
148
143
- box-shadow : #{map-get (_get-umbra-map ($color ), $zValue )} ,
144
- #{map-get (_get-penumbra-map ($color ), $zValue )} ,
145
- #{map-get (_get-ambient-map ($color ), $zValue )} ;
149
+ box-shadow : #{map-get (_get-umbra-map ($color , $opacity ), $zValue )} ,
150
+ #{map-get (_get-penumbra-map ($color , $opacity ), $zValue )} ,
151
+ #{map-get (_get-ambient-map ($color , $opacity ), $zValue )} ;
146
152
}
147
153
148
154
// Applies the elevation to an element in a manner that allows
149
155
// consumers to override it via the Material elevation classes.
150
- @mixin mat-overridable-elevation ($zValue ) {
156
+ @mixin mat-overridable-elevation (
157
+ $zValue ,
158
+ $color : $mat-elevation-color ,
159
+ $opacity : $mat-elevation-opacity ) {
151
160
& :not ([class *= ' #{$_mat-elevation-prefix}' ]) {
152
- @include mat-elevation ($zValue );
161
+ @include mat-elevation ($zValue , $color , $opacity );
153
162
}
154
163
}
155
164
0 commit comments