rowild commited on
Commit
33e7962
·
verified ·
1 Parent(s): 4f6d7fd

Design a website for a film maker. The first page contains an image as large as the screen itself, showing the film maker himself in black and white, in front of a dark stone wall that is lit from the side by fotography equipment. The name of the film maker, Siegfried Ortner, is placed nicely centered in the lower third of the image, below that "photographer, film maker". The solo only contains the letters s and o and are separated by a slash; but the o is one line lower than the s and further to the right; the logo is framed by a thin-lined square which turns into a circle, when the mouse hovers. - The navigation is on the right side. It contains 5 or 6 points (please choose the most common ones), is right-aligned, but the texts are initially hidden behind thin-lined circles; the circles are placed in the vertical center of the screen and are fixed; a thin line connects the circles; their distance to each other is about 3 lines in a regular paragraph, so not too close. When such a menu circle is hovered, the actual menu text slides out from the right, maybe with a elegant GSAP animation, character by character; when the mouse leaves the button, the text disappears. – The following sections are about the person, his videos, reviews, contact and the usual footer. The color scheme is stone to zync, so gray, but no colors. – THe other pages (the one you chose for the menu items) must fit in that scheme. ––– The most important thing is the menu: it is fixed, has circles that are connected via lines, and has sliding or fading text ones a button is hovered!!!

Browse files
Files changed (6) hide show
  1. README.md +8 -5
  2. components/footer.js +86 -0
  3. components/navbar.js +164 -0
  4. index.html +157 -19
  5. script.js +29 -0
  6. style.css +14 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Visionary Frames By Siegfried Ortner
3
- emoji: 📚
4
- colorFrom: gray
5
- colorTo: indigo
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: Visionary Frames by Siegfried Ortner 🎬
3
+ colorFrom: blue
4
+ colorTo: green
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://huggingface.co/deepsite).
components/footer.js ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomFooter extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ footer {
7
+ background-color: #09090b;
8
+ padding: 3rem 2rem;
9
+ text-align: center;
10
+ }
11
+
12
+ .footer-content {
13
+ max-width: 1200px;
14
+ margin: 0 auto;
15
+ }
16
+
17
+ .footer-links {
18
+ display: flex;
19
+ justify-content: center;
20
+ gap: 2rem;
21
+ margin-bottom: 2rem;
22
+ }
23
+
24
+ .footer-link {
25
+ color: #a1a1aa;
26
+ text-decoration: none;
27
+ transition: color 0.3s ease;
28
+ }
29
+
30
+ .footer-link:hover {
31
+ color: #f4f4f5;
32
+ }
33
+
34
+ .copyright {
35
+ color: #52525b;
36
+ font-size: 0.875rem;
37
+ }
38
+
39
+ .social-icons {
40
+ display: flex;
41
+ justify-content: center;
42
+ gap: 1.5rem;
43
+ margin-bottom: 2rem;
44
+ }
45
+
46
+ .social-icon {
47
+ color: #a1a1aa;
48
+ transition: color 0.3s ease;
49
+ }
50
+
51
+ .social-icon:hover {
52
+ color: #f4f4f5;
53
+ }
54
+ </style>
55
+
56
+ <footer>
57
+ <div class="footer-content">
58
+ <div class="social-icons">
59
+ <a href="#" class="social-icon" aria-label="Instagram">
60
+ <i data-feather="instagram"></i>
61
+ </a>
62
+ <a href="#" class="social-icon" aria-label="Twitter">
63
+ <i data-feather="twitter"></i>
64
+ </a>
65
+ <a href="#" class="social-icon" aria-label="Vimeo">
66
+ <i data-feather="youtube"></i>
67
+ </a>
68
+ <a href="#" class="social-icon" aria-label="LinkedIn">
69
+ <i data-feather="linkedin"></i>
70
+ </a>
71
+ </div>
72
+ <div class="footer-links">
73
+ <a href="#about" class="footer-link">About</a>
74
+ <a href="#work" class="footer-link">Work</a>
75
+ <a href="#reviews" class="footer-link">Reviews</a>
76
+ <a href="#contact" class="footer-link">Contact</a>
77
+ <a href="#" class="footer-link">Privacy</a>
78
+ </div>
79
+ <p class="copyright">© ${new Date().getFullYear()} Siegfried Ortner. All rights reserved.</p>
80
+ </div>
81
+ </footer>
82
+ `;
83
+ }
84
+ }
85
+
86
+ customElements.define('custom-footer', CustomFooter);
components/navbar.js ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class CustomNavbar extends HTMLElement {
2
+ connectedCallback() {
3
+ this.attachShadow({ mode: 'open' });
4
+ this.shadowRoot.innerHTML = `
5
+ <style>
6
+ :host {
7
+ position: fixed;
8
+ top: 50%;
9
+ right: 2rem;
10
+ transform: translateY(-50%);
11
+ z-index: 1000;
12
+ }
13
+
14
+ .nav-container {
15
+ display: flex;
16
+ flex-direction: column;
17
+ align-items: flex-end;
18
+ gap: 2rem;
19
+ }
20
+
21
+ .nav-item {
22
+ display: flex;
23
+ align-items: center;
24
+ position: relative;
25
+ cursor: pointer;
26
+ }
27
+
28
+ .nav-circle {
29
+ width: 16px;
30
+ height: 16px;
31
+ border: 1px solid #f4f4f5;
32
+ border-radius: 50%;
33
+ transition: all 0.3s ease;
34
+ }
35
+
36
+ .nav-item:hover .nav-circle {
37
+ background-color: #f4f4f5;
38
+ transform: scale(1.2);
39
+ }
40
+
41
+ .nav-line {
42
+ position: absolute;
43
+ right: 8px;
44
+ width: 1px;
45
+ height: 2rem;
46
+ background-color: #f4f4f5;
47
+ bottom: -2rem;
48
+ }
49
+
50
+ .nav-text {
51
+ position: absolute;
52
+ right: 24px;
53
+ white-space: nowrap;
54
+ overflow: hidden;
55
+ color: #f4f4f5;
56
+ font-weight: 300;
57
+ opacity: 0;
58
+ transform: translateX(20px);
59
+ transition: all 0.3s ease;
60
+ }
61
+
62
+ .nav-item:hover .nav-text {
63
+ opacity: 1;
64
+ transform: translateX(0);
65
+ }
66
+
67
+ .nav-item:last-child .nav-line {
68
+ display: none;
69
+ }
70
+ </style>
71
+
72
+ <div class="nav-container">
73
+ <div class="nav-item">
74
+ <div class="nav-circle"></div>
75
+ <div class="nav-line"></div>
76
+ <span class="nav-text">About</span>
77
+ </div>
78
+ <div class="nav-item">
79
+ <div class="nav-circle"></div>
80
+ <div class="nav-line"></div>
81
+ <span class="nav-text">Work</span>
82
+ </div>
83
+ <div class="nav-item">
84
+ <div class="nav-circle"></div>
85
+ <div class="nav-line"></div>
86
+ <span class="nav-text">Reviews</span>
87
+ </div>
88
+ <div class="nav-item">
89
+ <div class="nav-circle"></div>
90
+ <div class="nav-line"></div>
91
+ <span class="nav-text">Contact</span>
92
+ </div>
93
+ </div>
94
+ `;
95
+
96
+ // Add GSAP animations for text reveal
97
+ const navItems = this.shadowRoot.querySelectorAll('.nav-item');
98
+ navItems.forEach((item, index) => {
99
+ const text = item.querySelector('.nav-text');
100
+
101
+ item.addEventListener('mouseenter', () => {
102
+ gsap.to(text, {
103
+ opacity: 1,
104
+ x: 0,
105
+ duration: 0.3,
106
+ ease: 'power2.out'
107
+ });
108
+
109
+ // Animate each character
110
+ const chars = text.textContent.split('');
111
+ text.textContent = '';
112
+ chars.forEach((char, i) => {
113
+ const span = document.createElement('span');
114
+ span.textContent = char;
115
+ span.style.display = 'inline-block';
116
+ span.style.opacity = '0';
117
+ span.style.transform = 'translateX(10px)';
118
+ text.appendChild(span);
119
+
120
+ gsap.to(span, {
121
+ opacity: 1,
122
+ x: 0,
123
+ duration: 0.1,
124
+ delay: i * 0.03,
125
+ ease: 'power2.out'
126
+ });
127
+ });
128
+ });
129
+
130
+ item.addEventListener('mouseleave', () => {
131
+ const spans = text.querySelectorAll('span');
132
+ gsap.to(spans, {
133
+ opacity: 0,
134
+ x: 10,
135
+ duration: 0.2,
136
+ ease: 'power2.in',
137
+ onComplete: () => {
138
+ text.textContent = text.querySelector('span') ? text.textContent : text.textContent;
139
+ }
140
+ });
141
+
142
+ gsap.to(text, {
143
+ opacity: 0,
144
+ x: 20,
145
+ duration: 0.3,
146
+ delay: 0.1,
147
+ ease: 'power2.in'
148
+ });
149
+ });
150
+
151
+ // Add click handler to scroll to section
152
+ item.addEventListener('click', () => {
153
+ const sections = ['about', 'work', 'reviews', 'contact'];
154
+ if (index < sections.length) {
155
+ document.getElementById(sections[index]).scrollIntoView({
156
+ behavior: 'smooth'
157
+ });
158
+ }
159
+ });
160
+ });
161
+ }
162
+ }
163
+
164
+ customElements.define('custom-navbar', CustomNavbar);
index.html CHANGED
@@ -1,19 +1,157 @@
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="en" class="scroll-smooth">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Siegfried Ortner | Photographer & Filmmaker</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <link rel="stylesheet" href="style.css">
11
+ <script>
12
+ tailwind.config = {
13
+ theme: {
14
+ extend: {
15
+ colors: {
16
+ stone: {
17
+ 950: '#0c0a09'
18
+ },
19
+ zinc: {
20
+ 50: '#fafafa',
21
+ 100: '#f4f4f5',
22
+ 200: '#e4e4e7',
23
+ 300: '#d4d4d8',
24
+ 400: '#a1a1aa',
25
+ 500: '#71717a',
26
+ 600: '#52525b',
27
+ 700: '#3f3f46',
28
+ 800: '#27272a',
29
+ 900: '#18181b',
30
+ 950: '#09090b'
31
+ }
32
+ }
33
+ }
34
+ }
35
+ }
36
+ </script>
37
+ </head>
38
+ <body class="bg-stone-950 text-zinc-100 font-sans antialiased overflow-x-hidden">
39
+ <!-- Hero Section -->
40
+ <div class="relative h-screen w-full overflow-hidden">
41
+ <div class="absolute inset-0 bg-zinc-900">
42
+ <img src="http://static.photos/monochrome/1200x630/42" alt="Siegfried Ortner" class="w-full h-full object-cover opacity-90">
43
+ </div>
44
+
45
+ <!-- Logo -->
46
+ <div class="absolute top-8 left-8 z-20 group">
47
+ <div class="relative w-16 h-16 border border-zinc-300 p-2 rounded-full group-hover:rounded-full transition-all duration-300">
48
+ <div class="flex flex-col items-start">
49
+ <span class="text-2xl font-bold">s</span>
50
+ <span class="text-2xl font-bold ml-4">/o</span>
51
+ </div>
52
+ </div>
53
+ </div>
54
+
55
+ <!-- Navigation -->
56
+ <custom-navbar></custom-navbar>
57
+
58
+ <!-- Hero Text -->
59
+ <div class="absolute bottom-32 left-0 right-0 text-center z-10">
60
+ <h1 class="text-6xl font-bold tracking-tight mb-2">Siegfried Ortner</h1>
61
+ <p class="text-xl font-light text-zinc-300">photographer, film maker</p>
62
+ </div>
63
+ </div>
64
+
65
+ <!-- Sections -->
66
+ <section id="about" class="py-20 px-6 max-w-5xl mx-auto">
67
+ <h2 class="text-4xl font-bold mb-12 text-center">About</h2>
68
+ <div class="grid md:grid-cols-2 gap-12 items-center">
69
+ <div>
70
+ <p class="text-zinc-300 mb-4 leading-relaxed">Siegfried Ortner is a visionary filmmaker and photographer known for his striking black and white compositions and cinematic storytelling.</p>
71
+ <p class="text-zinc-300 leading-relaxed">With over 15 years of experience in the industry, Siegfried has developed a unique visual language that blends technical precision with artistic expression.</p>
72
+ </div>
73
+ <div class="flex justify-center">
74
+ <img src="http://static.photos/monochrome/640x360/43" alt="Siegfried at work" class="rounded-lg shadow-xl w-full max-w-md">
75
+ </div>
76
+ </div>
77
+ </section>
78
+
79
+ <section id="work" class="py-20 bg-zinc-900 px-6">
80
+ <div class="max-w-5xl mx-auto">
81
+ <h2 class="text-4xl font-bold mb-12 text-center">Selected Work</h2>
82
+ <div class="grid md:grid-cols-2 lg:grid-cols-3 gap-6">
83
+ <!-- Video Thumbnails -->
84
+ <div class="group relative overflow-hidden rounded-lg aspect-video">
85
+ <img src="http://static.photos/monochrome/640x360/44" alt="Film Project 1" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
86
+ <div class="absolute inset-0 bg-black bg-opacity-50 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-center justify-center">
87
+ <span class="text-white text-lg">The Silent City</span>
88
+ </div>
89
+ </div>
90
+ <div class="group relative overflow-hidden rounded-lg aspect-video">
91
+ <img src="http://static.photos/monochrome/640x360/45" alt="Film Project 2" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
92
+ <div class="absolute inset-0 bg-black bg-opacity-50 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-center justify-center">
93
+ <span class="text-white text-lg">Shadows of Time</span>
94
+ </div>
95
+ </div>
96
+ <div class="group relative overflow-hidden rounded-lg aspect-video">
97
+ <img src="http://static.photos/monochrome/640x360/46" alt="Film Project 3" class="w-full h-full object-cover group-hover:scale-105 transition-transform duration-500">
98
+ <div class="absolute inset-0 bg-black bg-opacity-50 opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex items-center justify-center">
99
+ <span class="text-white text-lg">Urban Echoes</span>
100
+ </div>
101
+ </div>
102
+ </div>
103
+ </div>
104
+ </section>
105
+
106
+ <section id="reviews" class="py-20 px-6 max-w-5xl mx-auto">
107
+ <h2 class="text-4xl font-bold mb-12 text-center">Reviews</h2>
108
+ <div class="grid md:grid-cols-2 gap-8">
109
+ <div class="bg-zinc-900 p-8 rounded-lg">
110
+ <div class="flex items-center mb-4">
111
+ <span class="text-zinc-300 mr-2">★★★★★</span>
112
+ <span class="text-zinc-400 text-sm">- Film Quarterly</span>
113
+ </div>
114
+ <p class="text-zinc-300 italic">"Ortner's work transcends the boundaries between photography and cinema, creating a visual language that is uniquely his own."</p>
115
+ </div>
116
+ <div class="bg-zinc-900 p-8 rounded-lg">
117
+ <div class="flex items-center mb-4">
118
+ <span class="text-zinc-300 mr-2">★★★★☆</span>
119
+ <span class="text-zinc-400 text-sm">- Artistic Vision Magazine</span>
120
+ </div>
121
+ <p class="text-zinc-300 italic">"A master of contrast and composition, Siegfried Ortner's films are visual poetry in motion."</p>
122
+ </div>
123
+ </div>
124
+ </section>
125
+
126
+ <section id="contact" class="py-20 bg-zinc-900 px-6">
127
+ <div class="max-w-3xl mx-auto">
128
+ <h2 class="text-4xl font-bold mb-12 text-center">Contact</h2>
129
+ <form class="space-y-6">
130
+ <div>
131
+ <label for="name" class="block text-zinc-300 mb-2">Name</label>
132
+ <input type="text" id="name" class="w-full bg-zinc-800 border border-zinc-700 rounded-lg px-4 py-3 focus:outline-none focus:ring-2 focus:ring-zinc-600">
133
+ </div>
134
+ <div>
135
+ <label for="email" class="block text-zinc-300 mb-2">Email</label>
136
+ <input type="email" id="email" class="w-full bg-zinc-800 border border-zinc-700 rounded-lg px-4 py-3 focus:outline-none focus:ring-2 focus:ring-zinc-600">
137
+ </div>
138
+ <div>
139
+ <label for="message" class="block text-zinc-300 mb-2">Message</label>
140
+ <textarea id="message" rows="5" class="w-full bg-zinc-800 border border-zinc-700 rounded-lg px-4 py-3 focus:outline-none focus:ring-2 focus:ring-zinc-600"></textarea>
141
+ </div>
142
+ <button type="submit" class="bg-zinc-700 hover:bg-zinc-600 text-white px-6 py-3 rounded-lg transition-colors duration-300">Send Message</button>
143
+ </form>
144
+ </div>
145
+ </section>
146
+
147
+ <custom-footer></custom-footer>
148
+
149
+ <script src="components/navbar.js"></script>
150
+ <script src="components/footer.js"></script>
151
+ <script src="script.js"></script>
152
+ <script>
153
+ feather.replace();
154
+ </script>
155
+ <script src="https://huggingface.co/deepsite/deepsite-badge.js"></script>
156
+ </body>
157
+ </html>
script.js ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Initialize GSAP animations for navbar items
2
+ document.addEventListener('DOMContentLoaded', () => {
3
+ // Animate the logo on hover
4
+ const logo = document.querySelector('.group');
5
+ logo.addEventListener('mouseenter', () => {
6
+ gsap.to(logo.querySelector('div'), {
7
+ rotation: 360,
8
+ duration: 0.5,
9
+ ease: 'power2.out'
10
+ });
11
+ });
12
+ logo.addEventListener('mouseleave', () => {
13
+ gsap.to(logo.querySelector('div'), {
14
+ rotation: 0,
15
+ duration: 0.5,
16
+ ease: 'power2.out'
17
+ });
18
+ });
19
+
20
+ // Smooth scrolling for anchor links
21
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
22
+ anchor.addEventListener('click', function (e) {
23
+ e.preventDefault();
24
+ document.querySelector(this.getAttribute('href')).scrollIntoView({
25
+ behavior: 'smooth'
26
+ });
27
+ });
28
+ });
29
+ });
style.css CHANGED
@@ -1,28 +1,23 @@
 
 
1
  body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
28
- }
 
1
+ @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@300;400;500;600;700&display=swap');
2
+
3
  body {
4
+ font-family: 'Montserrat', sans-serif;
 
5
  }
6
 
7
+ /* Custom scrollbar */
8
+ ::-webkit-scrollbar {
9
+ width: 8px;
10
  }
11
 
12
+ ::-webkit-scrollbar-track {
13
+ background: #18181b;
 
 
 
14
  }
15
 
16
+ ::-webkit-scrollbar-thumb {
17
+ background: #3f3f46;
18
+ border-radius: 4px;
 
 
 
19
  }
20
 
21
+ ::-webkit-scrollbar-thumb:hover {
22
+ background: #52525b;
23
+ }