Dev-in-the-BM commited on
Commit
4e04ad1
·
verified ·
1 Parent(s): 03c62f1

now its too simple.

Browse files

making it more visually engaging, dynamic, animated

Files changed (1) hide show
  1. index.html +255 -34
index.html CHANGED
@@ -38,17 +38,159 @@
38
  line-height: 1.6;
39
  overflow-x: hidden;
40
  cursor: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  }
 
42
  .custom-cursor {
43
- width: 16px;
44
- height: 16px;
45
- border: 1px solid var(--accent);
46
  border-radius: 50%;
47
  position: fixed;
48
  pointer-events: none;
49
  z-index: 9999;
50
- transition: all 0.15s ease;
51
  opacity: 0.8;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
53
  .mono {
54
  font-family: 'JetBrains Mono', monospace;
@@ -238,7 +380,9 @@
238
  </head>
239
  <body>
240
  <div class="custom-cursor"></div>
 
241
  <div id="particles-js"></div>
 
242
  <!-- Navigation -->
243
  <nav class="fixed top-0 w-full bg-opacity-90 backdrop-blur-xl bg-opacity-90 backdrop-blur-xl z-50 border-b border-gray-800">
244
  <div class="max-w-7xl mx-auto px-6 py-4">
@@ -262,15 +406,18 @@
262
  </div>
263
  </nav>
264
  <!-- Hero Section -->
265
- <section id="home" class="min-h-screen flex items-center justify-center px-6 pt-20 relative">
266
- <div class="max-w-7xl mx-auto text-center animate-slide-up">
267
- <div class="mb-8 relative">
268
- <img src="https://raw.githubusercontent.com/Dev-in-the-BM/Dev-in-the-BM/blob/main/banner.png" alt="Profile Banner" class="w-full max-w-4xl mx-auto rounded-xl border border-gray-800 shadow-xl">
 
 
 
269
  </div>
270
- <h1 class="text-5xl md:text-7xl font-bold mb-6">
271
- Hi <span class="emoji-bounce inline-block">👋</span>, I'm <span class="gradient-text">Dev-in-the-BM</span>
272
  </h1>
273
- <div class="text-2xl md:text-3xl text-gray-400 mb-8 max-w-4xl mx-auto">
274
  <span class="inline-flex items-center gap-2 mb-2">
275
  <span class="emoji-bounce">🎩</span>
276
  <span>Yeshiva Bochur</span>
@@ -281,17 +428,17 @@
281
  <span>Vibe Coder</span>
282
  </span>
283
  </div>
284
- <div class="flex justify-center gap-6 mb-12">
285
- <a href="#projects" class="btn-primary">
286
  <i data-feather="briefcase" class="w-5 h-5"></i>
287
  View Projects
288
  </a>
289
- <a href="#contact" class="btn-secondary">
290
  <i data-feather="mail" class="w-5 h-5"></i>
291
  Get in Touch
292
  </a>
293
  </div>
294
- <div class="terminal max-w-3xl mx-auto">
295
  <div class="terminal-header">
296
  <div class="terminal-dot bg-red-500"></div>
297
  <div class="terminal-dot bg-yellow-500"></div>
@@ -573,22 +720,76 @@
573
  <script>
574
  // Initialize Feather Icons
575
  feather.replace();
576
- // Custom Cursor
577
  const cursor = document.querySelector('.custom-cursor');
 
578
 
579
  document.addEventListener('mousemove', (e) => {
580
- cursor.style.left = e.clientX - 8 + 'px';
581
- cursor.style.top = e.clientY - 8 + 'px';
 
 
 
 
 
582
  });
583
 
584
  document.addEventListener('mousedown', () => {
585
- cursor.style.transform = 'scale(0.8)';
 
586
  });
587
 
588
  document.addEventListener('mouseup', () => {
589
  cursor.style.transform = 'scale(1)';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
590
  });
591
- // Particles.js
592
  particlesJS('particles-js', {
593
  particles: {
594
  number: {
@@ -656,22 +857,25 @@
656
  }
657
  });
658
  });
659
- // Add slide-up animation on scroll
660
- const observerOptions = {
661
- threshold: 0.1,
662
- rootMargin: '0px 0px -50px 0px'
663
- };
 
 
664
 
665
- const observer = new IntersectionObserver((entries) => {
666
  entries.forEach(entry => {
667
  if (entry.isIntersecting) {
668
- entry.target.classList.add('animate-slide-up');
 
669
  }
670
  });
671
- }, observerOptions);
672
 
673
- document.querySelectorAll('section').forEach(section => {
674
- observer.observe(section);
675
  });
676
  // Terminal typing effect
677
  const terminalLines = document.querySelectorAll('.terminal .text-green-400 p');
@@ -682,11 +886,28 @@
682
  line.style.opacity = '1';
683
  }, index * 1000);
684
  });
685
- // Mobile menu toggle
686
  function toggleMobileMenu() {
687
- // Implement mobile menu toggle logic here
688
- console.log('Mobile menu toggled');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
689
  }
690
- </script>
691
  </body>
692
  </html>
 
38
  line-height: 1.6;
39
  overflow-x: hidden;
40
  cursor: none;
41
+ position: relative;
42
+ }
43
+
44
+ body::before {
45
+ content: '';
46
+ position: fixed;
47
+ top: 0;
48
+ left: 0;
49
+ width: 100%;
50
+ height: 100%;
51
+ background:
52
+ radial-gradient(circle at 20% 50%, rgba(124, 58, 237, 0.1) 0%, transparent 50%),
53
+ radial-gradient(circle at 80% 80%, rgba(59, 130, 246, 0.1) 0%, transparent 50%),
54
+ radial-gradient(circle at 40% 20%, rgba(236, 72, 153, 0.05) 0%, transparent 50%);
55
+ pointer-events: none;
56
+ z-index: 0;
57
  }
58
+
59
  .custom-cursor {
60
+ width: 20px;
61
+ height: 20px;
62
+ border: 2px solid var(--accent);
63
  border-radius: 50%;
64
  position: fixed;
65
  pointer-events: none;
66
  z-index: 9999;
67
+ transition: all 0.1s ease;
68
  opacity: 0.8;
69
+ box-shadow: 0 0 20px rgba(124, 58, 237, 0.5);
70
+ }
71
+
72
+ .cursor-follower {
73
+ width: 40px;
74
+ height: 40px;
75
+ background: rgba(124, 58, 237, 0.1);
76
+ border: 1px solid rgba(124, 58, 237, 0.3);
77
+ border-radius: 50%;
78
+ position: fixed;
79
+ pointer-events: none;
80
+ z-index: 9998;
81
+ transition: all 0.3s ease;
82
+ }
83
+
84
+ .magnetic-button {
85
+ position: relative;
86
+ transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
87
+ }
88
+
89
+ .magnetic-button:hover {
90
+ transform: scale(1.05);
91
+ }
92
+
93
+ @keyframes float {
94
+ 0%, 100% { transform: translateY(0px); }
95
+ 50% { transform: translateY(-20px); }
96
+ }
97
+
98
+ @keyframes glow-pulse {
99
+ 0%, 100% {
100
+ box-shadow: 0 0 20px rgba(124, 58, 237, 0.5),
101
+ 0 0 40px rgba(124, 58, 237, 0.3),
102
+ 0 0 60px rgba(124, 58, 237, 0.1);
103
+ }
104
+ 50% {
105
+ box-shadow: 0 0 30px rgba(124, 58, 237, 0.7),
106
+ 0 0 60px rgba(124, 58, 237, 0.4),
107
+ 0 0 90px rgba(124, 58, 237, 0.2);
108
+ }
109
+ }
110
+
111
+ .floating {
112
+ animation: float 6s ease-in-out infinite;
113
+ }
114
+
115
+ .glow-pulse {
116
+ animation: glow-pulse 2s ease-in-out infinite;
117
+ }
118
+
119
+ .parallax-bg {
120
+ position: absolute;
121
+ top: 0;
122
+ left: 0;
123
+ width: 100%;
124
+ height: 100%;
125
+ background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320"><path fill="%237c3aed" fill-opacity="0.05" d="M0,96L48,112C96,128,192,160,288,160C384,160,480,128,576,122.7C672,117,768,139,864,133.3C960,128,1056,96,1152,90.7C1248,85,1344,107,1392,117.3L1440,128L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"></path></svg>') no-repeat bottom;
126
+ background-size: cover;
127
+ z-index: -1;
128
+ }
129
+
130
+ .text-reveal {
131
+ opacity: 0;
132
+ transform: translateY(50px);
133
+ transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
134
+ }
135
+
136
+ .text-reveal.active {
137
+ opacity: 1;
138
+ transform: translateY(0);
139
+ }
140
+
141
+ .stagger-animation > * {
142
+ opacity: 0;
143
+ transform: translateY(30px);
144
+ transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1);
145
+ }
146
+
147
+ .stagger-animation.active > * {
148
+ opacity: 1;
149
+ transform: translateY(0);
150
+ }
151
+
152
+ .stagger-animation.active > *:nth-child(1) { transition-delay: 0.1s; }
153
+ .stagger-animation.active > *:nth-child(2) { transition-delay: 0.2s; }
154
+ .stagger-animation.active > *:nth-child(3) { transition-delay: 0.3s; }
155
+ .stagger-animation.active > *:nth-child(4) { transition-delay: 0.4s; }
156
+ .stagger-animation.active > *:nth-child(5) { transition-delay: 0.5s; }
157
+ .stagger-animation.active > *:nth-child(6) { transition-delay: 0.6s; }
158
+
159
+ .gradient-mesh {
160
+ position: absolute;
161
+ width: 100%;
162
+ height: 100%;
163
+ background:
164
+ radial-gradient(at 40% 20%, rgba(124, 58, 237, 0.3) 0px, transparent 50%),
165
+ radial-gradient(at 80% 0%, rgba(59, 130, 246, 0.3) 0px, transparent 50%),
166
+ radial-gradient(at 0% 50%, rgba(236, 72, 153, 0.2) 0px, transparent 50%);
167
+ filter: blur(100px);
168
+ z-index: -1;
169
+ }
170
+
171
+ .morphing-shape {
172
+ width: 300px;
173
+ height: 300px;
174
+ background: linear-gradient(45deg, #7c3aed, #3b82f6, #ec4899);
175
+ border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
176
+ position: absolute;
177
+ top: 50%;
178
+ left: 50%;
179
+ transform: translate(-50%, -50%);
180
+ animation: morph 8s ease-in-out infinite;
181
+ opacity: 0.1;
182
+ filter: blur(40px);
183
+ }
184
+
185
+ @keyframes morph {
186
+ 0%, 100% {
187
+ border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
188
+ transform: translate(-50%, -50%) rotate(0deg);
189
+ }
190
+ 50% {
191
+ border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%;
192
+ transform: translate(-50%, -50%) rotate(180deg);
193
+ }
194
  }
195
  .mono {
196
  font-family: 'JetBrains Mono', monospace;
 
380
  </head>
381
  <body>
382
  <div class="custom-cursor"></div>
383
+ <div class="cursor-follower"></div>
384
  <div id="particles-js"></div>
385
+ <div class="gradient-mesh"></div>
386
  <!-- Navigation -->
387
  <nav class="fixed top-0 w-full bg-opacity-90 backdrop-blur-xl bg-opacity-90 backdrop-blur-xl z-50 border-b border-gray-800">
388
  <div class="max-w-7xl mx-auto px-6 py-4">
 
406
  </div>
407
  </nav>
408
  <!-- Hero Section -->
409
+ <section id="home" class="min-h-screen flex items-center justify-center px-6 pt-20 relative overflow-hidden">
410
+ <div class="morphing-shape"></div>
411
+ <div class="parallax-bg"></div>
412
+ <div class="max-w-7xl mx-auto text-center relative z-10">
413
+ <div class="mb-8 relative floating">
414
+ <div class="absolute inset-0 bg-gradient-to-r from-purple-600 to-blue-600 rounded-xl blur-xl opacity-50"></div>
415
+ <img src="https://raw.githubusercontent.com/Dev-in-the-BM/Dev-in-the-BM/blob/main/banner.png" alt="Profile Banner" class="w-full max-w-4xl mx-auto rounded-xl border border-gray-800 shadow-2xl relative z-10 transform hover:scale-105 transition-transform duration-500">
416
  </div>
417
+ <h1 class="text-5xl md:text-7xl font-bold mb-6 text-reveal">
418
+ Hi <span class="emoji-bounce inline-block">👋</span>, I'm <span class="gradient-text glow-pulse">Dev-in-the-BM</span>
419
  </h1>
420
+ <div class="text-2xl md:text-3xl text-gray-400 mb-8 max-w-4xl mx-auto stagger-animation">
421
  <span class="inline-flex items-center gap-2 mb-2">
422
  <span class="emoji-bounce">🎩</span>
423
  <span>Yeshiva Bochur</span>
 
428
  <span>Vibe Coder</span>
429
  </span>
430
  </div>
431
+ <div class="flex justify-center gap-6 mb-12 stagger-animation">
432
+ <a href="#projects" class="btn-primary magnetic-button">
433
  <i data-feather="briefcase" class="w-5 h-5"></i>
434
  View Projects
435
  </a>
436
+ <a href="#contact" class="btn-secondary magnetic-button">
437
  <i data-feather="mail" class="w-5 h-5"></i>
438
  Get in Touch
439
  </a>
440
  </div>
441
+ <div class="terminal max-w-3xl mx-auto">
442
  <div class="terminal-header">
443
  <div class="terminal-dot bg-red-500"></div>
444
  <div class="terminal-dot bg-yellow-500"></div>
 
720
  <script>
721
  // Initialize Feather Icons
722
  feather.replace();
723
+ // Enhanced Custom Cursor
724
  const cursor = document.querySelector('.custom-cursor');
725
+ const follower = document.querySelector('.cursor-follower');
726
 
727
  document.addEventListener('mousemove', (e) => {
728
+ cursor.style.left = e.clientX - 10 + 'px';
729
+ cursor.style.top = e.clientY - 10 + 'px';
730
+
731
+ setTimeout(() => {
732
+ follower.style.left = e.clientX - 20 + 'px';
733
+ follower.style.top = e.clientY - 20 + 'px';
734
+ }, 100);
735
  });
736
 
737
  document.addEventListener('mousedown', () => {
738
+ cursor.style.transform = 'scale(0.6)';
739
+ follower.style.transform = 'scale(0.8)';
740
  });
741
 
742
  document.addEventListener('mouseup', () => {
743
  cursor.style.transform = 'scale(1)';
744
+ follower.style.transform = 'scale(1)';
745
+ });
746
+
747
+ // Magnetic button effect
748
+ document.querySelectorAll('.magnetic-button').forEach(button => {
749
+ button.addEventListener('mousemove', (e) => {
750
+ const rect = button.getBoundingClientRect();
751
+ const x = e.clientX - rect.left - rect.width / 2;
752
+ const y = e.clientY - rect.top - rect.height / 2;
753
+
754
+ button.style.transform = `translate(${x * 0.3}px, ${y * 0.3}px) scale(1.05)`;
755
+ });
756
+
757
+ button.addEventListener('mouseleave', () => {
758
+ button.style.transform = 'translate(0, 0) scale(1)';
759
+ });
760
+ });
761
+
762
+ // Text reveal animation
763
+ const observerOptions = {
764
+ threshold: 0.1,
765
+ rootMargin: '0px 0px -50px 0px'
766
+ };
767
+
768
+ const textObserver = new IntersectionObserver((entries) => {
769
+ entries.forEach(entry => {
770
+ if (entry.isIntersecting) {
771
+ entry.target.classList.add('active');
772
+ }
773
+ });
774
+ }, observerOptions);
775
+
776
+ document.querySelectorAll('.text-reveal').forEach(el => {
777
+ textObserver.observe(el);
778
+ });
779
+
780
+ document.querySelectorAll('.stagger-animation').forEach(el => {
781
+ textObserver.observe(el);
782
+ });
783
+
784
+ // Parallax effect
785
+ window.addEventListener('scroll', () => {
786
+ const scrolled = window.pageYOffset;
787
+ const parallax = document.querySelector('.parallax-bg');
788
+ if (parallax) {
789
+ parallax.style.transform = `translateY(${scrolled * 0.5}px)`;
790
+ }
791
  });
792
+ // Particles.js
793
  particlesJS('particles-js', {
794
  particles: {
795
  number: {
 
857
  }
858
  });
859
  });
860
+ // Enhanced scroll animations
861
+ const sections = document.querySelectorAll('section');
862
+ sections.forEach((section, index) => {
863
+ section.style.opacity = '0';
864
+ section.style.transform = 'translateY(50px)';
865
+ section.style.transition = `all 0.8s cubic-bezier(0.4, 0, 0.2, 1) ${index * 0.1}s`;
866
+ });
867
 
868
+ const sectionObserver = new IntersectionObserver((entries) => {
869
  entries.forEach(entry => {
870
  if (entry.isIntersecting) {
871
+ entry.target.style.opacity = '1';
872
+ entry.target.style.transform = 'translateY(0)';
873
  }
874
  });
875
+ }, { threshold: 0.1 });
876
 
877
+ sections.forEach(section => {
878
+ sectionObserver.observe(section);
879
  });
880
  // Terminal typing effect
881
  const terminalLines = document.querySelectorAll('.terminal .text-green-400 p');
 
886
  line.style.opacity = '1';
887
  }, index * 1000);
888
  });
889
+ // Mobile menu toggle with animation
890
  function toggleMobileMenu() {
891
+ const mobileMenu = document.createElement('div');
892
+ mobileMenu.className = 'fixed inset-0 bg-black bg-opacity-90 z-50 flex items-center justify-center';
893
+ mobileMenu.innerHTML = `
894
+ <div class="text-center">
895
+ <button onclick="this.parentElement.parentElement.remove()" class="absolute top-6 right-6 text-white">
896
+ <i data-feather="x" class="w-8 h-8"></i>
897
+ </button>
898
+ <nav class="flex flex-col gap-6 text-2xl">
899
+ <a href="#home" onclick="toggleMobileMenu()" class="text-gray-300 hover:text-white transition-colors">Home</a>
900
+ <a href="#about" onclick="toggleMobileMenu()" class="text-gray-300 hover:text-white transition-colors">About</a>
901
+ <a href="#projects" onclick="toggleMobileMenu()" class="text-gray-300 hover:text-white transition-colors">Projects</a>
902
+ <a href="#skills" onclick="toggleMobileMenu()" class="text-gray-300 hover:text-white transition-colors">Skills</a>
903
+ <a href="#sponsor" onclick="toggleMobileMenu()" class="text-gray-300 hover:text-white transition-colors">Sponsor</a>
904
+ <a href="#contact" onclick="toggleMobileMenu()" class="text-gray-300 hover:text-white transition-colors">Contact</a>
905
+ </nav>
906
+ </div>
907
+ `;
908
+ document.body.appendChild(mobileMenu);
909
+ feather.replace();
910
  }
911
+ </script>
912
  </body>
913
  </html>