Hallo,
ich habe folgendes Problem. Hier erstmal ein kurzer HTML-Code:
Hier das Stylesheet:
Und zu guter Letzt der jQuery-Code:
Wie im HTML-Teil zu sehen, habe ich ein eigenes Attribut "data-big" angelegt, in dem der Pfad zu dessen großem Bruder liegt. Das Bild ist also nur ein Vorschaubild. Die CSS dient dem späteren Laden dieses Bildes und beinhaltet soweit alle allgemeinen Einstellungen, die ich benötige. Mittels jQuery lade ich nun die große Version des Bildes nach, sobald auf das Vorschaubild geklickt wird. Das Bild wird geladen, danach in den gewünschten Container gelegt und erhält die CSS-Eigenschaften. Lasse ich das ganze in Chrome laufen, wird das Bild auch wunderbar zentriert. In Safari oder auch Firefox kriege ich beim Auslesen der Breite und der Höhe des Bildes immer 0 zurückgegeben. Weiss jemand zufällig einen Rat? Eine feste Höhe und Breite könnte ich natürlich eingeben, aber es wäre doch schon deutlich entspannter es durch JavaScript auslesen zu lassen und entsprechend dem Monitor zu skalieren, anstatt jedem Bild seine eigene Höhe und Breite in den Code zu schreiben. Zumal die Bilder alle unterschiedliche Formate haben.
Lege ich eine Funktion an, die mir bei Klick auf das nun sichtbare, große Bild die Höhe und Breite zurückgibt, wird dies auch getan.
Gruß Lars
ich habe folgendes Problem. Hier erstmal ein kurzer HTML-Code:
HTML:
<div id="galerie">
<img class="..." src="…" data-big="..." alt="..." title="..." />
</div>
Hier das Stylesheet:
Code:
#bildBig
{
position: absolute;
top: 50%;
left: 50%;
padding: 20px;
border: 1px solid #FFF;
opacity: 0.0
}
Und zu guter Letzt der jQuery-Code:
Code:
function ausrichtung()
{
var bBreite = $("#bildBig").width(),
bHoehe = $("#bildBig").height(),
bBorder = parseInt($("#bildBig").css("border-width")),
bPadd = parseInt($("#bildBig").css("padding"));
var mt = -(bHoehe / 2) - bBorder - bPadd,
ml = -(bBreite / 2) - bBorder - bPadd;
$("#bildBig").css("margin-top", mt).css("margin-left", ml).animate({opacity: "1.0"}, 500);
};
$(document).on("click", "#galerie img", function()
{
var verweis = $(this).attr("data-big");
$("body").append('<div id="container"></div>');
var img = new Image();
img.src = verweis;
$(img).load(function()
{
$("#container").append('<img id="bildBig" src="'+verweis+'" alt="..." />');
ausrichtung();
});
});
Wie im HTML-Teil zu sehen, habe ich ein eigenes Attribut "data-big" angelegt, in dem der Pfad zu dessen großem Bruder liegt. Das Bild ist also nur ein Vorschaubild. Die CSS dient dem späteren Laden dieses Bildes und beinhaltet soweit alle allgemeinen Einstellungen, die ich benötige. Mittels jQuery lade ich nun die große Version des Bildes nach, sobald auf das Vorschaubild geklickt wird. Das Bild wird geladen, danach in den gewünschten Container gelegt und erhält die CSS-Eigenschaften. Lasse ich das ganze in Chrome laufen, wird das Bild auch wunderbar zentriert. In Safari oder auch Firefox kriege ich beim Auslesen der Breite und der Höhe des Bildes immer 0 zurückgegeben. Weiss jemand zufällig einen Rat? Eine feste Höhe und Breite könnte ich natürlich eingeben, aber es wäre doch schon deutlich entspannter es durch JavaScript auslesen zu lassen und entsprechend dem Monitor zu skalieren, anstatt jedem Bild seine eigene Höhe und Breite in den Code zu schreiben. Zumal die Bilder alle unterschiedliche Formate haben.
Lege ich eine Funktion an, die mir bei Klick auf das nun sichtbare, große Bild die Höhe und Breite zurückgibt, wird dies auch getan.
Gruß Lars
Zuletzt bearbeitet: