Sprachumschalter komplett neu gestaltet: viel spezieller/auffälliger
Statt eines schlichten Nav-Menüpunkts jetzt ein eigenes "Schmuckstück": - Gläserne Pille mit Polarlicht-Schein + durchlaufendem Lichtschimmer (analog zum Bewerben-Knopf), Rahmen/Glow in der jeweiligen Sprachfarbe. - Kugel ist jetzt eine glänzende "Mini-Planet"-Kugel (radialer Verlauf + Glanzlicht, komplett aus --sprach-glut in CSS gebaut statt aus einem JS-Gradient) mit sanfter Eigendrehung. - Dropdown im selben Glow-Look, schwebt beim Öffnen sanft ein, jeder Eintrag bekommt einen farbigen linken Rand + Hover-Verschiebung. Alles respektiert weiterhin prefers-reduced-motion.
This commit is contained in:
+15
-14
@@ -36,17 +36,18 @@
|
||||
"GB EN" (Flagge≠Sprachcode bei Englisch) usw. Ein einzelnes
|
||||
Globus-Symbol im Knopf plus volle Sprachnamen im Dropdown ist
|
||||
eindeutig und funktioniert auf jedem Betriebssystem gleich. */
|
||||
/* Pro Sprache eine kräftige, gut leuchtende Akzentfarbe (glut) für Text
|
||||
+ Kugel-Glanz, plus einen zweifarbigen Verlauf (farben) für die Kugel
|
||||
selbst — angelehnt an die jeweilige Landesfarbe, aber bewusst
|
||||
gesättigter/heller gewählt (nicht die originalen, oft eher stumpfen
|
||||
Flaggenfarben), damit der Polarlicht-Leuchteffekt gut trägt. */
|
||||
/* Pro Sprache eine kräftige, gut leuchtende Akzentfarbe (glut) — für
|
||||
Schrift-Leuchten, Knopf-Aurora und die glänzende Kugel (deren
|
||||
Farbverlauf wird rein in CSS aus dieser einen Farbe gebaut, siehe
|
||||
.sprach-kugel in main.css). Angelehnt an die jeweilige Landesfarbe,
|
||||
aber bewusst gesättigter/heller (nicht die originalen, oft eher
|
||||
stumpfen Flaggenfarben), damit der Polarlicht-Effekt gut trägt. */
|
||||
const SPRACHEN = [
|
||||
{ code: "de", kurz: "DE", name: "Deutsch", glut: "#ffb300", farben: "linear-gradient(160deg, #ffe066 0%, #ff8c00 100%)" },
|
||||
{ code: "de-CH", kurz: "CH", name: "Schwiizerdütsch", glut: "#ff3b3b", farben: "linear-gradient(160deg, #ff8080 0%, #d90000 100%)" },
|
||||
{ code: "en", kurz: "EN", name: "English", glut: "#2f6bff", farben: "linear-gradient(160deg, #7fa8ff 0%, #1a3fd6 100%)" },
|
||||
{ code: "fr", kurz: "FR", name: "Français", glut: "#00c2ff", farben: "linear-gradient(160deg, #7fe3ff 0%, #0090cc 100%)" },
|
||||
{ code: "pt", kurz: "PT", name: "Português", glut: "#20d97a", farben: "linear-gradient(160deg, #7cf5b0 0%, #0a9e4c 100%)" },
|
||||
{ code: "de", kurz: "DE", name: "Deutsch", glut: "#ffb300" },
|
||||
{ code: "de-CH", kurz: "CH", name: "Schwiizerdütsch", glut: "#ff3b3b" },
|
||||
{ code: "en", kurz: "EN", name: "English", glut: "#2f6bff" },
|
||||
{ code: "fr", kurz: "FR", name: "Français", glut: "#00c2ff" },
|
||||
{ code: "pt", kurz: "PT", name: "Português", glut: "#20d97a" },
|
||||
];
|
||||
const SPRACHE_SCHLUESSEL = "dogi-sprache";
|
||||
|
||||
@@ -259,15 +260,15 @@
|
||||
const aktuell = getSprache();
|
||||
const aktiv = SPRACHEN.find((s) => s.code === aktuell) || SPRACHEN[0];
|
||||
return `
|
||||
<div class="nav-group sprach-schalter">
|
||||
<button type="button" aria-expanded="false" aria-label="${t("sprache_aria")}" style="--sprach-glut:${aktiv.glut};">
|
||||
<span class="sprach-kugel" style="background:${aktiv.farben};--sprach-glut:${aktiv.glut};" aria-hidden="true"></span>
|
||||
<div class="nav-group sprach-schalter" style="--sprach-glut:${aktiv.glut};">
|
||||
<button type="button" aria-expanded="false" aria-label="${t("sprache_aria")}">
|
||||
<span class="sprach-kugel" aria-hidden="true"></span>
|
||||
<span class="sprach-kurz">${aktiv.kurz}</span> <span aria-hidden="true">▾</span>
|
||||
</button>
|
||||
<div class="nav-dropdown">
|
||||
${SPRACHEN.map(
|
||||
(s) =>
|
||||
`<a href="#" data-sprache="${s.code}" style="--sprach-glut:${s.glut};"${s.code === aktuell ? ' class="active"' : ""}><span class="sprach-kugel" style="background:${s.farben};--sprach-glut:${s.glut};" aria-hidden="true"></span>${s.name}</a>`
|
||||
`<a href="#" data-sprache="${s.code}" style="--sprach-glut:${s.glut};"${s.code === aktuell ? ' class="active"' : ""}><span class="sprach-kugel" aria-hidden="true"></span>${s.name}</a>`
|
||||
).join("")}
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
Reference in New Issue
Block a user