2012-04-30 7 views
6

Ho una pagina in cui ho una ruota di elementi <div>, l'intera ruota ruota quando si fa clic su un pulsante.Usa trasformazioni CSS o javascript per ridimensionare un elemento per adattarlo dinamicamente al suo genitore

Ottengo questo effetto utilizzando le trasformazioni CSS, che sono di natura assoluta. Tuttavia la ruota è molto grande, sembra bella sul mio display HD, ma gli schermi più piccoli hanno i bordi tagliati. Non posso usare% width come avrei potuto con un layout normale, ciò di cui ho bisogno è ridimensionare l'intera pagina nello stesso modo in cui funzionano le funzioni di zoom della maggior parte dei browser.

Per quanto mi riguarda so che ctr + mouseWheel rimpicciolirà la pagina in modo da poter vedere l'intera pagina, tuttavia non posso pretendere che altri lo facciano.

So che posso utilizzare -browser-transform: scale(amt); su un div wrapper per ottenere l'effetto desiderato, tuttavia non riesco a trovare un modo per farlo dinamicamente. Se imposto la scala su .5 sarà .5, indipendentemente dallo schermo. Voglio che i bordi della ruota siano a pochi pixel dai bordi dello schermo su QUALSIASI schermo. So che le query sui media potrebbero essere utilizzate per aiutare il problema, ma mi lascerebbero con risultati non ideali o richiedere troppe query diverse. Ci deve essere un modo per modificare -browser-transform: scale(amt); a livello di programmazione o un altro modo per avere un controllo finito.

Qualche idea?

+0

Bene, ho avuto l'erba su questo. Nessuno ha un indizio? – zeel

+0

Avete dimensioni assolute per (parti della) ruota? Aiuta se aggiungi un piccolo esempio di lavoro nella domanda, è un po 'difficile immaginare come si presenta il tuo codice. - In ogni caso, nel modo in cui l'ho letto, se hai una dimensione della ruota fissa e una dimensione del browser fissa (ma non in vista) hai bisogno di JavaScript per determinare la scala. – Jeroen

+0

Stai dicendo che vuoi calcolare 'amt' in base alla dimensione del viewport? –

risposta

0

Hai provato a utilizzare le query multimediali in css per scegliere come target diversi schermi. per esempio, hai una query multimediale nel tuo file css che afferma che con una larghezza di 320 - 480 pixel, il div contenente questa ruota viene ridimensionato al 50%. Quindi a 481-768 pixel, il contenitore div è ridimensionato al 75%. e da 769 pixel in su, il div è ridimensionato al 100%.

Ciò dovrebbe aiutarti a realizzare il ridimensionamento dinamico desiderato con schermi di dimensioni diverse. Se desideri una demo, sarò lieto di farti vedere da un jsfiddle.

+0

Mentre funzionerebbe tecnicamente, avrei bisogno di molte query multimediali per tenere conto di una vasta gamma di dimensioni dello schermo, pur mantenendo l'aspetto entro le deviazioni accettabili. E ricorda che non tutti sono visualizzati con il browser che riempie lo schermo, il numero di dimensioni possibili è molto ampio. In breve, troppa ridondanza, le query sui media non sono una soluzione elegante. – zeel

+0

non necessariamente, per esempio, lo screening split di un monitor 1920x1080 lo porta a 1920x540, che sarebbe nell'intervallo di (larghezza minima: 481 px) e (larghezza massima: 768 px). Se usi intervalli, non ne hai bisogno. Innanzitutto, inizia con un sito di base per una settimana o giù di lì con Google Analytics, vedi quali risoluzioni le persone visitano il sito e progettale principalmente per loro.O se non vuoi aspettare, progetta per i più comuni come 320x480, 800x480, 960x640, 1024x768, 1600x900, 1920x1080. E non dimenticare che non è tanto un lavoro di simulazione e scrittura di un nuovo decimale per ogni dimensione dello schermo. –

+0

Voglio farti un jsfiddle facendo questo per te, hai in mente delle dimensioni diverse da quelle che ho elencato sopra nella mia risposta e nel mio commento prima del tuo? E hai un violino con la ruota già creata? –