2013-07-22 12 views
16

Voglio zoomare solo un elemento specifico del mio sito web (un certo div), se un utente ingrandisce il sito web su un dispositivo mobile. La figura seguente mostra la mia idea:Elemento zoom specifico su webcontent (HTML, CSS, JavaScript)

enter image description here

Come si può vedere, il test è ingrandito, ma il div superiore rimane la stessa dimensione; solo il div che contiene test viene ingrandito/ridimensionato.

Qualcuno potrebbe darmi qualche consiglio su come raggiungere questo obiettivo? Non so davvero da dove cominciare.

AGGIORNAMENTO: http://jsfiddle.net/WyqSf/. se eseguissi lo zoom su questa pagina, ridimensionerebbe entrambi gli elementi. Voglio regolare solo l'elemento di contenuto durante lo zoom. Un modo in cui posso pensare di ottenere questo è recuperare l'input dell'utente e usare javascript per regolare la larghezza del div, ma questo è in contraddizione con il solito comportamento.

pseudo-codice:

container.mousemove { 
    content.changeWidth();.. 
} 
+0

incollare alcuni di voi codice o un violino. Senza codice non possiamo aiutare molto. Usa CSS. – AnaMaria

+0

per i principianti, consulta questo http://stackoverflow.com/questions/4049342/how-can-i-zoom-a-div-in-firefox-and-opera –

+1

@sunny. Non sta cercando di ingrandire l'intero sito. sta cercando di ingrandire solo la parte del testo ... – AnaMaria

risposta

12

Per fare questo, si avrebbe bisogno di risolvere viewport dell'utente in modo che non possano pizzicare ingrandire l' pagina e quindi utilizzare una libreria di eventi tocco come Hammer.js per allegare una richiamata al gesto di zoom a pizzico che ridimensiona opportunamente l'elemento sulla pagina che si desidera ridimensionare.

fissaggio viewport accade nella testa del vostro elemento HTML:

<meta name="viewport" content="width=device-width, maximum-scale=1.0"> 

si usa hammer.js per rilevare un gesto "pinch zoom", e la libreria ti dà un oggetto molto dettagliata event.gesture che è possibile utilizzare per rilevare quanto/quanto velocemente l'utente sta eseguendo lo zoom.

Il cambio di distanza tra i 2 punti di contatto durante la presa è rappresentato da event.gesture.scale (see hammer documentation), se la scala aumenta, aumentare il testo di conseguenza ... se diminuisce diminuisce la dimensione del testo. Uso la matematica:

$('body').hammer().on("pinch", function(event) { 
    console.log(event.gesture.scale); 
    // do math... 
}); 

Immagino che l'idea ...

+0

Grazie per la risposta. Daremo un'occhiata alla biblioteca suggerita. Ti darò i 50 punti perché la tua risposta mi sembra abbastanza solida. – Bram

+2

Si noti che con la nuova versione di HammerJS (almeno 2.0.4) l'oggetto evento ha membri diversi e mancherà il membro "gesture". Invece, è possibile utilizzare event.scale per le nuove versioni di HammerJS.Controlla il riferimento API per il layout completo dell'oggetto evento: http://hammerjs.github.io/api/ – kvdv

0

Si potrebbe utilizzare il plugin Zoomooz. All'interno della documentazione, controllare la sezione Zooming inside a container - questo è quello che potrebbe essere necessario:

<div class="zoomViewport"> 
    <div class="zoomContainer"> 
     <div class="zoomTarget">Target 1</div> 
     <div class="zoomTarget">Target 2</div> 
    </div> 
</div> 

Check the JS Fiddle

+0

JSFiddle non funziona come previsto sui dispositivi mobili (non possiamo usare il pizzico per ingrandire). – Basj