PluginProbe
Bubble Menu – Floating Button Menu with Sticky Navigation / trunk
Bubble Menu – Floating Button Menu with Sticky Navigation vtrunk
trunk 1.3 2.0 2.2 2.2.1 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1 3.1.1 4.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.0.7 4.1 4.1.1
bubble-menu / public / assets / css / style.css

style.css in Bubble Menu – Floating Button Menu with Sticky Navigation trunk, at public/assets/css/style.css

508 lines 13.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*!
2 * ========= INFORMATION ============================
3 * - document: Bubble Menu - easily create a flyouts bubble menu.
4 * - brand: Wow-Company
5 * - brand-url: https://wow-company.com/
6 * - store-url: https://wow-estore.com/
7 * - author: Dmytro Lobov
8 * - url: https://wow-estore.com/item/bubble-menu-pro/
9 * ====================================================== */
10 .bubble-menu,
11 .bubble-menu * {
12 box-sizing: border-box;
13 line-height: 1;
14 }
15
16 .bubble-menu {
17 all: unset;
18 }
19 .bubble-menu ul, .bubble-menu li, .bubble-menu a, .bubble-menu button {
20 all: unset;
21 }
22 @media print {
23 .bubble-menu {
24 display: none;
25 }
26 }
27
28 .bubble-menu {
29 --size: 16px;
30 --shadow: none;
31 --color: #14102C;
32 --background: #ffffff;
33 --label-color: #ffffff;
34 --label-background: #14102C;
35 --duration: 0.5s;
36 --margin-block: 0;
37 --margin-inline: 0;
38 --radius: 0;
39 --label-radius: 0;
40 --clip-path: none;
41 --popover-inline: 270px;
42 --popover-size: 16px;
43 --popover-block: 550px;
44 --popover-backdrop: rgba(0, 0, 0, 0.85);
45 --popover-border-color: #222222;
46 --popover-padding: 10px;
47 z-index: 99999;
48 position: fixed;
49 font-size: var(--size);
50 margin-block: var(--margin-block);
51 margin-inline: var(--margin-inline);
52 visibility: hidden;
53 opacity: 0;
54 }
55 .bubble-menu.-show {
56 visibility: visible;
57 opacity: 1;
58 transition: opacity 0.2s;
59 }
60 .bubble-menu.-hidden {
61 visibility: hidden;
62 opacity: 0;
63 }
64 .bubble-menu.-hidden .bm-toggle.-visible[data-label]::after {
65 visibility: hidden;
66 }
67 .bubble-menu .bm-label {
68 border: none;
69 clip: rect(0, 0, 0, 0);
70 height: 0.01em;
71 overflow: hidden;
72 padding: 0;
73 position: absolute;
74 white-space: nowrap;
75 width: 0.01em;
76 }
77 .bubble-menu .bm-toggle,
78 .bubble-menu .bm-link {
79 position: relative;
80 display: flex;
81 align-items: center;
82 justify-content: center;
83 cursor: pointer;
84 box-shadow: var(--shadow);
85 color: var(--color);
86 background-color: var(--background);
87 transition-property: color, background-color;
88 transition-duration: var(--duration), var(--duration);
89 transition-timing-function: ease, ease;
90 border-radius: var(--radius);
91 clip-path: var(--clip-path);
92 }
93 .bubble-menu .bm-toggle:hover, .bubble-menu .bm-toggle:focus, .bubble-menu .bm-toggle:active, .bubble-menu .bm-toggle:focus-within,
94 .bubble-menu .bm-link:hover,
95 .bubble-menu .bm-link:focus,
96 .bubble-menu .bm-link:active,
97 .bubble-menu .bm-link:focus-within {
98 color: var(--background);
99 background-color: var(--color);
100 }
101 .bubble-menu .bm-toggle[data-label]::after,
102 .bubble-menu .bm-link[data-label]::after {
103 position: absolute;
104 inset: -9999px auto auto -9999px;
105 content: attr(data-label);
106 padding: 0.5em 0.75em;
107 opacity: 0;
108 border-radius: var(--label-radius);
109 white-space: nowrap;
110 z-index: 3;
111 background: var(--label-background);
112 font-style: normal;
113 font-size: calc(var(--size) - 2px);
114 line-height: 1;
115 color: var(--label-color);
116 margin-inline: 2px;
117 visibility: hidden;
118 }
119 .bubble-menu .bm-toggle.-visible.-top-right[data-label]::after, .bubble-menu .bm-toggle:hover.-top-right[data-label]::after,
120 .bubble-menu .bm-link.-visible.-top-right[data-label]::after,
121 .bubble-menu .bm-link:hover.-top-right[data-label]::after {
122 inset: auto auto 100% 100%;
123 }
124 .bubble-menu .bm-toggle.-visible.-top-right-important[data-label]::after, .bubble-menu .bm-toggle:hover.-top-right-important[data-label]::after,
125 .bubble-menu .bm-link.-visible.-top-right-important[data-label]::after,
126 .bubble-menu .bm-link:hover.-top-right-important[data-label]::after {
127 inset: auto auto 100% 100% !important;
128 }
129 .bubble-menu .bm-toggle.-visible.-top-left[data-label]::after, .bubble-menu .bm-toggle:hover.-top-left[data-label]::after,
130 .bubble-menu .bm-link.-visible.-top-left[data-label]::after,
131 .bubble-menu .bm-link:hover.-top-left[data-label]::after {
132 inset: auto 100% 100% auto;
133 }
134 .bubble-menu .bm-toggle.-visible.-top-left-important[data-label]::after, .bubble-menu .bm-toggle:hover.-top-left-important[data-label]::after,
135 .bubble-menu .bm-link.-visible.-top-left-important[data-label]::after,
136 .bubble-menu .bm-link:hover.-top-left-important[data-label]::after {
137 inset: auto 100% 100% auto !important;
138 }
139 .bubble-menu .bm-toggle.-visible.-left[data-label]::after, .bubble-menu .bm-toggle:hover.-left[data-label]::after,
140 .bubble-menu .bm-link.-visible.-left[data-label]::after,
141 .bubble-menu .bm-link:hover.-left[data-label]::after {
142 inset: 50% 100% auto auto;
143 transform: translateY(-50%);
144 margin-inline: 10px;
145 }
146 .bubble-menu .bm-toggle.-visible.-left-important[data-label]::after, .bubble-menu .bm-toggle:hover.-left-important[data-label]::after,
147 .bubble-menu .bm-link.-visible.-left-important[data-label]::after,
148 .bubble-menu .bm-link:hover.-left-important[data-label]::after {
149 inset: 50% 100% auto auto !important;
150 transform: translateY(-50%) !important;
151 margin-inline: 10px !important;
152 }
153 .bubble-menu .bm-toggle.-visible.-right[data-label]::after, .bubble-menu .bm-toggle:hover.-right[data-label]::after,
154 .bubble-menu .bm-link.-visible.-right[data-label]::after,
155 .bubble-menu .bm-link:hover.-right[data-label]::after {
156 inset: 50% auto auto 100%;
157 transform: translateY(-50%);
158 margin-inline: 10px;
159 }
160 .bubble-menu .bm-toggle.-visible.-right-important[data-label]::after, .bubble-menu .bm-toggle:hover.-right-important[data-label]::after,
161 .bubble-menu .bm-link.-visible.-right-important[data-label]::after,
162 .bubble-menu .bm-link:hover.-right-important[data-label]::after {
163 inset: 50% auto auto 100% !important;
164 transform: translateY(-50%) !important;
165 margin-inline: 10px !important;
166 }
167 .bubble-menu .bm-toggle.-visible.-bottom-right[data-label]::after, .bubble-menu .bm-toggle:hover.-bottom-right[data-label]::after,
168 .bubble-menu .bm-link.-visible.-bottom-right[data-label]::after,
169 .bubble-menu .bm-link:hover.-bottom-right[data-label]::after {
170 inset: 100% auto auto 100%;
171 }
172 .bubble-menu .bm-toggle.-visible.-bottom-right-important[data-label]::after, .bubble-menu .bm-toggle:hover.-bottom-right-important[data-label]::after,
173 .bubble-menu .bm-link.-visible.-bottom-right-important[data-label]::after,
174 .bubble-menu .bm-link:hover.-bottom-right-important[data-label]::after {
175 inset: 100% auto auto 100% !important;
176 }
177 .bubble-menu .bm-toggle.-visible.-bottom-left[data-label]::after, .bubble-menu .bm-toggle:hover.-bottom-left[data-label]::after,
178 .bubble-menu .bm-link.-visible.-bottom-left[data-label]::after,
179 .bubble-menu .bm-link:hover.-bottom-left[data-label]::after {
180 inset: 100% 100% auto auto;
181 }
182 .bubble-menu .bm-toggle.-visible.-bottom-left-important[data-label]::after, .bubble-menu .bm-toggle:hover.-bottom-left-important[data-label]::after,
183 .bubble-menu .bm-link.-visible.-bottom-left-important[data-label]::after,
184 .bubble-menu .bm-link:hover.-bottom-left-important[data-label]::after {
185 inset: 100% 100% auto auto !important;
186 }
187 .bubble-menu .bm-toggle {
188 position: relative;
189 block-size: calc(var(--size) * 3);
190 inline-size: calc(var(--size) * 3);
191 z-index: 1;
192 font-size: 1.6875em;
193 }
194 .bubble-menu .bm-toggle .bm-icon {
195 transition: rotate 0.5s;
196 }
197 .bubble-menu .bm-toggle img.bm-icon {
198 display: block;
199 max-inline-size: calc(var(--size) * 2);
200 max-block-size: calc(var(--size) * 2);
201 }
202 .bubble-menu .bm-toggle.-paused:hover .bm-icon {
203 animation-play-state: paused;
204 }
205 .bubble-menu .bm-toggle.-visible[data-label]::after, .bubble-menu .bm-toggle:hover[data-label]::after {
206 opacity: 1;
207 transition: opacity 0.2s;
208 transition-delay: var(--duration);
209 visibility: visible;
210 }
211 .bubble-menu .bm-link {
212 block-size: calc(var(--size) * 2.375);
213 inline-size: calc(var(--size) * 2.375);
214 font-size: 1.25em;
215 transition-property: color, background-color, rotate, scale;
216 }
217 .bubble-menu .bm-link.-paused:hover .bm-icon {
218 animation-play-state: paused;
219 }
220 .bubble-menu .bm-link img.bm-icon {
221 display: block;
222 max-inline-size: calc(var(--size) * 1.25);
223 max-block-size: calc(var(--size) * 1.25);
224 }
225 .bubble-menu .bm-item {
226 position: absolute;
227 transform-origin: 50% 100px;
228 top: calc((3em - 2.375em) / 2);
229 left: calc((3em - 2.375em) / 2);
230 }
231 .bubble-menu .bm-icon {
232 --icon-rotate: 0deg;
233 --icon-delay: 0s;
234 --icon-duration: 1s;
235 --icon-count: infinite;
236 --icon-scale: none;
237 rotate: var(--icon-rotate);
238 scale: var(--icon-scale);
239 }
240 .bubble-menu .bm-icon.-flip-horizontal {
241 --icon-scale: -1 1;
242 }
243 .bubble-menu .bm-icon.-flip-vertical {
244 --icon-scale: 1 -1;
245 }
246 .bubble-menu .bm-icon.-flip-both {
247 --icon-scale: -1 -1;
248 }
249 .bubble-menu .bm-icon.-beat, .bubble-menu .bm-icon.-bounce, .bubble-menu .bm-icon.-fade, .bubble-menu .bm-icon.-beat-fade, .bubble-menu .bm-icon.-flip, .bubble-menu .bm-icon.-shake, .bubble-menu .bm-icon.-spin {
250 animation-delay: var(--icon-delay);
251 animation-direction: normal;
252 animation-duration: var(--icon-duration);
253 animation-iteration-count: var(--icon-count);
254 }
255 .bubble-menu .bm-icon.-beat {
256 animation-name: wowp-icon-beat;
257 animation-timing-function: ease-in-out;
258 }
259 .bubble-menu .bm-icon.-bounce {
260 animation-name: wowp-icon-bounce;
261 animation-timing-function: cubic-bezier(0.28, 0.84, 0.42, 1);
262 }
263 .bubble-menu .bm-icon.-fade {
264 animation-name: wowp-icon-fade;
265 animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
266 }
267 .bubble-menu .bm-icon.-beat-fade {
268 animation-name: wowp-icon-beat-fade;
269 animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
270 }
271 .bubble-menu .bm-icon.-flip {
272 animation-name: wowp-icon-flip;
273 animation-timing-function: ease-in-out;
274 }
275 .bubble-menu .bm-icon.-shake {
276 animation-name: wowp-icon-shake;
277 animation-timing-function: linear;
278 }
279 .bubble-menu .bm-icon.-spin {
280 animation-name: wowp-icon-spin;
281 animation-timing-function: linear;
282 }
283 .bubble-menu [popover] {
284 max-inline-size: var(--popover-inline);
285 padding: var(--popover-padding);
286 border-color: var(--popover-border-color);
287 font-size: var(--popover-size);
288 max-block-size: var(--popover-block);
289 margin: auto;
290 }
291 .bubble-menu [popover] a {
292 cursor: pointer;
293 }
294 .bubble-menu [popover]::backdrop {
295 background-color: var(--popover-backdrop);
296 }
297 .bubble-menu.-top {
298 inset: 20px auto auto 50%;
299 transform: translateX(-50%);
300 }
301 .bubble-menu.-top-left {
302 inset: 20px auto auto 20px;
303 }
304 .bubble-menu.-top-right {
305 inset: 20px 20px auto auto;
306 }
307 .bubble-menu.-right {
308 inset: 50% 20px auto auto;
309 transform: translateY(-50%);
310 }
311 .bubble-menu.-left {
312 inset: 50% auto auto 20px;
313 transform: translateY(-50%);
314 }
315 .bubble-menu.-bottom {
316 inset: auto auto 20px 50%;
317 transform: translateX(-50%);
318 }
319 .bubble-menu.-bottom-left {
320 inset: auto auto 20px 20px;
321 }
322 .bubble-menu.-bottom-right {
323 inset: auto 20px 20px auto;
324 }
325 .bubble-menu .bm-item {
326 transition-property: opacity, transform, rotate, scale;
327 transition-duration: var(--duration);
328 }
329 .bubble-menu.-active .bm-toggle.-stop-animation .bm-icon {
330 animation-play-state: paused;
331 }
332 .bubble-menu.-active .bm-toggle:hover[data-label]::after, .bubble-menu.-active .bm-toggle.-visible[data-label]::after {
333 opacity: 0;
334 transition: opacity var(--duration);
335 visibility: hidden;
336 }
337 .bubble-menu.-active .bm-toggle .bm-icon {
338 rotate: calc(360deg + var(--icon-rotate));
339 }
340 .bubble-menu.-active .bm-item {
341 --x: 0px;
342 --y: 0px;
343 transform: translate(var(--x), var(--y));
344 }
345 .bubble-menu.-active .bm-link.-visible[data-label]::after {
346 opacity: 1;
347 transition: opacity var(--duration);
348 transition-delay: var(--duration);
349 visibility: visible;
350 }
351 .bubble-menu.-active .bm-link:hover[data-label]::after {
352 opacity: 1;
353 transition: opacity var(--duration);
354 visibility: visible;
355 }
356 .bubble-menu.-active.-effect-obo .bm-link.-visible[data-label]::after {
357 transition-delay: calc(var(--delay) + var(--duration));
358 }
359 .bubble-menu.-effect-obo .bm-item {
360 --delay: 0s;
361 transition-delay: var(--delay);
362 }
363 .bubble-menu.-effect-obo .bm-link {
364 transition-duration: var(--duration);
365 transition-timing-function: ease;
366 transition-delay: 0s, 0s, var(--delay), var(--delay);
367 }
368 .bubble-menu.-effect-fade .bm-item {
369 opacity: 0;
370 }
371 .bubble-menu.-effect-fade.-active .bm-item {
372 opacity: 1;
373 }
374 .bubble-menu.-effect-rotate.-active .bm-link {
375 rotate: 360deg;
376 }
377 .bubble-menu.-effect-scale .bm-link {
378 scale: 0.1;
379 }
380 .bubble-menu.-effect-scale.-active .bm-link {
381 scale: 1;
382 }
383 .bubble-menu.-circle {
384 --radius: 50%;
385 --label-radius: 0.5em;
386 }
387 .bubble-menu.-rounded {
388 --radius: 25%;
389 --label-radius: 0.25em;
390 }
391 .bubble-menu.-ellipse {
392 --radius: 25% 75%;
393 --label-radius: 0.25em 0.5em;
394 }
395 .bubble-menu.-square {
396 --radius: 0;
397 --label-radius: 0;
398 }
399 .bubble-menu.-size-md {
400 --size: 16px;
401 }
402 .bubble-menu.-size-sm {
403 --size: 14px;
404 }
405 .bubble-menu.-size-xs {
406 --size: 12px;
407 }
408 .bubble-menu.-size-lg {
409 --size: 18px;
410 }
411 .bubble-menu.-size-xl {
412 --size: 20px;
413 }
414 .bubble-menu.-size-xxl {
415 --size: 22px;
416 }
417 .bubble-menu.-shadow {
418 --shadow: 0 0 6px rgba(0, 0, 0, .5);
419 }
420
421 @keyframes wowp-icon-beat {
422 0%, 90% {
423 transform: scale(1);
424 }
425 45% {
426 transform: scale(1.25);
427 }
428 }
429 @keyframes wowp-icon-bounce {
430 0% {
431 transform: scale(1, 1) translateY(0);
432 }
433 10% {
434 transform: scale(1.1, 0.9) translateY(0);
435 }
436 30% {
437 transform: scale(0.9, 1.1) translateY(-0.25em);
438 }
439 50% {
440 transform: scale(1.05, 0.95) translateY(0);
441 }
442 57% {
443 transform: scale(1, 1) translateY(-0.125em);
444 }
445 64% {
446 transform: scale(1, 1) translateY(0);
447 }
448 100% {
449 transform: scale(1, 1) translateY(0);
450 }
451 }
452 @keyframes wowp-icon-fade {
453 50% {
454 opacity: 0.4;
455 }
456 }
457 @keyframes wowp-icon-beat-fade {
458 0%, 100% {
459 opacity: 0.4;
460 transform: scale(1);
461 }
462 50% {
463 opacity: 1;
464 transform: scale(1.125);
465 }
466 }
467 @keyframes wowp-icon-flip {
468 50% {
469 transform: rotate3d(0, 1, 0, -180deg);
470 }
471 }
472 @keyframes wowp-icon-shake {
473 0% {
474 transform: rotate(-15deg);
475 }
476 4% {
477 transform: rotate(15deg);
478 }
479 8%, 24% {
480 transform: rotate(-18deg);
481 }
482 12%, 28% {
483 transform: rotate(18deg);
484 }
485 16% {
486 transform: rotate(-22deg);
487 }
488 20% {
489 transform: rotate(22deg);
490 }
491 32% {
492 transform: rotate(-12deg);
493 }
494 36% {
495 transform: rotate(12deg);
496 }
497 40%, 100% {
498 transform: rotate(0deg);
499 }
500 }
501 @keyframes wowp-icon-spin {
502 0% {
503 transform: rotate(0deg);
504 }
505 100% {
506 transform: rotate(360deg);
507 }
508 }