2011-07-19 15 views
5

Podzielam ekran z wieloma div, więc przyklejają się jeden do drugiego (powiedzmy, coś w rodzaju szachownicy, ale z polami o różnych rozmiarach). Ustawiłem heigth i width używając procenta (względem kontenera nadrzędnego).Wewnętrzna granica css, zepsuty układ

Teraz, kiedy dodać border: 1px do div, wszystkie przerwy układ ... Wyobrażam sobie, że granica dodaje 1px z każdej strony, a rozwiązaniem byłoby dodać kilka wewnętrznego granicy. Czy mogę w jakiś sposób dodać taką wewnętrzną granicę?

Odpowiedz

13

Można użyć box-sizing: border-box, aby utworzyć szerokość krawędzi elementu width elementu.

.example { 
    -webkit-box-sizing: border-box; 
     -moz-box-sizing: border-box; 
      box-sizing: border-box; 
} 

Browser support.

+0

/* Zapominasz -ms dla IE */ \t \t \t -moz-box-sizing: border-box; -webkit-box-sizing: border-box; -ms-box-sizing: border-box; box-sizing: border-box; –

+0

@EmilioYero: Nie, nie zrobiłem tego. Spójrz na link "obsługa przeglądarki" pod koniec mojej odpowiedzi. IE7 w ogóle go nie obsługuje, podczas gdy IE8 i wyższe obsługują go bez prefiksu dostawcy. – thirtydot

5

Użyj właściwości konturu. W przeciwieństwie do właściwości granicy nie "dodaje" do wysokości ani szerokości elementów. Jednak także w odróżnieniu od własności granicznej nie można mieć lewej, prawej, dolnej lub lewej poszczególnych właściwości. Chociaż możesz mieć właściwości stylu konspektu, szerokości obrysu i koloru obrysu.

Outline Refrence

+0

Jak to działa we wszystkich przeglądarkach chociaż? – Phil

+0

@Phil: Nie jestem pewien, ale myślę, że właściwość outline jest dobrze obsługiwana nawet w starszych przeglądarkach. Jestem gotów sprostować. – Jawad

+0

Obsługa przeglądarki: http://reference.sitepoint.com/css/outline#compatibilitysection – thirtydot

1

można zmniejszyć procenty 0.5 czyniąc je 49.5% EDIT: Początku nie będzie działać, dzięki @thirty

+0

'outset' nic nie zmieni. – thirtydot

0

powiedzmy, jeśli masz div nadrzędnej i wiele div potomnych. Gdy ustawisz wysokość i szerokość jako wartości procentowe, sprawisz, że będą się ze sobą trzymały. Następnie, dodając border:1px, ich szerokość będzie dłuższa niż poprzednio. Aby rozwiązać ten problem, powiedziałbym, że powinieneś mieć another div after the parent div, aby zapobiec zmianie rozmiaru.

+1

Nie mam pojęcia, jak to rozwiązałoby problem! – Jawad

+0

@Jawad: spróbuj usunąć "dopełnienie" i "margines", a następnie zawiąże wszystkie elementy div razem. –