Widget:GOV-Test: Unterschied zwischen den Versionen
Aus Altes Köln
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 6: | Zeile 6: | ||
const serverBaseURL = "https://gov.genealogy.net"; | const serverBaseURL = "https://gov.genealogy.net"; | ||
.then(response => response.text()) | |||
.then(html => { | .then(html => { | ||
const tempDiv = document.createElement('div'); | const tempDiv = document.createElement('div'); | ||
tempDiv.innerHTML = html; | tempDiv.innerHTML = html; | ||
// | // Anpassung relativer URLs | ||
const links = tempDiv.querySelectorAll('a[href^="/"]'); | const links = tempDiv.querySelectorAll('a[href^="/"]'); | ||
links.forEach(link => { | links.forEach(link => { | ||
Zeile 22: | Zeile 21: | ||
}); | }); | ||
// Grafik | // Grafik ersetzen und Zoom-Wrapper hinzufügen | ||
const zoomImage = tempDiv.querySelector('td a[href*="relationshipGraph"] img'); | const zoomImage = tempDiv.querySelector('td a[href*="relationshipGraph"] img'); | ||
if (zoomImage) { | if (zoomImage) { | ||
Zeile 29: | Zeile 28: | ||
zoomImage.parentElement.replaceWith(wrapper); | zoomImage.parentElement.replaceWith(wrapper); | ||
wrapper.appendChild(zoomImage); | wrapper.appendChild(zoomImage); | ||
// Initiales Zoom-Level setzen | |||
zoomImage.dataset.scale = 1; | |||
} | } | ||
document.getElementById('content').innerHTML = tempDiv.innerHTML; | document.getElementById('content').innerHTML = tempDiv.innerHTML; | ||
}) | |||
.catch(error => console.error('Error loading content:', error)); | |||
// Zoom mit STRG + Mausrad | |||
const | document.addEventListener('wheel', (event) => { | ||
if ( | if (event.ctrlKey) { | ||
const zoomable = document.querySelector('.zoomable img:hover'); | |||
if (zoomable) { | |||
const scale = parseFloat(zoomable.dataset.scale || 1); | |||
const newScale = event.deltaY < 0 ? scale * 1.1 : scale / 1.1; | |||
zoomable.style.transform = `scale(${newScale})`; | |||
zoomable.dataset.scale = newScale; | |||
event.preventDefault(); // Standardverhalten verhindern | |||
} | } | ||
} | } | ||
}); | |||
</script> | </script> | ||
<style> | <style> | ||
/* | /* Zoomable Styles */ | ||
.zoomable { | .zoomable { | ||
position: relative; | position: relative; | ||
display: inline-block; | display: inline-block; | ||
overflow: hidden; | overflow: hidden; | ||
max-width: 100%; | |||
max-width: 100%; | cursor: grab; | ||
} | } | ||
.zoomable img { | .zoomable img { | ||
transition: transform 0.3s ease; | transition: transform 0.3s ease; | ||
width: 100%; | width: 100%; | ||
height: auto; | height: auto; | ||
} | } | ||
.zoomable:hover | .zoomable img:hover { | ||
cursor: zoom-in; | |||
cursor: zoom- | |||
} | } | ||
</style> | </style> | ||
Version vom 19. Januar 2025, 22:10 Uhr
Ajax-Variante mit wiki
<script>
const serverBaseURL = "https://gov.genealogy.net";
.then(response => response.text()) .then(html => { const tempDiv = document.createElement('div'); tempDiv.innerHTML = html;
// Anpassung relativer URLs const links = tempDiv.querySelectorAll('a[href^="/"]'); links.forEach(link => { link.href = serverBaseURL + link.getAttribute('href'); }); const images = tempDiv.querySelectorAll('img[src^="/"]'); images.forEach(img => { img.src = serverBaseURL + img.getAttribute('src'); });
// Grafik ersetzen und Zoom-Wrapper hinzufügen const zoomImage = tempDiv.querySelector('td a[href*="relationshipGraph"] img'); if (zoomImage) { const wrapper = document.createElement('div'); wrapper.className = 'zoomable'; zoomImage.parentElement.replaceWith(wrapper); wrapper.appendChild(zoomImage);
// Initiales Zoom-Level setzen zoomImage.dataset.scale = 1; }
document.getElementById('content').innerHTML = tempDiv.innerHTML; }) .catch(error => console.error('Error loading content:', error));
// Zoom mit STRG + Mausrad document.addEventListener('wheel', (event) => { if (event.ctrlKey) { const zoomable = document.querySelector('.zoomable img:hover'); if (zoomable) { const scale = parseFloat(zoomable.dataset.scale || 1); const newScale = event.deltaY < 0 ? scale * 1.1 : scale / 1.1; zoomable.style.transform = `scale(${newScale})`; zoomable.dataset.scale = newScale; event.preventDefault(); // Standardverhalten verhindern } } });
</script>
<style>
/* Zoomable Styles */ .zoomable { position: relative; display: inline-block; overflow: hidden; max-width: 100%; cursor: grab; }
.zoomable img { transition: transform 0.3s ease; width: 100%; height: auto; }
.zoomable img:hover { cursor: zoom-in; }
</style>
Variante: Einfacher iframe mit
Variante: responsiv mit
<style>
body { margin: 0; padding: 0; font-family: Arial, sans-serif; }
.iframe-container { width: 100%; /* Container hat immer die volle Breite des Viewports */ position: relative; /* Wichtig für absolute Positionierung */ padding-top: 56.25%; /* Seitenverhältnis 16:9 */ }
iframe { position: absolute; top: 0; left: 0; width: 100vw; /* Breite des Viewports */ height: calc(100vw * 0.5625); /* Höhe proportional zur Breite (16:9) */ transform-origin: top left; /* Skalierung startet oben links */ }
/* Media Queries für kleinere Bildschirme */ @media (max-width: 768px) { iframe { transform: scale(0.9); /* Skaliere den iframe-Inhalt */ } }
@media (max-width: 480px) { iframe { transform: scale(0.8); /* Weitere Skalierung für kleine Geräte */ } } </style>