Sto scrivendo un po 'di Javascript per ridimensionare l'immagine grande per adattarla alla finestra del browser dell'utente. (Purtroppo non controllo la dimensione delle immagini di origine.)
Quindi qualcosa del genere sarebbe nell'HTML:
<img id="photo"
src="a_really_big_file.jpg"
alt="this is some alt text"
title="this is some title text" />
C'è un modo per determinare se l' src
immagine in un img
tag è stata scaricata?
Ne ho bisogno perché sto riscontrando un problema se $(document).ready()
viene eseguito prima che il browser abbia caricato l'immagine. $("#photo").width()
e $("#photo").height()
restituirà la dimensione del segnaposto (il testo alternativo). Nel mio caso è qualcosa come 134 x 20.
In questo momento sto solo controllando se l'altezza della foto è inferiore a 150 e supponendo che in tal caso sia solo testo alternativo. Ma questo è un vero trucco, e si spezzerebbe se una foto è alta meno di 150 pixel (non probabile nel mio caso particolare), o se il testo alternativo è alto più di 150 pixel (potrebbe eventualmente accadere su una piccola finestra del browser) .
Modifica: per chiunque desideri vedere il codice:
$(function()
{
var REAL_WIDTH = $("#photo").width();
var REAL_HEIGHT = $("#photo").height();
$(window).resize(adjust_photo_size);
adjust_photo_size();
function adjust_photo_size()
{
if(REAL_HEIGHT < 150)
{
REAL_WIDTH = $("#photo").width();
REAL_HEIGHT = $("#photo").height();
if(REAL_HEIGHT < 150)
{
//image not loaded.. try again in a quarter-second
setTimeout(adjust_photo_size, 250);
return;
}
}
var new_width = . . . ;
var new_height = . . . ;
$("#photo").width(Math.round(new_width));
$("#photo").height(Math.round(new_height));
}
});
Aggiornamento : grazie per i suggerimenti. Esiste il rischio che l'evento non venga attivato se imposto una richiamata per l' $("#photo").load
evento, quindi ho definito un evento onLoad direttamente sul tag immagine. Per la cronaca, ecco il codice con cui sono finito:
<img id="photo"
onload="photoLoaded();"
src="a_really_big_file.jpg"
alt="this is some alt text"
title="this is some title text" />
Quindi in Javascript:
//This must be outside $() because it may get called first
var isPhotoLoaded = false;
function photoLoaded()
{
isPhotoLoaded = true;
}
$(function()
{
//Hides scrollbars, so we can resize properly. Set with JS instead of
// CSS so that page doesn't break with JS disabled.
$("body").css("overflow", "hidden");
var REAL_WIDTH = -1;
var REAL_HEIGHT = -1;
$(window).resize(adjust_photo_size);
adjust_photo_size();
function adjust_photo_size()
{
if(!isPhotoLoaded)
{
//image not loaded.. try again in a quarter-second
setTimeout(adjust_photo_size, 250);
return;
}
else if(REAL_WIDTH < 0)
{
//first time in this function since photo loaded
REAL_WIDTH = $("#photo").width();
REAL_HEIGHT = $("#photo").height();
}
var new_width = . . . ;
var new_height = . . . ;
$("#photo").width(Math.round(new_width));
$("#photo").height(Math.round(new_height));
}
});
max-width
emax-height
nello stile dell'immagine con Javascript? Quindi eviti TUTTO il codice che hai bisogno di scrivere impostando la larghezza / altezza massima sulla dimensione della larghezza / altezza del riquadro di visualizzazione.