Reduced backdrop z-index
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / style / ui / menuMobile.scss
CommitLineData
8a0b323e
AE
1@include screen-sm-up {
2 .pageContainer {
3 &.menuOverlay-pageMainMenuMobile {
4 transform: translateX(350px);
5
6 .mainMenu {
7 visibility: hidden;
8 }
9 }
10
11 &.menuOverlay-pageUserMenuMobile {
12 transform: translateX(-350px);
13
14 .userPanel {
15 visibility: hidden;
16 }
17 }
18 }
431e4cb4
AE
19}
20
21/* menu container */
22.menuOverlayMobile {
8a0b323e 23 background-color: rgb(52, 73, 94);
431e4cb4 24 bottom: 0;
8a0b323e 25 display: none;
431e4cb4 26 overflow: hidden;
8a0b323e 27 position: absolute;
431e4cb4 28 top: 0;
431e4cb4
AE
29 z-index: 320;
30
8a0b323e
AE
31 &.open {
32 display: block;
431e4cb4 33
8a0b323e
AE
34 @include screen-sm-up {
35 + .menuOverlayMobileBackdrop {
36 display: block;
37 }
431e4cb4
AE
38 }
39 }
40
8a0b323e
AE
41 > .menuOverlayItemList {
42 // we use `transform: translateX()` for performance reasons
43 transition: transform .24s cubic-bezier(.25, .46, .45, .94);
431e4cb4 44
8a0b323e
AE
45 /* work-around to avoid setting explicit visibility */
46 visibility: visible;
47 }
48
49 &.allowScroll {
50 .menuOverlayItemList:not(.hidden) {
51 overflow: auto;
431e4cb4
AE
52 }
53 }
54
8a0b323e
AE
55 &:not(.allowScroll) {
56 // block UI while switching between menus
57 &::before {
58 bottom: 0;
59 content: "";
60 left: 0;
61 position: absolute;
62 right: 0;
63 top: 0;
64 z-index: 500;
65 }
66 }
67
68 @include screen-xs {
69 left: 0;
70 max-width: 100vw;
71 right: 0;
72
73 .menuOverlayItemList {
74 right: 0;
75 }
76 }
77
78 @include screen-sm-up {
79 width: 350px;
80
81 &.pageMainMenuMobile {
82 left: 0;
83
84 & + .menuOverlayMobileBackdrop {
85 box-shadow: inset 5px 0 10px -5px rgba(0, 0, 0, .6);
86 left: 350px;
87 }
88
89 .menuOverlayItemList {
90 left: 0;
91 }
92 }
93
94 &.pageUserMenuMobile {
95 right: 0;
96
97 & + .menuOverlayMobileBackdrop {
98 box-shadow: inset -5px 0 10px -5px rgba(0, 0, 0, .6);
99 right: 350px;
100 }
101
102 .menuOverlayItemList {
103 right: 0;
104 }
105 }
431e4cb4
AE
106 }
107}
108
8a0b323e
AE
109.menuOverlayMobileBackdrop {
110 background-color: rgba(0, 0, 0, .4);
111 bottom: 0;
112 display: none;
113 left: 0;
114 position: fixed;
115 right: 0;
116 top: 0;
cf605149 117 z-index: 445;
8a0b323e
AE
118}
119
431e4cb4
AE
120.menuOverlayItemWrapper {
121 display: flex;
122 justify-content: flex-end;
123
124 > .menuOverlayItemLink {
125 flex: 1 1 auto;
126 }
127}
128
129.menuOverlayItemList {
a06fea35 130 background-color: rgb(52, 73, 94);
8a0b323e 131 height: 100%;
431e4cb4
AE
132 list-style-type: none;
133 margin: 0;
8a0b323e
AE
134 padding: 5px 0;
135 position: absolute;
431e4cb4
AE
136 top: 0;
137 left: -1px;
431e4cb4
AE
138 bottom: 0;
139 width: calc(100% + 1px);
140 z-index: 450;
431e4cb4 141
8a0b323e
AE
142 @include screen-sm-up {
143 width: 350px;
144 }
145
146 &:not(.activeList) {
147 display: none;
431e4cb4
AE
148 }
149}
150
151.menuOverlayItemSpacer {
152 margin-top: 20px;
153
154 /* avoid successive spacers piling up */
155 & + .menuOverlayItemSpacer {
156 display: none;
157 }
158}
159
160.menuOverlayItem {
161 &:not(:last-child) {
162 margin-bottom: 1px
163 }
164
165 /* nested item list */
166 > .menuOverlayItemList {
8a0b323e 167 margin-left: 100%;
431e4cb4 168 z-index: 500;
431e4cb4
AE
169 }
170}
171
172.menuOverlayItemLink,
173.menuOverlayTitle,
174.menuOverlayBackLink {
175 color: rgb(255, 255, 255);
176 display: block;
177 font-size: 14px;
178 padding: 10px 30px;
179 position: relative;
180}
181
182.menuOverlayItemLink {
d722ff40 183 align-items: center;
a06fea35 184 background-color: rgb(44, 62, 80);
d722ff40 185 display: flex;
431e4cb4
AE
186 overflow: hidden;
187 text-overflow: ellipsis;
188 white-space: nowrap;
189
190 .icon::before {
191 color: #fff;
192 }
193
d722ff40
MW
194 &:hover {
195 color: rgb(255, 255, 255);
196 }
197
431e4cb4
AE
198 /* wrapper class for links containing an additional badge */
199 &.menuOverlayItemBadge {
200 align-items: center;
201 display: flex;
202 padding-right: 10px;
203
204 /* different padding if there is no additional icon after the link,
205 ensures proper alignment for links with badges containing a child
206 item list */
207 &:last-child {
208 /* 55px = 10px padding + 1px margin + icon */
209 /* icon = 2x 10px padding + 16px width */
210 padding-right: 55px;
211 }
212
213 > .menuOverlayItemTitle {
214 flex: 1 1 auto;
215 overflow: hidden;
216 text-overflow: ellipsis;
217 }
218
219 > .badge {
220 flex: 0 0 auto;
221 }
222 }
223
224 &.menuOverlayItemLinkMore::after {
225 color: rgb(204, 204, 204);
226 content: $fa-var-angle-right;
227 display: block;
228 font-family: FontAwesome;
229 font-size: 24px;
230 position: absolute;
231 right: 10px;
232 top: 50%;
233 transform: translateY(-50%);
234 }
235}
236
3fddb0ba
AE
237.pageUserMenuMobile .menuOverlayItemBadge:last-child {
238 padding-right: 10px !important;
239}
240
c8362991
AE
241.menuOverlayItemLink.active,
242.menuOverlayItemLinkIcon.active {
a06fea35 243 background-color: rgb(34, 49, 63);
c8362991
AE
244}
245
431e4cb4
AE
246.menuOverlayTitle {
247 color: rgb(204, 204, 204);
248 overflow: hidden;
249 text-overflow: ellipsis;
250 white-space: nowrap;
251
252 &:not(:first-child) {
253 margin-top: 10px;
254 }
255}
256
257/* icon link sharing the space with a link or (header only) the logo */
258.menuOverlayItemLinkIcon {
a06fea35 259 background-color: rgb(44, 62, 80);
431e4cb4
AE
260 flex: 0 0 auto;
261 margin-left: 1px;
262 padding: 10px;
263
264 /* force explicit dimensions because no each .icon24 is of equal height/width */
265 height: 44px;
266 width: 44px;
267
268 > .icon::before {
269 color: #fff;
270 }
271}
272
273.menuOverlayBackLink::before {
274 color: rgb(204, 204, 204);
275 content: $fa-var-angle-left;
276 display: block;
277 font-family: FontAwesome;
278 font-size: 18px;
279 position: absolute;
d722ff40 280 left: 12px;
431e4cb4
AE
281 top: 50%;
282 transform: translateY(-50%);
283}
284
285.menuOverlayLogoWrapper {
286 flex: 1 1 auto;
287 padding: 5px;
288 display: flex;
289
290 .menuOverlayLogo {
291 flex: 1 1 auto;
292 background-size: contain;
293 background-repeat: no-repeat;
294 background-position: center;
295 }
296}