2012-11-05 10 views
13

Próbuję utworzyć pionowo ustawioną wartość procentową DIV. Mam kontener nadrzędny, aby ustawić wartość względną, a element div ustawiony na wartość bezwzględną. Działa to dobrze, kiedy położenie zawartości div z pikseli, ale gdy próbuję procenty procenty są brane pod uwagę:Względny element nadrzędny, pozycjonowanie bezwzględne w pionie w procentach?

.container { 
position: relative; 
} 


.content { 
position: absolute; 
left: 10%; 
top: 50%; 
} 


<div class="container"><div class="content"> This is the content div. It should be 10% from the left of the container div. 
</div></div> 

Zawartość div pojawia się w górnej części strony, z pominięciem 50% w pionie miejsca. czego mi brakuje? Z góry dziękuję!

Odpowiedz

19

Pozycjonowany element jest wyjęty z naturalnego przepływu dokumentu, co oznacza, że ​​pojemnik ma zerową wysokość i szerokość.

10% i 50% tej zerowej wysokości i szerokości wynosi, oczywiście, zero.

Jeśli podasz kontenerowi wysokość i szerokość, Twoje procentowe pozycje zaczną działać tak, jak chcesz.

Here is a working example.

.container { position: relative; width:500px; height:500px; } 
+0

Działa jak urok! Dzięki wielkie! Ale jeśli chcę mieć ciekły układ i ustawić wysokość i szerokość kontenera na procenty, które nie działają. Co tam złapie? – user1801221

+0

Musisz zapytać, jakie są twoje wartości procentowe. W tym przypadku prawdopodobnie będą one relatywne do ciała i jeśli ciało nie ma ustawionej szerokości ani wysokości i nie rozszerza się, aby dopasować się do jego treści, to znów mamy do czynienia z x% zera. Oto przykładowy przykład: http://jsfiddle.net/CjC4W/1/ –

+0

Dziękuję. Bardzo pomocne! – user1801221

1

Najprawdopodobniej trzeba dodać height: 100% do .container div:

.container { height: 100%; position: relative; } 

i ewentualnie wszystkie elementy przodka

html, body { height: 100%; } 
+1

Dzięki za cynk - niestety to nie zadziałało. Czy jest tu podstawowa koncepcja, której tu brakuje, tak jak nie możesz w pionie pozycjonować divów przez procent z AP wewnątrz względnego rodzica? – user1801221

+0

@ user1801221 Nie, nie sądzę. Ta koncepcja jest w porządku. Jamie Dixon działa. Zgaduję, że masz gdzieś element, który powoduje, że twój '.container' nie ma takiej wysokości, na jakiej chcesz. –

1

odpowiedź @Jaime Dixona był wielki. Piękne, dwie świetne koncepcje tam podane.

  1. Procent, jednostki względne odnoszą się do czegoś, trzeba zrozumieć, co jest pojemnik odniesienia, do którego te wartości zostały obliczone.

  2. Nawet jeśli masz pojemnik, MOŻNA zachowywać się arbitralnie, jeśli pojemnik ma wymiary "auto". Aby mieć przewidywalne zachowanie, upewnij się, że kontener ma wymiar lepszy niż zwykłe "auto". OR, jeśli pojemnik posiada również 100%, a jego rodziców i tak dalej, upewnij się, że masz instrukcję css, w którym masz określoną wysokość html elementów, ciała:

przykład:

html, body { 
    height: desired_value; 
} 
8

Welp, mój pierwszy wpis w SE. Dla tych, którzy zobaczą to w przyszłości, możesz faktycznie użyć wysokości widoczności jako miary procentowej.

.container { 
    position: relative; 
    top: 10vh; // 10% of height from top of div 
} 
Powiązane problemy