1
0
Files
test.somachtstefaniedas.de/recipes.html
2025-05-30 22:22:30 +02:00

333 lines
9.1 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link href="/fa/css/fontawesome.css" rel="stylesheet">
<link href="/fa/css/brands.css" rel="stylesheet">
<link href="fonts/Lato/Lato-Black.ttf" rel="stylesheet">
<title>Suche auf der Website</title>
<style>
.bio {
font-family: "Lato", sans-serif;
font-weight: 900;
font-style: normal;
}
/* Grundlegendes Styling */
body {
font-family: system-ui, sans-serif;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
background-color: white;
}
/* Header */
header {
display: flex;
justify-content: space-between;
align-items: center;
width: 100%;
padding: 20px;
max-width: 1200px;
flex-wrap: wrap;
}
nav {
display: flex;
gap: 20px;
}
h1 {
margin: 0;
font-size: 1.8em;
}
a {
text-decoration: none;
color: black;
}
/* Social Links (links positioniert) */
.social-links {
display: flex;
gap: 10px;
align-items: center;
}
.social-links a {
font-size: 1.5em;
}
/* Ladebildschirm */
.loading-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(255, 255, 255, 0.8);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
.spinner {
width: 50px;
height: 50px;
border: 5px solid rgba(0, 0, 0, 0.1);
border-top: 5px solid black;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Inhalt */
.content {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
text-align: center;
width: 100%;
max-width: 1200px;
padding: 20px;
box-sizing: border-box;
}
.text, .image {
flex: 1;
width: 100%;
text-align: center;
}
.image img {
max-width: 100%;
height: auto;
border-radius: 8px;
}
.divider {
width: 100%;
height: 2px;
background-color: black;
margin: 20px 0;
}
/* Karte */
.card {
max-width: 300px;
background: white;
color: black;
border: 1px solid #dbdce0;
padding: 25px;
box-shadow: 8px 8px 0 rgba(32,33,37,.1);
transition: box-shadow .5s, transform .5s;
border-radius: 8px;
display: inline-block;
margin: 10px;
}
.card:hover {
transform: translate(-2px, -4px);
box-shadow: 16px 16px 0 rgba(32,33,37,.06);
}
.card img {
max-width: 100%;
height: auto;
}
.card .title {
font-weight: bold;
margin-top: 1.5em;
}
.card .description {
line-height: 1.5em;
}
.card a {
color: #1967d2;
font-size: .8em;
font-weight: 600;
}
/* Responsives Design */
@media (max-width: 768px) {
header {
flex-direction: column;
align-items: center;
text-align: center;
}
.social-links {
width: 100%;
justify-content: center;
margin-top: 10px;
}
.content {
flex-direction: column;
align-items: center;
}
.text, .image {
width: 100%;
}
.card {
max-width: 90%;
margin: 10px 0;
}
}
</style>
</head>
<body>
<header>
<div class="social-links">
<a href="https://www.instagram.com/so.mach.ich.das/" target="_blank">
<i class="fa-brands fa-instagram"></i>
</a>
<a href="https://youtube.com/@somachtstefaniedasstefanie435?feature=shared" target="_blank">
<i class="fa-brands fa-youtube"></i>
</a>
</div>
<nav>
<a href="index.html">HOME</a>
<a href="recipes.html">RECIPES</a>
</nav>
<h1>so.mach.ich.das</h1>
<nav>
<a href="/contact.html">CONTACT</a>
<a href="bio.html">BIO</a>
</nav>
</header>
<br>
<br>
<div class="search">
<input type="text" id="searchInput" class="search__input" placeholder="Suchbegriff eingeben">
<button class="search__button" onclick="highlightSearch()">
<svg class="search__icon" viewBox="0 0 24 24">
<path d="M21.53 20.47l-3.66-3.66C19.195 15.24 20 13.214 20 11c0-4.97-4.03-9-9-9s-9 4.03-9 9 4.03 9 9 9c2.215 0 4.24-.804 5.808-2.13l3.66 3.66c.147.146.34.22.53.22s.385-.073.53-.22c.295-.293.295-.767.002-1.06zM3.5 11c0-4.135 3.365-7.5 7.5-7.5s7.5 3.365 7.5 7.5-3.365 7.5-7.5 7.5-7.5-3.365-7.5-7.5z"/>
</svg>
</button>
<button onclick="navigateMatches(-1)">⬆️</button>
<button onclick="navigateMatches(1)">⬇️</button>
</div>
<br>
<br>
<div id="content">
<article class="card">
<img src="Johannesbeeressig/johannesbeeressig.png" width="100%" alt="Johannesbeeressig">
<h3 class="title">Johannesbeeressig</h3>
<p class="description">Verleihe deinem Salat eine außergewöhnliche Note mit selbstgemachtem Johannesbeeressig.</p>
<a href="/Johannesbeeressig/" class="link">Klicke für mehr</a>
</article>
<article class="card">
<img src="hefe-teilchen/hefeteilchen.jpeg" width="100%" alt="Hefe Teilchen">
<h3 class="title">Hefe Teilchen</h3>
<p class="description">Locker-leichte Hefeteilchen, gefüllt mit Schokocreme oder Marmelade perfekt zum Kaffee oder Frühstück.</p>
<a href="/hefe-teilchen" class="link">Klicke für mehr</a>
</article>
<article class="card">
<img src="lachszwiebeldip/lachsdip.jpeg" width="100%" alt="Lachs-Zwiebel-Dip">
<h3 class="title">Lachs-Zwiebel-Dip</h3>
<p class="description">Herzhafter Lachs-Zwiebel-Dip mit Frischkäse und Kresse perfekt als Brotaufstrich oder Dip für Gäste.</p>
<a href="/lachszwiebeldip" class="link">Klicke für mehr</a>
</article>
</article>
<article class="card">
<img src="fluffigkrossejoghurtbroteohnegehzeit/brot.jpeg" width="100%" alt="fluffig krosse Johgurtbrote ohne Gehzeit">
<h3 class="title">Fluffig Krosse Joghurtbrote ohne Gehzeit</h3>
<p class="description">Locker und knusprig Joghurtbrote ganz ohne Gehzeit.</p>
<a href="/fluffigkrossejoghurtbroteohnegehzeit" class="link">Klicke für mehr</a>
</article>
</div>
<script>
let currentMatch = -1;
let matches = [];
function clearHighlights() {
matches.forEach(span => {
const parent = span.parentNode;
parent.replaceChild(document.createTextNode(span.textContent), span);
parent.normalize();
});
matches = [];
currentMatch = -1;
}
function highlightSearch() {
clearHighlights();
const searchInput = document.getElementById("searchInput");
const searchTerm = searchInput.value.trim().toLowerCase();
if (!searchTerm) return;
const content = document.getElementById("content");
const regex = new RegExp(searchTerm, "gi");
content.innerHTML = content.innerHTML.replace(/(<mark class="highlight.*?">|<\/mark>)/g, '');
const walker = document.createTreeWalker(content, NodeFilter.SHOW_TEXT);
const nodes = [];
while (walker.nextNode()) {
const node = walker.currentNode;
if (node.parentNode && node.nodeValue.toLowerCase().includes(searchTerm)) {
nodes.push(node);
}
}
nodes.forEach(node => {
const spanWrapper = document.createElement('span');
spanWrapper.innerHTML = node.nodeValue.replace(regex, match => `<mark class="highlight">${match}</mark>`);
node.parentNode.replaceChild(spanWrapper, node);
});
matches = Array.from(document.querySelectorAll(".highlight"));
if (matches.length > 0) {
currentMatch = 0;
scrollToCurrent();
}
}
function scrollToCurrent() {
matches.forEach((el, i) => {
el.classList.toggle("active", i === currentMatch);
});
matches[currentMatch].scrollIntoView({ behavior: "smooth", block: "center" });
}
function navigateMatches(direction) {
if (matches.length === 0) return;
currentMatch = (currentMatch + direction + matches.length) % matches.length;
scrollToCurrent();
}
// Optional: Suche mit Enter starten
document.getElementById("searchInput").addEventListener("keydown", e => {
if (e.key === "Enter") highlightSearch();
});
</script>
<script>
// Funktion, die die Ladeanimation nach dem Laden der Seite ausblendet
window.onload = function() {
document.querySelector('.loading-overlay').style.display = 'none';
};
</script>
</body>
</html>