flpolprojects commited on
Commit
4593d72
·
verified ·
1 Parent(s): 10c090d

Update scripts.js

Browse files
Files changed (1) hide show
  1. scripts.js +100 -11
scripts.js CHANGED
@@ -1,20 +1,109 @@
1
- // Плавная прокрутка к разделу "Контакты"
2
  function scrollToContact() {
3
  document.querySelector('#contact').scrollIntoView({ behavior: 'smooth' });
4
  }
5
 
6
- // Микроанимация для кнопки при загрузке страницы
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  document.addEventListener('DOMContentLoaded', () => {
8
- const button = document.querySelector('.cta-button');
9
- button.style.transform = 'scale(0.95)';
10
- setTimeout(() => {
11
- button.style.transition = 'transform 0.5s ease';
12
- button.style.transform = 'scale(1)';
13
- }, 100);
 
 
 
 
14
  });
15
 
16
- // Предотвращение отправки формы (демо)
17
- document.querySelector('form').addEventListener('submit', (e) => {
 
 
 
 
 
 
 
 
 
 
18
  e.preventDefault();
19
- alert('Спасибо за заявку! Мы свяжемся с вами скоро.');
 
 
 
 
 
 
 
 
20
  });
 
1
+ // Плавная прокрутка
2
  function scrollToContact() {
3
  document.querySelector('#contact').scrollIntoView({ behavior: 'smooth' });
4
  }
5
 
6
+ // Кастомный курсор
7
+ const cursor = document.querySelector('.cursor');
8
+ const follower = document.querySelector('.cursor-follower');
9
+ document.addEventListener('mousemove', (e) => {
10
+ cursor.style.left = `${e.clientX}px`;
11
+ cursor.style.top = `${e.clientY}px`;
12
+ follower.style.left = `${e.clientX - 15}px`;
13
+ follower.style.top = `${e.clientY - 15}px`;
14
+ });
15
+
16
+ // WebGL фон
17
+ const scene = new THREE.Scene();
18
+ const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
19
+ const renderer = new THREE.WebGLRenderer({ alpha: true });
20
+ renderer.setSize(window.innerWidth, window.innerHeight);
21
+ document.getElementById('webgl-bg').appendChild(renderer.domElement);
22
+
23
+ const geometry = new THREE.SphereGeometry(5, 32, 32);
24
+ const material = new THREE.MeshBasicMaterial({
25
+ color: 0xe74c3c,
26
+ wireframe: true
27
+ });
28
+ const sphere = new THREE.Mesh(geometry, material);
29
+ scene.add(sphere);
30
+
31
+ camera.position.z = 15;
32
+
33
+ function animateWebGL() {
34
+ requestAnimationFrame(animateWebGL);
35
+ sphere.rotation.x += 0.01;
36
+ sphere.rotation.y += 0.01;
37
+ renderer.render(scene, camera);
38
+ }
39
+ animateWebGL();
40
+
41
+ // Параллакс-эффект
42
+ document.addEventListener('mousemove', (e) => {
43
+ const parallaxElements = document.querySelectorAll('[data-parallax]');
44
+ parallaxElements.forEach(el => {
45
+ const speed = 0.05;
46
+ const x = (window.innerWidth - e.pageX * speed) / 100;
47
+ const y = (window.innerHeight - e.pageY * speed) / 100;
48
+ el.style.transform = `translate(${x}px, ${y}px)`;
49
+ });
50
+ });
51
+
52
+ // Голосовое управление
53
+ const voiceBtn = document.getElementById('voice-btn');
54
+ if ('webkitSpeechRecognition' in window) {
55
+ const recognition = new webkitSpeechRecognition();
56
+ recognition.lang = 'ru-RU';
57
+ recognition.onresult = (event) => {
58
+ const transcript = event.results[0][0].transcript;
59
+ if (transcript.toLowerCase().includes('заказать')) {
60
+ scrollToContact();
61
+ alert('Голосовой заказ активирован! Заполните форму ниже.');
62
+ }
63
+ };
64
+ voiceBtn.addEventListener('click', () => {
65
+ recognition.start();
66
+ voiceBtn.textContent = 'Слушаю...';
67
+ setTimeout(() => voiceBtn.textContent = '🎙️ Голосовой заказ', 3000);
68
+ });
69
+ } else {
70
+ voiceBtn.style.display = 'none';
71
+ }
72
+
73
+ // Анимация загрузки
74
  document.addEventListener('DOMContentLoaded', () => {
75
+ const elements = [document.querySelector('.cta-button'), ...document.querySelectorAll('.service-card')];
76
+ elements.forEach(el => {
77
+ el.style.opacity = '0';
78
+ el.style.transform = 'translateY(20px)';
79
+ setTimeout(() => {
80
+ el.style.transition = 'all 0.8s ease';
81
+ el.style.opacity = '1';
82
+ el.style.transform = 'translateY(0)';
83
+ }, 300);
84
+ });
85
  });
86
 
87
+ // Отслеживание груза (демо)
88
+ function trackCargo() {
89
+ const trackNum = document.getElementById('track-input').value;
90
+ if (trackNum) {
91
+ alert(`Груз ${trackNum}: В пути (этап 2/4). Ожидаемое время прибытия: 28 февраля 2025.`);
92
+ } else {
93
+ alert('Введите номер груза!');
94
+ }
95
+ }
96
+
97
+ // Обработка формы
98
+ document.getElementById('contact-form').addEventListener('submit', (e) => {
99
  e.preventDefault();
100
+ alert('Заявка успешно отправлена! Мы свяжемся с вами в течение 24 часов.');
101
+ });
102
+
103
+ // Vanilla Tilt для карточек
104
+ VanillaTilt.init(document.querySelectorAll('.service-card'), {
105
+ max: 20,
106
+ speed: 300,
107
+ glare: true,
108
+ 'max-glare': 0.3
109
  });