2013-02-28 6 views
10

Czytałem, że <html> i <body> są elementami blokowymi, podobnie jak <div> i <p>.<HTML> i <BODY>: Dlaczego nie ma nowych linii?

Rozumiem, że elementy poziomu bloku rozpoczynają nową linię.

Na przykład aaa<div>b</div>ccc wygląda następująco:

aaa 
b 
ccc 

Więc dlaczego nie <html> i <body> dodać dwie linie do góry strony html?

+0

Po prostu definiują tagi, tak naprawdę nie umieszczają treści w dowolnym miejscu. –

Odpowiedz

15

Elementy poziomu bloku nie "rozpoczynają nowych linii" ... po prostu rozszerzają się na obie strony w nieskończoność, aż trafią element pojemnika lub boki wyświetlacza (width:100%) ... z tego powodu mają one efekt "wypychania" jakiejkolwiek innej zawartości poniżej ich poziomu lub upuszczania pod dowolną zawartością liniową, która bezpośrednio je poprzedza. Oznacza to również, że elementy blokowe będą tylko "wypychać" elementy rodzeństwa.

<html> i <body> elementy nie mają rodzeństwa, tylko dzieci, więc nie muszą niczego przesuwać.

Oto graficzne przedstawienie tego, co się dzieje: enter image description here

Biorąc pod uwagę to markup:

<html> 
<head></head> 
<body> 
    <div>&nbsp;</div> 
    <div>&nbsp;</div> 
    <div style='width:45%; float:left;'> 
    <div>&nbsp;</div> 
    </div> 
    <div style='width:45%; float:left;'>&nbsp;</div> 
</div> 
</body> 
</html> 
+3

+1 dla reprezentacji graficznej! :) – SuperSaiyan

+0

Ładna grafika! (więcej znaków) –

+0

Niesamowita odpowiedź. Dzięki, myślę, że teraz rozumiem. Tak więc domyślnie elementy poziomu bloku są ustawione na 100% szerokości, dlatego przesuwają się, a wszystko po nim, w dół? chyba że zmienisz szerokość? – Lebowski156

2

myśleć o tym w ten sposób:

<div> 
    <div>Text</div> 
</div> 

Jest tylko jedna linia tekstu:

Tekst

To tak jak przypadku gdy masz tekst w organizmie:

<html> 
    <body>Text</body> 
</html> 

Gdy tekst jest w elemencie dziecięcej, żadne nowe linie są wprowadzone.

0

Są to elementy blokowe, które definiują stronę. Przeglądarki kontrolują sposób, w jaki chcą je wyświetlać. Możesz znaleźć straszną przeglądarkę, która wyświetla <body> przez dodanie nowej linii (jest to możliwe). Jednak głównym celem jest uwzględnienie znaczników <body> i <html> jako znaczników wyświetlających wszystko na ekranie. chciałbym również dodać, że można użyć znacznika celu dopasowania do ekranu przeglądarki całkowicie za pomocą

body {padding:0;margin:0;} 

nadzieję, że to pomaga.

0

Domyślnie elementy poziomu bloku (np. Gdy CSS nie jest używane do zmiany tego) implikują podziały linii przed i po. Nie oznaczają one pustych linii.

Tak więc, gdy masz <div>foo</div>, "foo" pojawia się na początku nowej linii, a także i jest wierszem, tj. Dowolnym tekstem po nim w kolejnym wierszu.Ale to nie oznacza tworzenia pustych linii. Jeśli masz <div>foo</div><div>bar</div>, to "foo" i "bar" pojawiają się na kolejnych liniach, bez żadnej pustej linii między nimi.

Element html jako taki nie generuje widocznej treści; wyświetlany jest tylko element body w środku. Zawartość body rozpoczyna się od początku strony, która zaczyna się od nowej linii. To, czy istnieje znacznik, jest nieistotne; zawsze jest element body, który rozpoczyna się w pierwszym wierszu.

+0

"Element html jako taki nie generuje widocznej treści, pokazany jest tylko jej element body". Zobacz http://jsfiddle.net/NxSm6/ – Alohci