2013-04-01 16 views
5

Mam div, który chcę ustawić na 10% poniżej początku strony. Jeśli używam tej reguły CSS:Jak ustawić margines elementu HTML za pomocą procentu wysokości strony?

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

div obliczone margin-top jest około 192px (moja rozdzielczość ekranu wynosi 1920 x 1080), więc wszystkie przeglądarki I testowane są przy użyciu szerokość stronie (zamiast wysokości) do obliczania wartość.

Jak zrobić, aby obliczyć za pomocą wysokości (załóżmy 1080px) używając tylko CSS?

+1

Dlaczego nie 'top: 10%'? – dfsq

Odpowiedz

10

Korzystanie szerokość do obliczenia odsetek jest poprawne zachowanie. Nie można ustawić marginesu na podstawie procentowej wysokości.

Jedną z możliwości jest ustawienie position: absolute; top 10% na elemencie lub użycie JavaScript.

http://jsfiddle.net/g8Re6/

+0

.. nie wspominając, że używanie 'top' jest naturalnym sposobem ustawiania najwyższej pozycji. – dfsq

+0

Dzięki za odpowiedź. Czy znasz jakiś sposób, aby zmienić to zachowanie? –

+0

@NicoRodsevich Masz na myśli to zachowanie? http://www.w3.org/TR/CSS2/box.html#margin-properties –

3

Procent jest brany z elementu, który jest zawijany w div. Zamiast tego możesz użyć javascript lub jQuery, aby ustawić wysokość div proporcjonalnie do wysokości strony.

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

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

Więc zrobiłbyś

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

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

Zbiorniki, które działają, ale zastanawiam się, czy istnieje sposób, aby to zrobić tylko CSS –

+0

Nie bez ustawienia pozycjonowania bezwzględnego - którym osobiście gardzę :) –

+0

Tak, też go gardzę, ale cóż, po prostu się zmieniłem mój umysł, to jest właściwy sposób robienia tego, więc ... –

Powiązane problemy