fab click is still not working - Follow Up Deployment
Browse files- index.html +58 -3
index.html
CHANGED
|
@@ -74,10 +74,38 @@
|
|
| 74 |
|
| 75 |
.fab-btn:active {
|
| 76 |
transform: scale(0.95);
|
|
|
|
| 77 |
}
|
| 78 |
|
| 79 |
.fab-btn i {
|
| 80 |
-
transition: transform 0.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 81 |
}
|
| 82 |
|
| 83 |
.fab-menu {
|
|
@@ -1195,19 +1223,46 @@
|
|
| 1195 |
|
| 1196 |
fabBtn.addEventListener('click', function(e) {
|
| 1197 |
e.stopPropagation();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1198 |
fabOpen = !fabOpen;
|
| 1199 |
|
| 1200 |
if (fabOpen) {
|
| 1201 |
fabMenu.classList.add('active');
|
| 1202 |
fabIcon.classList.replace('fa-plus', 'fa-times');
|
| 1203 |
-
fabBtn.
|
| 1204 |
fabBtn.style.boxShadow = '0 8px 20px rgba(33, 150, 243, 0.5)';
|
| 1205 |
} else {
|
| 1206 |
fabMenu.classList.remove('active');
|
| 1207 |
fabIcon.classList.replace('fa-times', 'fa-plus');
|
| 1208 |
-
fabBtn.
|
| 1209 |
fabBtn.style.boxShadow = '';
|
| 1210 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1211 |
});
|
| 1212 |
|
| 1213 |
// Close FAB menu when clicking outside
|
|
|
|
| 74 |
|
| 75 |
.fab-btn:active {
|
| 76 |
transform: scale(0.95);
|
| 77 |
+
transition: transform 0.15s ease-out;
|
| 78 |
}
|
| 79 |
|
| 80 |
.fab-btn i {
|
| 81 |
+
transition: transform 0.2s ease-in-out;
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
.fab-btn:hover {
|
| 85 |
+
transform: scale(1.05);
|
| 86 |
+
filter: brightness(1.1);
|
| 87 |
+
box-shadow: 0 8px 20px rgba(33, 150, 243, 0.4);
|
| 88 |
+
}
|
| 89 |
+
|
| 90 |
+
.fab-active i {
|
| 91 |
+
transform: rotate(45deg);
|
| 92 |
+
}
|
| 93 |
+
|
| 94 |
+
/* Ripple effect */
|
| 95 |
+
.fab-ripple {
|
| 96 |
+
position: absolute;
|
| 97 |
+
border-radius: 50%;
|
| 98 |
+
background-color: rgba(255, 255, 255, 0.3);
|
| 99 |
+
transform: scale(0);
|
| 100 |
+
animation: ripple 0.3s ease-out;
|
| 101 |
+
pointer-events: none;
|
| 102 |
+
}
|
| 103 |
+
|
| 104 |
+
@keyframes ripple {
|
| 105 |
+
to {
|
| 106 |
+
transform: scale(4);
|
| 107 |
+
opacity: 0;
|
| 108 |
+
}
|
| 109 |
}
|
| 110 |
|
| 111 |
.fab-menu {
|
|
|
|
| 1223 |
|
| 1224 |
fabBtn.addEventListener('click', function(e) {
|
| 1225 |
e.stopPropagation();
|
| 1226 |
+
|
| 1227 |
+
// Create ripple effect
|
| 1228 |
+
const ripple = document.createElement('span');
|
| 1229 |
+
ripple.className = 'fab-ripple';
|
| 1230 |
+
const rect = this.getBoundingClientRect();
|
| 1231 |
+
const size = Math.max(rect.width, rect.height);
|
| 1232 |
+
ripple.style.width = ripple.style.height = size + 'px';
|
| 1233 |
+
ripple.style.left = e.clientX - rect.left - size/2 + 'px';
|
| 1234 |
+
ripple.style.top = e.clientY - rect.top - size/2 + 'px';
|
| 1235 |
+
this.appendChild(ripple);
|
| 1236 |
+
|
| 1237 |
+
// Remove ripple after animation
|
| 1238 |
+
setTimeout(() => {
|
| 1239 |
+
ripple.remove();
|
| 1240 |
+
}, 300);
|
| 1241 |
+
|
| 1242 |
+
// Scale animation
|
| 1243 |
+
this.style.transform = 'scale(0.95)';
|
| 1244 |
+
setTimeout(() => {
|
| 1245 |
+
this.style.transform = 'scale(1)';
|
| 1246 |
+
this.style.transition = 'transform 0.1s ease-in';
|
| 1247 |
+
}, 150);
|
| 1248 |
+
|
| 1249 |
fabOpen = !fabOpen;
|
| 1250 |
|
| 1251 |
if (fabOpen) {
|
| 1252 |
fabMenu.classList.add('active');
|
| 1253 |
fabIcon.classList.replace('fa-plus', 'fa-times');
|
| 1254 |
+
fabBtn.classList.add('fab-active');
|
| 1255 |
fabBtn.style.boxShadow = '0 8px 20px rgba(33, 150, 243, 0.5)';
|
| 1256 |
} else {
|
| 1257 |
fabMenu.classList.remove('active');
|
| 1258 |
fabIcon.classList.replace('fa-times', 'fa-plus');
|
| 1259 |
+
fabBtn.classList.remove('fab-active');
|
| 1260 |
fabBtn.style.boxShadow = '';
|
| 1261 |
}
|
| 1262 |
+
|
| 1263 |
+
setTimeout(() => {
|
| 1264 |
+
this.style.transition = '';
|
| 1265 |
+
}, 250);
|
| 1266 |
});
|
| 1267 |
|
| 1268 |
// Close FAB menu when clicking outside
|