2012-04-09 15 views
30

Ho una specie di domanda strana. Nella mia pagina ho un'immagine principale di un pianeta in una nebulosa pesante. L'ho impostato in modo che la larghezza minima sia 1000px e max è 1500px. I lati si affievoliscono e questo sembra ottimo con gli schermi più grandi. Quello che mi piacerebbe provare a fare è quando lo guardi su un dispositivo mobile per esempio e sta tagliando la larghezza a 1000 pixel, mi piacerebbe che l'immagine dicesse 1300 pixel di larghezza, centrato e 150 pixel sia tagliato da ogni lato in modo che non si possa vedere la dissolvenza, ma è ancora possibile ingrandire la larghezza della finestra diventa più grande, come un grande iMac e che svanisce poi diventa nuovamente visibile una volta superata la larghezza di 1300 pixel.div di dimensionamento in base alla larghezza della finestra

Il mio primo pensiero era di fare qualcosa con margini negativi su entrambi i lati, ma non riuscivo a farlo funzionare mantenendo le larghezze massime e mixate.

Questa è la specifica sezione di codice della pagina, anche se html e css sono proprio lì per essere visti da tutti, basta usare il comando fine per trovare quell'ID div per ulteriori ricerche.

<div style="position:relative;width:100%;"> 
    <div id="help" style=" 
     position:relative; 
     z-index:1; 
     height:100%; 
     min-width: 1000px; 
     max-width: 1500px; 
     margin: 0 auto; 
    "> 
     <img src="http://i.stack.imgur.com/tFshX.jpg" border="0" style="width:100%;"> 
    </div> 
</div> 

Ogni pensiero su questo, è molto vicino a lavorare come mi piacerebbe che, ha solo bisogno di un piccolo ritocco.

+0

cosa succede se si mette l'immagine come sfondo del div e fare il suo background-position per centrare? – szajmon

+1

+1 - bel sito, e domanda delicata – Alain

+0

haha ​​grazie, contento che ti piaccia il sito, dopo questo è solo questione di implementare il contenuto. A proposito di farlo come sfondo, non sono sicuro di come questo cambierebbe qualcosa dato che è ancora il div che sta ridimensionando. Immagino che la domanda sia, puoi chiedere una modifica in css in base alla larghezza della finestra? – loriensleafs

risposta

9

Suona come avete bisogno di un web design reattivo:

http://www.alistapart.com/articles/responsive-web-design/

Usando queste tecniche, è possibile creare regole CSS personalizzato che colpiscono le schermate di Just Mobile dimensioni.

+0

Questo è un buon modo per andare. Potrebbe valere la pena guardare attraverso il codice sorgente di css skeleton, anche se non è necessario toccarne la maggior parte; in entrambi i file base.css o skeleton.css ci sono esempi su come rendere certi stili solo quando lo schermo è piccolo: http://www.getskeleton.com/ – AlexMA

+0

hmm, quindi questo particolare problema non è limitato ai dispositivi mobili , è un problema di larghezza che si verifica anche in una finestra del browser di questa dimensione. – loriensleafs

+0

... Probabilmente avrei dovuto leggere oltre in questo articolo prima di scrivere questo, fammi vedere se questo ha quello che serve, sembra che potrebbe – loriensleafs

4

Prova posizionamento assoluto:

<div style="position:relative;width:100%;"> 
    <div id="help" style=" 
    position:absolute; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
    z-index:1;"> 
     <img src="/portfolio/space_1_header.png" border="0" style="width:100%;"> 
    </div> 
</div> 
+0

hmm in modo che funzioni in termini di adattamento in uno schermo largo 1000 pixel. Ma è possibile avere l'immagine in modo che quando è una finestra di 1000 pixel o meno l'overflow sia nascosto, ma non solo su un lato, su entrambi i lati allo stesso modo, ma mantenere comunque la possibilità di avere una larghezza massima di 1500 pixel? – loriensleafs

5

Un buon trucco è usare noi box-shadow interno e lasciare che faccia tutto lo sbiadimento per te piuttosto che applicarlo all'immagine.

+0

funziona con la maschera del webkit? Una buona idea per il mascheramento, potrebbe funzionare bene con l'idea di kingjeffrey in alto per la parte di ridimensionamento. – loriensleafs

5

Live Demo

Ecco un effettiva attuazione di quello che hai descritto. Ho riscritto il tuo codice un po 'usando le ultime best practice per attualizzarlo. Se ridimensionate le finestre del vostro browser sotto 1000px, i lati sinistro e destro dell'immagine verranno ritagliati usando margini negativi e sarà 300px più stretto. unità

<style> 
    .container { 
     position: relative; 
     width: 100%; 
    } 

    .bg { 
     position:relative; 
     z-index: 1; 
     height: 100%; 
     min-width: 1000px; 
     max-width: 1500px; 
     margin: 0 auto; 
    } 

    .nebula { 
     width: 100%; 
    } 

    @media screen and (max-width: 1000px) { 
     .nebula { 
     width: 100%; 
     overflow: hidden; 
     margin: 0 -150px 0 -150px; 
     } 
    } 
</style> 

<div class="container"> 
    <div class="bg"> 
     <img src="http://i.stack.imgur.com/tFshX.jpg" class="nebula"> 
    </div> 
</div> 
54

viewport per CSS

vw, vh 1vw = 1% of viewport width 1vh = 1% of viewport height

In questo modo, non c'è bisogno di scrivere molti diversi media query o javascript. Basta notare per i nuovi arrivati.

Se preferite JS

window.innerWidth; window.innerHeight;

+0

FYI, 'vw',' vh' non sono supportati Kunal

+0

@Kunal ringraziamenti. Inoltre non è supportato sulla bussola. – atilkan

+2

(almeno in Chrome) questa non è una percentuale della * larghezza * della finestra, ma della larghezza * dello schermo *. Le finestre sono ridimensionate. Le dimensioni dello schermo rimangono statiche ... –

Problemi correlati