|
584 | 584 | @keyframes slideInUp { |
585 | 585 | to { |
586 | 586 | opacity: 1; |
587 | | - transform: translateY(0); |
| 587 | + transform: none; |
588 | 588 | } |
589 | 589 | } |
590 | 590 |
|
|
597 | 597 | padding: 0.3rem 1.2rem; |
598 | 598 | border-radius: 8px; |
599 | 599 | transition: |
600 | | - transform 0.25s ease, |
601 | 600 | background 0.3s ease, |
602 | 601 | box-shadow 0.3s ease; |
603 | | - will-change: transform; |
604 | 602 | } |
605 | 603 |
|
606 | 604 | /* Shimmer sweep */ |
|
627 | 625 | } |
628 | 626 |
|
629 | 627 | li a:hover { |
630 | | - transform: translateY(-2px); |
631 | 628 | background: rgba(255, 255, 255, 0.07); |
632 | 629 | box-shadow: 0 0 18px rgba(255, 255, 255, 0.1); |
633 | 630 | } |
634 | 631 |
|
635 | 632 | li h2 { |
636 | 633 | padding: 0 0.6rem; |
637 | | - transition: |
638 | | - letter-spacing 0.3s ease, |
639 | | - text-shadow 0.3s ease; |
| 634 | + transition: text-shadow 0.3s ease; |
640 | 635 | } |
641 | 636 |
|
642 | 637 | li i { |
|
645 | 640 | } |
646 | 641 |
|
647 | 642 | a:hover h2 { |
648 | | - letter-spacing: 0.06em; |
649 | 643 | text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); |
650 | 644 | } |
651 | 645 |
|
652 | 646 | a:hover i { |
653 | 647 | text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); |
654 | 648 | } |
655 | 649 |
|
656 | | - /* Ripple */ |
657 | | - .ripple { |
658 | | - position: absolute; |
659 | | - border-radius: 9999px; |
660 | | - background: rgba(255, 255, 255, 0.22); |
661 | | - transform: scale(0); |
662 | | - animation: ripple-expand 0.55s ease-out forwards; |
663 | | - pointer-events: none; |
664 | | - } |
665 | | - |
666 | | - @keyframes ripple-expand { |
667 | | - to { |
668 | | - transform: scale(2.8); |
669 | | - opacity: 0; |
670 | | - } |
671 | | - } |
672 | | - |
673 | 650 | /* ── Footer ── */ |
674 | 651 | footer { |
675 | 652 | text-align: center; |
|
1071 | 1048 | completeLoader(); |
1072 | 1049 | }; |
1073 | 1050 |
|
1074 | | - // ── Ripple on link click ── |
1075 | | - document.querySelectorAll('li a').forEach((link) => { |
1076 | | - link.addEventListener('click', function (e) { |
1077 | | - const ripple = document.createElement('span'); |
1078 | | - ripple.classList.add('ripple'); |
1079 | | - const rect = this.getBoundingClientRect(); |
1080 | | - const size = Math.max(rect.width, rect.height); |
1081 | | - ripple.style.width = ripple.style.height = size + 'px'; |
1082 | | - ripple.style.left = e.clientX - rect.left - size / 2 + 'px'; |
1083 | | - ripple.style.top = e.clientY - rect.top - size / 2 + 'px'; |
1084 | | - this.appendChild(ripple); |
1085 | | - ripple.addEventListener('animationend', () => ripple.remove()); |
1086 | | - }); |
1087 | | - }); |
1088 | 1051 | </script> |
1089 | 1052 | </body> |
1090 | 1053 | </html> |
0 commit comments