sm08th commited on
Commit
609a4a3
·
verified ·
1 Parent(s): e37e841

Ajoutes un header avec un nav bar titre nav bar user , s'affiche venant do côté gauche de la page le nav bar de haut vers le bas et le user da la droite vers la gauche - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +6 -4
  2. index.html +454 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Bootle
3
- emoji: 😻
4
- colorFrom: indigo
5
  colorTo: green
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: bootle
3
+ emoji: 🐳
4
+ colorFrom: pink
5
  colorTo: green
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,454 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="fr">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Présentation Cinématique de Bouteille 3D</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://cdn.jsdelivr.net/npm/three@0.132.2/build/three.min.js"></script>
9
+ <script src="https://cdn.jsdelivr.net/npm/three@0.132.2/examples/js/loaders/GLTFLoader.js"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.11.4/dist/gsap.min.js"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/gsap@3.11.4/dist/ScrollTrigger.min.js"></script>
12
+ <script src="https://cdn.jsdelivr.net/npm/aos@2.3.4/dist/aos.js"></script>
13
+ <link href="https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&family=Bebas+Neue&display=swap" rel="stylesheet">
14
+ <style>
15
+ * {
16
+ margin: 0;
17
+ padding: 0;
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ body {
22
+ font-family: 'Orbitron', sans-serif;
23
+ background-color: #000;
24
+ color: white;
25
+ overflow-x: hidden;
26
+ }
27
+
28
+ #canvas-container {
29
+ position: fixed;
30
+ top: 0;
31
+ left: 0;
32
+ width: 100%;
33
+ height: 100vh;
34
+ z-index: 1;
35
+ pointer-events: none;
36
+ }
37
+
38
+ .scene {
39
+ min-height: 100vh;
40
+ width: 100%;
41
+ position: relative;
42
+ z-index: 2;
43
+ display: flex;
44
+ flex-direction: column;
45
+ justify-content: center;
46
+ padding: 0 10%;
47
+ opacity: 0;
48
+ transition: opacity 0.5s;
49
+ }
50
+
51
+ .scene.active {
52
+ opacity: 1;
53
+ }
54
+
55
+ h1 {
56
+ font-family: 'Bebas Neue', sans-serif;
57
+ font-size: 5rem;
58
+ margin-bottom: 2rem;
59
+ text-transform: uppercase;
60
+ letter-spacing: 3px;
61
+ }
62
+
63
+ p {
64
+ font-size: 1.2rem;
65
+ max-width: 600px;
66
+ line-height: 1.6;
67
+ margin-bottom: 2rem;
68
+ }
69
+
70
+ .info-card {
71
+ background: rgba(17, 17, 17, 0.8);
72
+ border-radius: 10px;
73
+ padding: 2rem;
74
+ max-width: 400px;
75
+ backdrop-filter: blur(10px);
76
+ border: 1px solid rgba(255, 255, 255, 0.1);
77
+ transform: translateY(50px);
78
+ opacity: 0;
79
+ transition: all 0.5s;
80
+ }
81
+
82
+ .info-card.visible {
83
+ transform: translateY(0);
84
+ opacity: 1;
85
+ }
86
+
87
+ .cta-button {
88
+ background: linear-gradient(45deg, #ff3366, #ba2650);
89
+ color: white;
90
+ border: none;
91
+ padding: 15px 40px;
92
+ font-size: 1.2rem;
93
+ border-radius: 30px;
94
+ cursor: pointer;
95
+ font-family: 'Orbitron', sans-serif;
96
+ text-transform: uppercase;
97
+ letter-spacing: 2px;
98
+ transition: all 0.3s;
99
+ margin-top: 2rem;
100
+ }
101
+
102
+ .cta-button:hover {
103
+ transform: translateY(-3px);
104
+ box-shadow: 0 10px 20px rgba(255, 51, 102, 0.3);
105
+ }
106
+
107
+ /* Header Styles */
108
+ header {
109
+ position: fixed;
110
+ top: 0;
111
+ left: 0;
112
+ width: 100%;
113
+ display: flex;
114
+ justify-content: space-between;
115
+ padding: 1.5rem 2rem;
116
+ z-index: 100;
117
+ }
118
+
119
+ .nav-toggle {
120
+ display: none;
121
+ flex-direction: column;
122
+ justify-content: space-between;
123
+ width: 30px;
124
+ height: 21px;
125
+ cursor: pointer;
126
+ z-index: 101;
127
+ }
128
+
129
+ .nav-toggle span {
130
+ display: block;
131
+ height: 3px;
132
+ width: 100%;
133
+ background: white;
134
+ transition: all 0.3s;
135
+ }
136
+
137
+ .main-nav {
138
+ transform: translateX(-100%);
139
+ position: fixed;
140
+ top: 0;
141
+ left: 0;
142
+ width: 300px;
143
+ height: 100vh;
144
+ background: rgba(0, 0, 0, 0.9);
145
+ padding: 6rem 2rem;
146
+ transition: transform 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0);
147
+ z-index: 99;
148
+ }
149
+
150
+ .main-nav.active {
151
+ transform: translateX(0);
152
+ }
153
+
154
+ .nav-title {
155
+ font-family: 'Bebas Neue', sans-serif;
156
+ font-size: 2rem;
157
+ margin-bottom: 2rem;
158
+ color: white;
159
+ }
160
+
161
+ .main-nav ul {
162
+ list-style: none;
163
+ }
164
+
165
+ .main-nav li {
166
+ margin-bottom: 1.5rem;
167
+ }
168
+
169
+ .main-nav a {
170
+ color: white;
171
+ text-decoration: none;
172
+ font-size: 1.2rem;
173
+ transition: color 0.3s;
174
+ }
175
+
176
+ .main-nav a:hover {
177
+ color: #ff3366;
178
+ }
179
+
180
+ .user-nav {
181
+ transform: translateX(100%);
182
+ position: fixed;
183
+ top: 0;
184
+ right: 0;
185
+ width: 200px;
186
+ height: 100vh;
187
+ background: rgba(0, 0, 0, 0.9);
188
+ padding: 6rem 2rem;
189
+ transition: transform 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0);
190
+ z-index: 99;
191
+ }
192
+
193
+ .user-nav.active {
194
+ transform: translateX(0);
195
+ }
196
+
197
+ .user-nav a {
198
+ display: block;
199
+ color: white;
200
+ text-decoration: none;
201
+ font-size: 1.2rem;
202
+ margin-bottom: 1.5rem;
203
+ transition: color 0.3s;
204
+ }
205
+
206
+ .user-nav a:hover {
207
+ color: #ff3366;
208
+ }
209
+
210
+ @media (max-width: 768px) {
211
+ h1 {
212
+ font-size: 3rem;
213
+ }
214
+
215
+ p {
216
+ font-size: 1rem;
217
+ }
218
+
219
+ .info-card {
220
+ padding: 1.5rem;
221
+ }
222
+ }
223
+ </style>
224
+ </head>
225
+ <body>
226
+ <header>
227
+ <div class="nav-toggle">
228
+ <span></span>
229
+ <span></span>
230
+ <span></span>
231
+ </div>
232
+ <nav class="main-nav">
233
+ <h2 class="nav-title">Bouteille 3D</h2>
234
+ <ul>
235
+ <li><a href="#">Accueil</a></li>
236
+ <li><a href="#">Fonctionnalités</a></li>
237
+ <li><a href="#">Technologie</a></li>
238
+ <li><a href="#">Contact</a></li>
239
+ </ul>
240
+ </nav>
241
+ <div class="user-nav">
242
+ <a href="#">Connexion</a>
243
+ <a href="#">Inscription</a>
244
+ </div>
245
+ </header>
246
+ <div id="canvas-container"></div>
247
+
248
+ <section class="scene" id="scene1">
249
+ <div class="info-card">
250
+ <h1>L'Élégance Redéfinie</h1>
251
+ <p>Découvrez notre nouvelle bouteille révolutionnaire, conçue pour capturer la lumière et l'attention.</p>
252
+ </div>
253
+ </section>
254
+
255
+ <section class="scene" id="scene2">
256
+ <div class="info-card">
257
+ <h1>Design Ergonomique</h1>
258
+ <p>Une forme étudiée pour un confort inégalé, avec des courbes qui épousent parfaitement votre main.</p>
259
+ </div>
260
+ </section>
261
+
262
+ <section class="scene" id="scene3">
263
+ <div class="info-card">
264
+ <h1>Précision Technique</h1>
265
+ <p>Chaque détail est pensé pour optimiser l'expérience utilisateur, de l'ouverture à la fermeture.</p>
266
+ </div>
267
+ </section>
268
+
269
+ <section class="scene" id="scene4">
270
+ <div class="info-card">
271
+ <h1>Système d'Ouverture</h1>
272
+ <p>Notre mécanisme breveté offre une ouverture fluide et sécurisée en un seul geste.</p>
273
+ </div>
274
+ </section>
275
+
276
+ <section class="scene" id="scene5">
277
+ <div class="info-card">
278
+ <h1>Technologie Intérieure</h1>
279
+ <p>Un système de conservation révolutionnaire maintient la qualité du contenu comme jamais auparavant.</p>
280
+ </div>
281
+ </section>
282
+
283
+ <section class="scene" id="scene6">
284
+ <div class="info-card">
285
+ <h1>Disponible Maintenant</h1>
286
+ <p>Commandez dès aujourd'hui et faites l'expérience de l'innovation dans votre quotidien.</p>
287
+ <button class="cta-button">Découvrir</button>
288
+ </div>
289
+ </section>
290
+
291
+ <script>
292
+ // Initialisation Three.js
293
+ let scene, camera, renderer, bottle, mixer;
294
+
295
+ function initThreeJS() {
296
+ // Création de la scène
297
+ scene = new THREE.Scene();
298
+ scene.background = new THREE.Color(0x000000);
299
+
300
+ // Configuration de la caméra
301
+ camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
302
+ camera.position.z = 5;
303
+
304
+ // Configuration du rendu
305
+ renderer = new THREE.WebGLRenderer({ antialias: true });
306
+ renderer.setSize(window.innerWidth, window.innerHeight);
307
+ renderer.setPixelRatio(window.devicePixelRatio);
308
+ document.getElementById('canvas-container').appendChild(renderer.domElement);
309
+
310
+ // Ajout de lumières
311
+ const ambientLight = new THREE.AmbientLight(0x404040);
312
+ scene.add(ambientLight);
313
+
314
+ const directionalLight = new THREE.DirectionalLight(0xffffff, 0.5);
315
+ directionalLight.position.set(1, 1, 1);
316
+ scene.add(directionalLight);
317
+
318
+ const pointLight = new THREE.PointLight(0xff3366, 1, 10);
319
+ pointLight.position.set(2, 2, 2);
320
+ scene.add(pointLight);
321
+
322
+ // Création d'une bouteille temporaire (en attendant le modèle GLB)
323
+ createTemporaryBottle();
324
+
325
+ // Gestion du redimensionnement
326
+ window.addEventListener('resize', onWindowResize);
327
+ }
328
+
329
+ function createTemporaryBottle() {
330
+ // Géométrie temporaire pour la démo
331
+ const geometry = new THREE.CylinderGeometry(0.5, 0.3, 1.5, 32);
332
+ const material = new THREE.MeshPhongMaterial({
333
+ color: 0x00aaff,
334
+ transparent: true,
335
+ opacity: 0.9,
336
+ shininess: 100
337
+ });
338
+
339
+ bottle = new THREE.Mesh(geometry, material);
340
+ scene.add(bottle);
341
+
342
+ // Animation du bouchon (sera remplacé par le modèle GLB)
343
+ const capGeometry = new THREE.CylinderGeometry(0.2, 0.2, 0.2, 32);
344
+ const capMaterial = new THREE.MeshPhongMaterial({ color: 0xffffff });
345
+ const cap = new THREE.Mesh(capGeometry, capMaterial);
346
+ cap.position.y = 0.85;
347
+ bottle.add(cap);
348
+ }
349
+
350
+ function onWindowResize() {
351
+ camera.aspect = window.innerWidth / window.innerHeight;
352
+ camera.updateProjectionMatrix();
353
+ renderer.setSize(window.innerWidth, window.innerHeight);
354
+ }
355
+
356
+ // Animation
357
+ function animate() {
358
+ requestAnimationFrame(animate);
359
+
360
+ if (bottle) {
361
+ bottle.rotation.y += 0.005;
362
+ }
363
+
364
+ renderer.render(scene, camera);
365
+ }
366
+
367
+ // Initialisation des animations GSAP
368
+ function initAnimations() {
369
+ // Configuration des scènes
370
+ const scenes = document.querySelectorAll('.scene');
371
+
372
+ scenes.forEach((scene, index) => {
373
+ ScrollTrigger.create({
374
+ trigger: scene,
375
+ start: "top center",
376
+ end: "bottom center",
377
+ onEnter: () => {
378
+ scenes.forEach(s => s.classList.remove('active'));
379
+ scene.classList.add('active');
380
+
381
+ // Animation spécifique à chaque scène
382
+ switch(index) {
383
+ case 0: // Apparition
384
+ gsap.to(bottle.material, { opacity: 1, duration: 1 });
385
+ gsap.to(camera.position, { z: 5, duration: 1 });
386
+ break;
387
+ case 1: // Rotation
388
+ gsap.to(bottle.rotation, { y: Math.PI * 2, duration: 5 });
389
+ break;
390
+ case 2: // Zoom avant
391
+ gsap.to(camera.position, { z: 2, duration: 1 });
392
+ break;
393
+ case 3: // Ouverture du bouchon
394
+ if (bottle.children.length > 0) {
395
+ gsap.to(bottle.children[0].position, { y: 1.2, duration: 0.5 });
396
+ }
397
+ break;
398
+ case 4: // Vue intérieure
399
+ gsap.to(bottle.material, { opacity: 0.5, duration: 0.5 });
400
+ break;
401
+ case 5: // Zoom arrière
402
+ gsap.to(camera.position, { z: 5, duration: 1 });
403
+ gsap.to(bottle.material, { opacity: 1, duration: 1 });
404
+ if (bottle.children.length > 0) {
405
+ gsap.to(bottle.children[0].position, { y: 0.85, duration: 0.5 });
406
+ }
407
+ break;
408
+ }
409
+ },
410
+ onEnterBack: () => {
411
+ scenes.forEach(s => s.classList.remove('active'));
412
+ scene.classList.add('active');
413
+ }
414
+ });
415
+ });
416
+
417
+ // Animation des cartes d'information
418
+ gsap.utils.toArray('.info-card').forEach((card, i) => {
419
+ ScrollTrigger.create({
420
+ trigger: card,
421
+ start: "top 80%",
422
+ onEnter: () => card.classList.add('visible'),
423
+ onLeaveBack: () => card.classList.remove('visible')
424
+ });
425
+ });
426
+ }
427
+
428
+ // Initialisation AOS
429
+ function initAOS() {
430
+ AOS.init({
431
+ duration: 800,
432
+ easing: 'ease-in-out',
433
+ once: false,
434
+ mirror: true
435
+ });
436
+ }
437
+
438
+ // Gestion du header
439
+ document.querySelector('.nav-toggle').addEventListener('click', function() {
440
+ this.classList.toggle('active');
441
+ document.querySelector('.main-nav').classList.toggle('active');
442
+ document.querySelector('.user-nav').classList.toggle('active');
443
+ });
444
+
445
+ // Initialisation au chargement
446
+ window.addEventListener('DOMContentLoaded', () => {
447
+ initThreeJS();
448
+ animate();
449
+ initAnimations();
450
+ initAOS();
451
+ });
452
+ </script>
453
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=sm08th/bootle" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
454
+ </html>