2012-02-22 17 views
5

Zasadniczo mam div, który chcę na 100% szerokości. Jednak chcę również, żeby miała trochę wyściółki. Ale kiedy dodaję dopełnienie, szerokość zostanie do niego dodana, co oznacza, że ​​mój div teraz zniknie z ekranu i pojawi się poziomy pasek przewijania.Ustawienie szerokości obicia/marginesu?

Zazwyczaj kompensuję, po prostu zmniejszając wartość div (np. 95% lub 90%).

Zastanawiam się, czy istnieją bardziej eleganckie sposoby radzenia sobie z tą sytuacją?

Odpowiedz

3

Spróbuj ustawić dopełnienie do 5% i szerokości do 90% (100-5x2)

9

Spójrz na box-sizing.

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

Domyślnie szerokość elementu jest obliczana w odniesieniu do jego pola zawartości. Tak więc do szerokości dodawana jest nakładka. Jeśli zmienisz model skrzynki na border-box, dopełnienie zostanie uwzględnione w szerokości. Dla kompatybilności spojrzeć caniuse.com

+0

Interesujące. Po prostu obserwacja nie wydaje się mieć nic na margines. – Johannes

+0

Myślę, że margines jest uważany poza elementem, a zatem nie jest częścią żadnego modelu pudełkowego. – Sirko

+1

Nie odbierać Vijay, ale myślę, że jest to uniwersalna odpowiedź, szczególnie, gdy nie wiesz, ile komórek będzie w tabelach. – Shane

0

Istnieją cztery główne rzeczy polegają w CSS Box Model. i) Margines ii) Border iii) Dopełnienie iv) Zawartość

Kiedy szerokość ustawiona wtedy jesteśmy w zasadzie ustawiania szerokości treści więc dodanie wyściółka oznacza ogólny wzrost o szerokości.

Proszę przejść przez następujące zasoby, a dowiesz się wszystkiego.

http://www.w3.org/TR/CSS2/box.html

http://css-tricks.com/the-css-box-model/

I można obsłużyć tę sytuację za pomocą% lub nawet jeśli obliczenia px szerokości poprawnie jeśli również ustawić granicę lub nawet chcesz ustawić marginesy.

element{ 
    width: 96%; 
    padding: 0 2%; 
} 
0

Domyślnie div jest width: auto który (przy założeniu normalnego pozycjonowania, wyświetlacz i brak pływającej) spowoduje to, aby wypełnić opakowanie (stanowiących marże, padding i border).

Po prostu zostaw to na width: auto zamiast ustawiać jawną lub procentową szerokość.

+0

Działa to tylko dla elementów o domyślnej wartości 100%, takich jak 'div's. Nie można zrobić tego samego dla innych elementów, takich jak "input" lub cokolwiek, co nie jest domyślnie rozszerzane do 100%. –

+0

Ponieważ pytanie odnosi się do elementów div wielokrotnie, to nie jest problem. – Quentin

Powiązane problemy