2013-04-01 9 views
5

Ho un div che voglio posizionare al 10% sotto l'inizio della pagina. Se io uso questa regola CSS:Come impostare il margine dell'elemento HTML usando la percentuale di altezza della pagina?

#div-block{ 
    margin-top: 10%; 
} 

computerizzata margin-top del div è di circa 192px (la mia risoluzione dello schermo è 1920 x 1080) in modo che tutti i browser che ho provato si utilizza la larghezza della pagina (invece di altezza) per il calcolo del valore.

Come posso fare per farle calcolare usando l'altezza (supponiamo 1080px) usando solo CSS?

+1

Perché non "in alto: 10%'? – dfsq

risposta

10

Utilizzando la larghezza per calcolare la percentuale è un comportamento corretto. Non è possibile impostare un margine in base a una percentuale dell'altezza.

Una possibilità è impostare position: absolute; top 10% sull'elemento o utilizzare JavaScript.

http://jsfiddle.net/g8Re6/

+0

.. per non parlare del fatto che l'uso di 'top' è un modo naturale per impostare la prima posizione. – dfsq

+0

Grazie per aver risposto. E conosci qualche modo per cambiare questo comportamento? –

+0

@NicoRodsevich Intendi questo comportamento? http://www.w3.org/TR/CSS2/box.html#margin-properties –

3

La percentuale viene ricavata dall'elemento in cui è avvolto il div. È possibile invece utilizzare javascript o jQuery per impostare l'altezza del div in proporzione all'altezza della pagina.

$(window).height(); // returns height of browser viewport 

$(document).height(); // returns height of HTML document 

Così si farebbe

var documentHeight = $(document).height(); 
var percentageHeight = documentHeight * .1; 

$("#div-block").height(percentageHeight); 
+0

Serbatoi che funzionano, ma mi chiedo se c'è un modo solo per CSS per fare questo –

+0

Non senza impostare il posizionamento assoluto - che disprezzo personalmente :) –

+0

Sì, lo disprezzo anche io, ma beh, sono appena cambiato la mia mente, questo è il modo corretto di farlo, quindi ... –

Problemi correlati