Sembra che dovrebbe essere abbastanza semplice, ma per qualche motivo non riesco a circondarmi del tutto. Ho un'immagine all'interno di un div "viewport", di cui la proprietà overflow è impostata su hidden.Javascript (jQuery) Ridimensiona un'immagine al punto centrale del contenitore
Ho implementato un semplice zoom e panoramica con l'interfaccia utente jQuery, tuttavia ho problemi a far sì che lo zoom appaia dal centro della finestra. Ho fatto un piccolo screencast da Photoshop all'effetto che sto cercando di riprodurre: http://dl.dropbox.com/u/107346/share/reference-point-zoom.mov
In PS è possibile regolare il punto di riferimento per il ridimensionamento e l'oggetto verrà scalato da quel punto. Ovviamente questo non è possibile con HTML/CSS/JS, quindi sto cercando di trovare i valori CSS di sinistra e top appropriati per simulare l'effetto.
Ecco il codice in questione, con un paio di pezzi inutili rimossi:
html
<div id="viewport">
<img id="map" src="http://dl.dropbox.com/u/107346/share/fake-map.png" alt="" />
</div>
<div id="zoom-control"></div>
javascript
$('#zoom-control').slider({
min: 300,
max: 1020,
value: 300,
step: 24,
slide: function(event, ui) {
var old_width = $('#map').width();
var new_width = ui.value;
var width_change = new_width - old_width;
$('#map').css({
width: new_width,
// this is where I'm stuck...
// dividing by 2 makes the map zoom
// from the center, but if I've panned
// the map to a different location I'd
// like that reference point to change.
// So instead of zooming relative to
// the map image center point, it would
// appear to zoom relative to the center
// of the viewport.
left: "-=" + (width_change/2),
top: "-=" + (width_change/2)
});
}
});
Ecco il progetto JSFiddle: http://jsfiddle.net/christiannaths/W4seR/
Brillante! Grazie :) – Christian