带jQuery和GSAP 滑出式全屏导航

  • 源码大小:5.82KB
  • 所需积分:1积分
  • 源码编号:19JP-3724
  • 浏览次数:696次
  • 最后更新:2023年07月15日
  • 所属栏目:其他
本站默认解压密码:19jp.com 或 19jp_com

简介

超级流畅的现代全屏导航,切换时可从页面左边缘滑动。

使用jQuery、CSS/CS3和GSAP的TweenMax.js库构建。

如何使用它:

1.创建一个切换元素来打开/关闭导航。

  1. <div class="wrapper">
  2. <div class="navbar">
  3. <div class="nav-toggle">menu</div>
  4. </div>
  5. </div>
  1. .wrapper {
  2. position: fixed;
  3. width: 100%;
  4. height: 100vh;
  5. }
  6.  
  7. .navbar {
  8. box-sizing: border-box;
  9. position: fixed;
  10. width: 6%;
  11. height: 100vh;
  12. background: #a72929;
  13. display: flex;
  14. align-items: center;
  15. justify-content: center;
  16. border-right: 2.4px solid #fff;
  17. }
  18.  
  19. .nav-toggle {
  20. cursor: pointer;
  21. transform: rotate(-90deg);
  22. color: #fff;
  23. text-transform: uppercase;
  24. }

2.将菜单项添加到导航中。

  1. <div class="nav">
  2. <div class="nav-items">
  3. <div class="nav-item">
  4. <a href="#">Home</a>
  5. <div class="nav-item-wrapper"></div>
  6. </div>
  7. <div class="nav-item">
  8. <a href="#">Portfolio</a>
  9. <div class="nav-item-wrapper"></div>
  10. </div>
  11. <div class="nav-item">
  12. <a href="#">About</a>
  13. <div class="nav-item-wrapper"></div>
  14. </div>
  15. <div class="nav-item">
  16. <a href="#">Contact</a>
  17. <div class="nav-item-wrapper"></div>
  18. </div>
  19. </div>
  20. </div>
  1. .nav {
  2. position: fixed;
  3. width: 0%;
  4. height: 100%;
  5. overflow: hidden;
  6. display: flex;
  7. align-items: center;
  8. left: 6%;
  9. background: #252e2d;
  10. }
  11.  
  12. .nav-items {
  13. margin: 60px;
  14. }
  15.  
  16. .nav-item {
  17. position: relative;
  18. font-size: 120px;
  19. }
  20.  
  21. .nav-item a {
  22. position: relative;
  23. top: 140px;
  24. text-decoration: none;
  25. color: #a72929;
  26. text-transform: uppercase;
  27. font-family: "Monument Extended";
  28. font-size: 140px;
  29. font-weight: lighter;
  30. letter-spacing: -8px;
  31. transition: 1s;
  32. }
  33.  
  34. .nav-item-wrapper:after {
  35. content: "";
  36. position: absolute;
  37. top: 140px;
  38. left: 0;
  39. width: 110%;
  40. height: 100%;
  41. background: #252e2d;
  42. margin: 0 auto;
  43. transition: 1s;
  44. }
  45.  
  46. .nav-item:after {
  47. content: "";
  48. position: absolute;
  49. top: 45%;
  50. left: 0;
  51. width: 0%;
  52. height: 2.8px;
  53. background: #fff;
  54. transition: 0.3s;
  55. }
  56.  
  57. .nav-item:hover:after {
  58. width: 100%;
  59. }
  60.  
  61. @media (max-width: 990px) {
  62. html,
  63. body {
  64. overflow: hidden;
  65. }
  66.  
  67. .navbar {
  68. width: 16%;
  69. }
  70.  
  71. .nav {
  72. left: 16%;
  73. }
  74.  
  75. .nav-item a {
  76. font-size: 40px;
  77. letter-spacing: 0;
  78. }
  79.  
  80. .nav-item:after {
  81. display: none;
  82. }
  83. }

3.从CDN加载必要的jQuery和TweenMax JavaScript库。

  1. <script src="/path/to/cdn/jquery.slim.min.js"></script>
  2. <script src="/path/to/cdn/TweenMax.min.js"></script>

4.启用全屏导航。

  1. TweenMax.from(".navbar", 2, {
  2. left: "-20%",
  3. ease: Expo.easeInOut,
  4. delay: 0.4,
  5. });
  6.  
  7. var t1 = new TimelineMax({ paused: true });
  8.  
  9. t1.to(".nav", 1.8, {
  10. width: "94%",
  11. ease: Expo.easeInOut,
  12. });
  13.  
  14. t1.staggerTo(".nav-item a", 0.6, { top: "0px", ease: Expo.easeInOut }, 0.1, "-=0.8");
  15.  
  16. t1.reverse();
  17. $(document).on("click", ".nav-toggle", function () {
  18. t1.reversed(!t1.reversed());
  19. });
  20.  
  21. $(document).on("click", ".nav-item a", function () {
  22. t1.reversed(!t1.reversed());
  23. });

预览截图