├── README.md ├── cause.css ├── cause.html ├── cause.js ├── d1.jpg ├── d2.jpg ├── d3.jpg ├── d4.jpg ├── gif1.gif ├── gif2.gif ├── index.html ├── last.html ├── script.js └── style.css /README.md: -------------------------------------------------------------------------------- 1 | # BestFriend_ 2 | You can download.. modify and Grow it 3 | -------------------------------------------------------------------------------- /cause.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Bubblegum+Sans&family=Comic+Neue:wght@700&family=Quicksand:wght@500&display=swap'); 2 | 3 | * { 4 | margin: 0; 5 | padding: 0; 6 | box-sizing: border-box; 7 | cursor: none; 8 | } 9 | 10 | body { 11 | min-height: 100vh; 12 | background: linear-gradient(-45deg, #ffe6e6, #e6e6ff, #ffebf5); 13 | background-size: 400% 400%; 14 | animation: gradientBG 15s ease infinite; 15 | font-family: 'Quicksand', sans-serif; 16 | overflow-x: hidden; 17 | padding: 2rem; 18 | } 19 | 20 | .custom-cursor { 21 | width: 30px; 22 | height: 30px; 23 | position: fixed; 24 | pointer-events: none; 25 | z-index: 9999; 26 | mix-blend-mode: difference; 27 | transition: transform 0.1s; 28 | } 29 | 30 | .custom-cursor svg { 31 | width: 100%; 32 | height: 100%; 33 | filter: drop-shadow(0 0 5px rgba(255, 182, 193, 0.5)); 34 | } 35 | 36 | .container { 37 | max-width: 1200px; 38 | margin: 0 auto; 39 | text-align: center; 40 | position: relative; 41 | z-index: 1; 42 | } 43 | 44 | h1 { 45 | font-family: 'Bubblegum Sans', cursive; 46 | font-size: 3rem; 47 | color: #ff69b4; 48 | text-shadow: 2px 2px 4px rgba(255, 105, 180, 0.3); 49 | margin-bottom: 2rem; 50 | animation: bounce 1s ease infinite; 51 | } 52 | 53 | .reason-card { 54 | background: rgba(255, 255, 255, 0.9); 55 | border-radius: 20px; 56 | padding: 2rem; 57 | margin: 1.5rem; 58 | box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1); 59 | transition: transform 0.3s, box-shadow 0.3s; 60 | cursor: pointer; 61 | position: relative; 62 | overflow: hidden; 63 | } 64 | 65 | .reason-card:hover { 66 | transform: translateY(-5px); 67 | box-shadow: 0 8px 25px rgba(255, 105, 180, 0.2); 68 | } 69 | 70 | .reason-text { 71 | font-size: 1.2rem; 72 | margin-bottom: 1rem; 73 | position: relative; 74 | z-index: 2; 75 | } 76 | 77 | .gif-overlay { 78 | position: absolute; 79 | top: 0; 80 | left: 0; 81 | width: 100%; 82 | height: 100%; 83 | background: rgba(255, 255, 255, 0.95); 84 | display: flex; 85 | align-items: center; 86 | justify-content: center; 87 | opacity: 0; 88 | transition: opacity 0.3s; 89 | z-index: 1; 90 | } 91 | 92 | .reason-card:hover .gif-overlay { 93 | opacity: 1; 94 | } 95 | 96 | .shuffle-button { 97 | background: linear-gradient(45deg, #ff69b4, #ff99cc); 98 | border: none; 99 | border-radius: 50px; 100 | padding: 1rem 2rem; 101 | font-size: 1.2rem; 102 | color: white; 103 | margin: 2rem 0; 104 | cursor: pointer; 105 | transition: transform 0.3s; 106 | font-family: 'Comic Neue', cursive; 107 | box-shadow: 0 5px 15px rgba(255, 105, 180, 0.3); 108 | } 109 | 110 | .shuffle-button:hover { 111 | transform: scale(1.1); 112 | } 113 | 114 | .floating { 115 | position: fixed; 116 | pointer-events: none; 117 | animation: float 3s ease-in-out infinite; 118 | } 119 | 120 | .ending-section { 121 | margin-top: 4rem; 122 | padding: 2rem; 123 | text-align: center; 124 | } 125 | 126 | .ending-text { 127 | font-family: 'Bubblegum Sans', cursive; 128 | font-size: 2rem; 129 | color: #ff69b4; 130 | margin-bottom: 2rem; 131 | opacity: 0; 132 | transform: translateY(20px); 133 | } 134 | 135 | .teddy-hug { 136 | width: 200px; 137 | margin: 0 auto; 138 | transform: scale(0); 139 | } 140 | 141 | @keyframes gradientBG { 142 | 0% { background-position: 0% 50%; } 143 | 50% { background-position: 100% 50%; } 144 | 100% { background-position: 0% 50%; } 145 | } 146 | 147 | @keyframes float { 148 | 0%, 100% { transform: translateY(0); } 149 | 50% { transform: translateY(-20px); } 150 | } 151 | 152 | @keyframes bounce { 153 | 0%, 100% { transform: translateY(0); } 154 | 50% { transform: translateY(-10px); } 155 | } 156 | 157 | @media (max-width: 768px) { 158 | h1 { font-size: 2rem; } 159 | .reason-card { margin: 1rem; } 160 | .reason-text { font-size: 1rem; } 161 | } 162 | .shuffle-button { 163 | background: linear-gradient(45deg, #ff69b4, #ff99cc); 164 | border: none; 165 | border-radius: 50px; 166 | padding: 1rem 2rem; 167 | font-size: 1.2rem; 168 | color: white; 169 | margin: 2rem 0; 170 | cursor: pointer; 171 | transition: all 0.3s; 172 | font-family: 'Comic Neue', cursive; 173 | box-shadow: 0 5px 15px rgba(255, 105, 180, 0.3); 174 | } 175 | 176 | .shuffle-button.story-mode { 177 | background: linear-gradient(45deg, #9b6dff, #ff6dc7); 178 | transform: scale(1.1); 179 | } 180 | 181 | .shuffle-button:hover { 182 | transform: scale(1.1); 183 | } 184 | 185 | .shuffle-button.story-mode:hover { 186 | transform: scale(1.2); 187 | } 188 | 189 | .reason-counter { 190 | font-size: 0.9rem; 191 | color: #ff69b4; 192 | margin-top: 1rem; 193 | opacity: 0.7; 194 | } -------------------------------------------------------------------------------- /cause.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |
31 |
`;
44 |
45 | card.appendChild(text);
46 | card.appendChild(gifOverlay);
47 |
48 | gsap.from(card, {
49 | opacity: 0,
50 | y: 50,
51 | duration: 0.5,
52 | ease: "back.out"
53 | });
54 |
55 | return card;
56 | }
57 |
58 | // Display new reason
59 | function displayNewReason() {
60 | if (isTransitioning) return;
61 | isTransitioning = true;
62 |
63 | if (currentReasonIndex < reasons.length) {
64 | const card = createReasonCard(reasons[currentReasonIndex]);
65 | reasonsContainer.appendChild(card);
66 |
67 | // Update counter
68 | reasonCounter.textContent = `Reason ${currentReasonIndex + 1} of ${reasons.length}`;
69 |
70 | currentReasonIndex++;
71 |
72 | // Check if we should transform the button
73 | if (currentReasonIndex === reasons.length) {
74 | gsap.to(shuffleButton, {
75 | scale: 1.1,
76 | duration: 0.5,
77 | ease: "elastic.out",
78 | onComplete: () => {
79 | shuffleButton.textContent = "Enter Our Storylane 💫";
80 | shuffleButton.classList.add('story-mode');
81 | shuffleButton.addEventListener('click', () => {
82 | gsap.to('body', {
83 | opacity: 0,
84 | duration: 1,
85 | onComplete: () => {
86 | window.location.href = 'last.html'; // Replace with the actual URL of the next page
87 | }
88 | });
89 | });
90 | }
91 | });
92 | }
93 |
94 | // Create floating elements
95 | createFloatingElement();
96 |
97 | setTimeout(() => {
98 | isTransitioning = false;
99 | }, 500);
100 | } else {
101 | // Handle navigation to new page or section
102 | window.location.href = "#storylane";
103 | // Or trigger your next page functionality
104 | }
105 | }
106 |
107 | // Initialize button click
108 | shuffleButton.addEventListener('click', () => {
109 | gsap.to(shuffleButton, {
110 | scale: 0.9,
111 | duration: 0.1,
112 | yoyo: true,
113 | repeat: 1
114 | });
115 | displayNewReason();
116 | });
117 |
118 | // Floating elements function (same as before)
119 | function createFloatingElement() {
120 | const elements = ['🌸', '✨', '💖', '🦋', '⭐'];
121 | const element = document.createElement('div');
122 | element.className = 'floating';
123 | element.textContent = elements[Math.floor(Math.random() * elements.length)];
124 | element.style.left = Math.random() * window.innerWidth + 'px';
125 | element.style.top = Math.random() * window.innerHeight + 'px';
126 | element.style.fontSize = (Math.random() * 20 + 10) + 'px';
127 | document.body.appendChild(element);
128 |
129 | gsap.to(element, {
130 | y: -500,
131 | duration: Math.random() * 10 + 10,
132 | opacity: 0,
133 | onComplete: () => element.remove()
134 | });
135 | }
136 |
137 | // Custom cursor (same as before)
138 | const cursor = document.querySelector('.custom-cursor');
139 | document.addEventListener('mousemove', (e) => {
140 | gsap.to(cursor, {
141 | x: e.clientX - 15,
142 | y: e.clientY - 15,
143 | duration: 0.2
144 | });
145 | });
146 |
147 | // Create initial floating elements
148 | setInterval(createFloatingElement, 2000);
--------------------------------------------------------------------------------
/d1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shubhajiit/BestFriend_/5bb50dd0033eb941de3bdef7bdc04ad878930293/d1.jpg
--------------------------------------------------------------------------------
/d2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shubhajiit/BestFriend_/5bb50dd0033eb941de3bdef7bdc04ad878930293/d2.jpg
--------------------------------------------------------------------------------
/d3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shubhajiit/BestFriend_/5bb50dd0033eb941de3bdef7bdc04ad878930293/d3.jpg
--------------------------------------------------------------------------------
/d4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shubhajiit/BestFriend_/5bb50dd0033eb941de3bdef7bdc04ad878930293/d4.jpg
--------------------------------------------------------------------------------
/gif1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shubhajiit/BestFriend_/5bb50dd0033eb941de3bdef7bdc04ad878930293/gif1.gif
--------------------------------------------------------------------------------
/gif2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Shubhajiit/BestFriend_/5bb50dd0033eb941de3bdef7bdc04ad878930293/gif2.gif
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Every moment spent with you has been magical. Let's cherish these precious memories forever...
323 |
328 |
333 |
338 |
343 |