Files
Gyannetra_website/js/tech-marquee.js
ectasy663 29165abbaa Complete website optimization: Color scheme standardization and hero page enhancement
- STANDARDIZED COLOR SCHEMES: Unified all service pages to use consistent purple theme (#6d28d9)
  - Removed theme-specific body classes from automation-flows.html and agentic-ai.html
  - Removed inline CSS color overrides from machine-learning.html, generative-ai.html, and data-analysis.html
  - Updated 15+ instances of hardcoded border colors to use rgba(var(--primary-color-rgb), 0.3)
  - Updated 5+ hover effects to use rgba(var(--primary-color-rgb), 0.4) for consistent glow colors
  - All service pages now maintain visual consistency with the main website

- ENHANCED HERO PAGE: Improved data node scattering for better organic distribution
  - Repositioned core service nodes (ML, AI, Analytics, Automation) for natural scatter pattern
  - Enhanced industry nodes positioning with organic right-side distribution
  - Improved strategic nodes placement across right quadrant for better visual balance
  - Added varied animation delays and floating patterns for different node groups
  - Implemented micro-positioning adjustments for more natural appearance
  - Created size variations and rotation effects for enhanced organic feel

- NEW FEATURES ADDED:
  - Enhanced CSS animations with varied floating patterns
  - Improved node interaction effects with staggered hover animations
  - Better responsive design for mobile devices
  - New documentation files for color standardization completion

- TECHNICAL IMPROVEMENTS:
  - Updated hero-animation.css with enhanced organic scatter positioning
  - Maintained all existing functionality while improving visual aesthetics
  - Ensured cross-browser compatibility and mobile responsiveness
2025-05-26 17:40:17 +05:30

68 lines
3.2 KiB
JavaScript

// Tech Marquee Animation Enhancement
document.addEventListener('DOMContentLoaded', function() {
const techMarqueeContents = document.querySelectorAll('.tech-marquee-content');
const techItems = document.querySelectorAll('.tech-marquee-item');
// Adjust animation speed for each marquee
techMarqueeContents.forEach((marquee, index) => {
const isReversed = marquee.classList.contains('tech-marquee-content-reversed');
const marqueeItems = marquee.querySelectorAll('.tech-marquee-item');
const itemCount = marqueeItems.length / 2; // Account for duplicated items
// Set slightly different speeds for each marquee
const baseSpeed = isReversed ? 65 : 60;
const animationDuration = Math.max(30, Math.min(70, itemCount * 5)); // Between 30s and 70s
marquee.style.animationDuration = `${baseSpeed + (index * 10)}s`;
});
// Add 3D tilt effect on mouse move for each tech icon
techItems.forEach(item => {
const iconContainer = item.querySelector('.tech-icon-container');
if (iconContainer) {
item.addEventListener('mousemove', function(e) {
const rect = iconContainer.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
const centerX = rect.width / 2;
const centerY = rect.height / 2;
const tiltX = (centerX - x) / 10;
const tiltY = (y - centerY) / 10;
iconContainer.style.transform = `perspective(500px) rotateX(${tiltY}deg) rotateY(${-tiltX}deg) scale3d(1.05, 1.05, 1.05)`;
});
item.addEventListener('mouseleave', function() {
iconContainer.style.transform = '';
});
}
});
// Removed pulse effects functionality - displaying raw icons without glow effects
// Add a parallax effect to create depth between the two marquees
window.addEventListener('mousemove', function(e) {
const containers = document.querySelectorAll('.tech-marquee-container');
containers.forEach((container, index) => {
const isReversed = container.classList.contains('tech-marquee-reversed');
const depth = isReversed ? 25 : 15; // Reduced sensitivity due to full width
const moveX = (e.clientX - window.innerWidth / 2) / depth;
const moveY = (e.clientY - window.innerHeight / 2) / depth;
// Limit the movement for a subtler effect with the full-width design
const maxMove = 10;
const limitedMoveX = Math.max(-maxMove, Math.min(maxMove, moveX));
const limitedMoveY = Math.max(-maxMove, Math.min(maxMove, moveY));
container.style.transform = `translate(${limitedMoveX}px, ${limitedMoveY}px)`;
});
});
// Add entrance animation for each tech item
const allMarquees = document.querySelectorAll('.tech-marquee-container');
allMarquees.forEach((marquee, marqueeIndex) => {
marquee.style.animationDelay = `${marqueeIndex * 0.2}s`;
});
});