A "Blog" page is missing, but don't call it "Blog", find a more creative name, maybe one that starts with "D"
Browse files- components/footer.js +2 -1
- components/navbar.js +8 -3
- discourse.html +98 -0
- script.js +8 -0
components/footer.js
CHANGED
|
@@ -75,7 +75,8 @@ class CustomFooter extends HTMLElement {
|
|
| 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 |
-
|
|
|
|
| 79 |
<p class="copyright">© ${new Date().getFullYear()} Siegfried Ortner. All rights reserved.</p>
|
| 80 |
</div>
|
| 81 |
</footer>
|
|
|
|
| 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 |
+
<a href="discourse.html" class="footer-link">Discourse</a>
|
| 79 |
+
</div>
|
| 80 |
<p class="copyright">© ${new Date().getFullYear()} Siegfried Ortner. All rights reserved.</p>
|
| 81 |
</div>
|
| 82 |
</footer>
|
components/navbar.js
CHANGED
|
@@ -90,7 +90,12 @@ class CustomNavbar extends HTMLElement {
|
|
| 90 |
<div class="nav-line"></div>
|
| 91 |
<span class="nav-text">Contact</span>
|
| 92 |
</div>
|
| 93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
`;
|
| 95 |
|
| 96 |
// Add GSAP animations for text reveal
|
|
@@ -150,8 +155,8 @@ class CustomNavbar extends HTMLElement {
|
|
| 150 |
|
| 151 |
// Add click handler to scroll to section
|
| 152 |
item.addEventListener('click', () => {
|
| 153 |
-
const sections = ['about', 'work', 'reviews', 'contact'];
|
| 154 |
-
|
| 155 |
document.getElementById(sections[index]).scrollIntoView({
|
| 156 |
behavior: 'smooth'
|
| 157 |
});
|
|
|
|
| 90 |
<div class="nav-line"></div>
|
| 91 |
<span class="nav-text">Contact</span>
|
| 92 |
</div>
|
| 93 |
+
<div class="nav-item">
|
| 94 |
+
<div class="nav-circle"></div>
|
| 95 |
+
<div class="nav-line"></div>
|
| 96 |
+
<span class="nav-text">Discourse</span>
|
| 97 |
+
</div>
|
| 98 |
+
</div>
|
| 99 |
`;
|
| 100 |
|
| 101 |
// Add GSAP animations for text reveal
|
|
|
|
| 155 |
|
| 156 |
// Add click handler to scroll to section
|
| 157 |
item.addEventListener('click', () => {
|
| 158 |
+
const sections = ['about', 'work', 'reviews', 'contact', 'discourse.html'];
|
| 159 |
+
if (index < sections.length) {
|
| 160 |
document.getElementById(sections[index]).scrollIntoView({
|
| 161 |
behavior: 'smooth'
|
| 162 |
});
|
discourse.html
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<!DOCTYPE html>
|
| 2 |
+
<html lang="en">
|
| 3 |
+
<head>
|
| 4 |
+
<meta charset="UTF-8">
|
| 5 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| 6 |
+
<title>Discourse | Siegfried Ortner</title>
|
| 7 |
+
<link rel="stylesheet" href="style.css">
|
| 8 |
+
<script src="https://cdn.tailwindcss.com"></script>
|
| 9 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
|
| 10 |
+
<script src="https://unpkg.com/feather-icons"></script>
|
| 11 |
+
</head>
|
| 12 |
+
<body class="bg-stone-950 text-zinc-100 font-sans antialiased overflow-x-hidden">
|
| 13 |
+
<!-- Navigation -->
|
| 14 |
+
<custom-navbar></custom-navbar>
|
| 15 |
+
|
| 16 |
+
<!-- Hero Section -->
|
| 17 |
+
<div class="relative py-32 px-6 text-center">
|
| 18 |
+
<h1 class="text-6xl font-medium mb-4">Discourse</h1>
|
| 19 |
+
<p class="text-xl font-light text-zinc-300 tracking-wider">THOUGHTS ON VISUAL NARRATIVES</p>
|
| 20 |
+
</div>
|
| 21 |
+
|
| 22 |
+
<!-- Blog Posts -->
|
| 23 |
+
<section class="py-12 px-6 max-w-5xl mx-auto">
|
| 24 |
+
<div class="grid md:grid-cols-2 gap-12">
|
| 25 |
+
<!-- Post 1 -->
|
| 26 |
+
<article class="group">
|
| 27 |
+
<div class="overflow-hidden rounded-lg mb-4">
|
| 28 |
+
<img src="http://static.photos/monochrome/640x360/47" alt="Photography Essay" class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-500">
|
| 29 |
+
</div>
|
| 30 |
+
<span class="text-zinc-400 text-sm">October 12, 2023</span>
|
| 31 |
+
<h2 class="text-2xl font-medium mt-2 mb-3 group-hover:text-zinc-300 transition-colors">The Language of Shadows</h2>
|
| 32 |
+
<p class="text-zinc-400 mb-4">Exploring how darkness shapes our visual perception in black and white photography.</p>
|
| 33 |
+
<a href="#" class="inline-flex items-center text-zinc-300 hover:text-white transition-colors">
|
| 34 |
+
Read Essay
|
| 35 |
+
<i data-feather="arrow-right" class="ml-2 w-4 h-4"></i>
|
| 36 |
+
</a>
|
| 37 |
+
</article>
|
| 38 |
+
|
| 39 |
+
<!-- Post 2 -->
|
| 40 |
+
<article class="group">
|
| 41 |
+
<div class="overflow-hidden rounded-lg mb-4">
|
| 42 |
+
<img src="http://static.photos/monochrome/640x360/48" alt="Film Analysis" class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-500">
|
| 43 |
+
</div>
|
| 44 |
+
<span class="text-zinc-400 text-sm">September 28, 2023</span>
|
| 45 |
+
<h2 class="text-2xl font-medium mt-2 mb-3 group-hover:text-zinc-300 transition-colors">Cinematic Stillness</h2>
|
| 46 |
+
<p class="text-zinc-400 mb-4">How motion pictures can evoke profound emotion through the absence of movement.</p>
|
| 47 |
+
<a href="#" class="inline-flex items-center text-zinc-300 hover:text-white transition-colors">
|
| 48 |
+
Read Analysis
|
| 49 |
+
<i data-feather="arrow-right" class="ml-2 w-4 h-4"></i>
|
| 50 |
+
</a>
|
| 51 |
+
</article>
|
| 52 |
+
|
| 53 |
+
<!-- Post 3 -->
|
| 54 |
+
<article class="group">
|
| 55 |
+
<div class="overflow-hidden rounded-lg mb-4">
|
| 56 |
+
<img src="http://static.photos/monochrome/640x360/49" alt="Behind the Scenes" class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-500">
|
| 57 |
+
</div>
|
| 58 |
+
<span class="text-zinc-400 text-sm">August 15, 2023</span>
|
| 59 |
+
<h2 class="text-2xl font-medium mt-2 mb-3 group-hover:text-zinc-300 transition-colors">Creating 'Urban Echoes'</h2>
|
| 60 |
+
<p class="text-zinc-400 mb-4">A behind-the-scenes look at the making of my latest short film.</p>
|
| 61 |
+
<a href="#" class="inline-flex items-center text-zinc-300 hover:text-white transition-colors">
|
| 62 |
+
Read Article
|
| 63 |
+
<i data-feather="arrow-right" class="ml-2 w-4 h-4"></i>
|
| 64 |
+
</a>
|
| 65 |
+
</article>
|
| 66 |
+
|
| 67 |
+
<!-- Post 4 -->
|
| 68 |
+
<article class="group">
|
| 69 |
+
<div class="overflow-hidden rounded-lg mb-4">
|
| 70 |
+
<img src="http://static.photos/monochrome/640x360/50" alt="Equipment Review" class="w-full h-64 object-cover group-hover:scale-105 transition-transform duration-500">
|
| 71 |
+
</div>
|
| 72 |
+
<span class="text-zinc-400 text-sm">July 3, 2023</span>
|
| 73 |
+
<h2 class="text-2xl font-medium mt-2 mb-3 group-hover:text-zinc-300 transition-colors">Tools of the Trade</h2>
|
| 74 |
+
<p class="text-zinc-400 mb-4">My current camera setup and why I prefer minimal equipment.</p>
|
| 75 |
+
<a href="#" class="inline-flex items-center text-zinc-300 hover:text-white transition-colors">
|
| 76 |
+
Read Review
|
| 77 |
+
<i data-feather="arrow-right" class="ml-2 w-4 h-4"></i>
|
| 78 |
+
</a>
|
| 79 |
+
</article>
|
| 80 |
+
</div>
|
| 81 |
+
|
| 82 |
+
<div class="mt-16 text-center">
|
| 83 |
+
<button class="border border-zinc-600 hover:border-zinc-300 text-zinc-300 hover:text-white px-6 py-3 rounded-lg transition-colors duration-300">
|
| 84 |
+
Load More Articles
|
| 85 |
+
</button>
|
| 86 |
+
</div>
|
| 87 |
+
</section>
|
| 88 |
+
|
| 89 |
+
<custom-footer></custom-footer>
|
| 90 |
+
|
| 91 |
+
<script src="components/navbar.js"></script>
|
| 92 |
+
<script src="components/footer.js"></script>
|
| 93 |
+
<script src="script.js"></script>
|
| 94 |
+
<script>
|
| 95 |
+
feather.replace();
|
| 96 |
+
</script>
|
| 97 |
+
</body>
|
| 98 |
+
</html>
|
script.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
// Initialize GSAP animations for navbar items
|
| 2 |
document.addEventListener('DOMContentLoaded', () => {
|
| 3 |
// Animate the logo on hover
|
|
|
|
| 1 |
+
|
| 2 |
+
// Smooth scroll to top when navigating to discourse page
|
| 3 |
+
document.querySelectorAll('a[href="discourse.html"]').forEach(link => {
|
| 4 |
+
link.addEventListener('click', () => {
|
| 5 |
+
window.scrollTo({ top: 0, behavior: 'smooth' });
|
| 6 |
+
});
|
| 7 |
+
});
|
| 8 |
+
|
| 9 |
// Initialize GSAP animations for navbar items
|
| 10 |
document.addEventListener('DOMContentLoaded', () => {
|
| 11 |
// Animate the logo on hover
|