🔧 Fix footer positioning in adminlogin and generator pages
- Added proper HTML/body height: 100% for full viewport height - Changed body to flex-direction: column for proper footer positioning - Updated footer CSS with margin-top: auto for sticky footer behavior - Added flex-grow: 1 to containers for proper space distribution - Footer now properly sticks to bottom of viewport - Improved responsive layout for both adminlogin and generator pages
This commit is contained in:
@@ -4,11 +4,18 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
@@ -24,6 +31,10 @@ body {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.login-container::before {
|
.login-container::before {
|
||||||
@@ -194,8 +205,11 @@ input:hover {
|
|||||||
.footer {
|
.footer {
|
||||||
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
|
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
|
||||||
border-top: 1px solid #2a2a3e;
|
border-top: 1px solid #2a2a3e;
|
||||||
margin-top: 3rem;
|
margin-top: auto;
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-content {
|
.footer-content {
|
||||||
|
|||||||
@@ -4,11 +4,18 @@
|
|||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html, body {
|
||||||
|
height: 100%;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
||||||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
@@ -24,6 +31,10 @@ body {
|
|||||||
width: 100%;
|
width: 100%;
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container::before {
|
.container::before {
|
||||||
@@ -389,8 +400,11 @@ input:hover, textarea:hover {
|
|||||||
.footer {
|
.footer {
|
||||||
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
|
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
|
||||||
border-top: 1px solid #2a2a3e;
|
border-top: 1px solid #2a2a3e;
|
||||||
margin-top: 3rem;
|
margin-top: auto;
|
||||||
padding: 2rem 0;
|
padding: 2rem 0;
|
||||||
|
position: relative;
|
||||||
|
bottom: 0;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-content {
|
.footer-content {
|
||||||
|
|||||||
@@ -170,11 +170,11 @@ async function generateLicense() {
|
|||||||
throw new Error("Lizenzstufe muss eine Zahl zwischen 1 und 4 sein.");
|
throw new Error("Lizenzstufe muss eine Zahl zwischen 1 und 4 sein.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Standort automatisch speichern, falls vorhanden
|
// Standort automatisch speichern, falls vorhanden
|
||||||
let locationSaved = false;
|
let locationSaved = false;
|
||||||
const locationName = document.getElementById('locationSearch')?.value?.trim();
|
const locationName = document.getElementById('locationSearch')?.value?.trim();
|
||||||
const latitude = document.getElementById('latitude')?.textContent;
|
const latitude = document.getElementById('latitude')?.textContent;
|
||||||
const longitude = document.getElementById('longitude')?.textContent;
|
const longitude = document.getElementById('longitude')?.textContent;
|
||||||
|
|
||||||
if (locationName && latitude && longitude && tier >= 3) {
|
if (locationName && latitude && longitude && tier >= 3) {
|
||||||
try {
|
try {
|
||||||
@@ -331,8 +331,8 @@ async function searchLocation(buttonElement) {
|
|||||||
const lat = parseFloat(location.lat);
|
const lat = parseFloat(location.lat);
|
||||||
const lon = parseFloat(location.lon);
|
const lon = parseFloat(location.lon);
|
||||||
|
|
||||||
// Der Name wird vom User bestimmt - nur Koordinaten aus der API verwenden
|
// Der Name wird vom User bestimmt - nur Koordinaten aus der API verwenden
|
||||||
// Kein verstecktes Feld nötig, da der User den Namen selbst eingibt
|
// Kein verstecktes Feld nötig, da der User den Namen selbst eingibt
|
||||||
|
|
||||||
// Koordinaten anzeigen
|
// Koordinaten anzeigen
|
||||||
updateCoordinates(lat, lon);
|
updateCoordinates(lat, lon);
|
||||||
@@ -342,8 +342,8 @@ async function searchLocation(buttonElement) {
|
|||||||
createInteractiveMap(lat, lon);
|
createInteractiveMap(lat, lon);
|
||||||
mapContainer.style.display = 'block';
|
mapContainer.style.display = 'block';
|
||||||
|
|
||||||
// Erfolgsmeldung
|
// Erfolgsmeldung
|
||||||
showSuccess(`✅ Koordinaten für "${locationInput}" erfolgreich gefunden! Klicken Sie auf die Karte, um den Pin zu verschieben.`);
|
showSuccess(`✅ Koordinaten für "${locationInput}" erfolgreich gefunden! Klicken Sie auf die Karte, um den Pin zu verschieben.`);
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
showError(`Fehler bei der Standortsuche: ${error.message}`);
|
showError(`Fehler bei der Standortsuche: ${error.message}`);
|
||||||
@@ -461,11 +461,11 @@ function createMap(initialLat, initialLon) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Standort in Datenbank speichern
|
// Standort in Datenbank speichern
|
||||||
async function saveLocationToDatabase() {
|
async function saveLocationToDatabase() {
|
||||||
const locationName = document.getElementById('locationSearch').value.trim();
|
const locationName = document.getElementById('standorte').value.trim();
|
||||||
const latitude = document.getElementById('latitude').textContent;
|
const latitude = document.getElementById('latitude').textContent;
|
||||||
const longitude = document.getElementById('longitude').textContent;
|
const longitude = document.getElementById('longitude').textContent;
|
||||||
const saveBtn = document.getElementById('saveLocationBtn');
|
const saveBtn = document.getElementById('saveLocationBtn');
|
||||||
|
|
||||||
if (!locationName || !latitude || !longitude) {
|
if (!locationName || !latitude || !longitude) {
|
||||||
|
|||||||
Reference in New Issue
Block a user