2013-04-30 18 views
14

Piszę CSS już od jakiegoś czasu.CSS relative + right (lub bottom) prawie NIGDY nie pracuję

Zauważyłem, że

<div style="position: relative; right: 20%; bottom: 20%;">some text</div> 

nie działa!

pozycjonowanie względne będzie działać z określonym lewym i górnym, ale nie prawym/dolnym. Dlaczego?

Szybka naprawa polega na użyciu "bezwzględnego" zamiast tego i określenia prawej/dolnej w pikselach, ale potrzebuję powodu.

Popraw mnie, jeśli się mylę. Niezależnie od tego, czy pojemnik zewnętrzny jest ustawiony absolutnie czy względnie, czy nie ma większego sensu umieszczanie czegoś "względnego" względem granic tego kontenera, czy też elementy wewnątrz kontenera zawsze powinny być ustawione "absolutnie"?

Dziękuję.

+0

Kiedy mówisz, że ta funkcja „nie działa”, co dokładnie masz na myśli? Jest na to wiele różnych znaczeń. Aby pomóc w zrozumieniu problemu przez innych użytkowników, spróbuj dodać jakiś kod lub [jsFiddle] (http://jsfiddle.net), aby pomóc. –

Odpowiedz

13

Z Absolute vs. Relative - Explaining CSS Positioning

pozycjonowania względnego wykorzystuje te same cztery miejsca pozycjonujące bezwzględne pozycjonowania. Ale zamiast oprzeć położenie elementu na porcie widoku przeglądarki, zaczyna się od miejsca, w którym element byłby, gdyby był nadal w normalnym przepływie.
+2

Tak, z prawej: 40 pikseli; jest prawie taki sam jak lewy margines: -40px; w takim razie wtedy? To po prostu dziwne ... –

+1

Różnica tam, @TomAuger jest właściwością 'position', która musiałaby zostać przypisana do elementu _parent_ w celu wpłynięcia na tę zmianę. Pomyśl o tym w kategoriach ** push ** vs ** pull **: 'right: 40px;' znaczy, że element parent będzie potrzebował 'position: relative;' a element będzie ** pushed ** 40 px do po lewej od normalnej prawej krawędzi ograniczającej. Jeśli jednak model pudełkowy zostanie zwinięty, może to nie dać zamierzonego renderowania ekranu. Zamiast tego "margin-left: -40px;' ** ściąga ** element z lewej krawędzi granicznej, a element rodzica może zachować swoją domyślną własność 'position: static;'. – oomlaut

8

Pozycjonowanie względne działa z dolnych/właściwych wartości, po prostu nie tak, jak się spodziewaliśmy:

http://cssdesk.com/RX24j

Pomyśl o wartości pozycji na elementach względnych jak marginesie, że sąsiednie elementy po prostu zignorować. "Marginesy" zawsze przesuwają element w stosunku do jego poprzedniej pozycji w normalnym obiegu dokumentów, ale usuwają je z normalnego przepływu w tym samym czasie.

Podczas normalnego obiegu dokumentów otaczające elementy zachowują się tak, jakby znajdowały się w pierwotnej pozycji w normalnym przepływie ... ale tak nie jest. To dlatego element względny może nakładać się na jego rodzic (jak w Rel 1).

1

Czy próbowałeś tego?

<div style="position: relative; right: -20%; bottom: -20%;">some text</div> 

czy raczej

<div style="position: relative; right: -80%; bottom: -80%;">some text</div> 
Powiązane problemy