HTML и CSS за начинаещи

HTML & CSS за начинаещи (Част 36): Моделът на кутията

Всички видеоклипове от урока HTML и CSS за начинаещи

В CSS елементите основно се третират като правоъгълни кутии или ленти. За описание на кутиите се използват следните свойства – които вече сигурно познавате:

width – широчина на елемента
height – височина на елемента
left – отстояние отляво
right – отстояние отдясно
top – отстояние отгоре
bottom – отстояние отдолу
margin – външен отстъп
border – рамка около елемента
padding – вътрешен отстъп, с други думи отстояние от рамката до съдържанието на елемента

Тези свойства вече бяха представени.

Общата широчина на елемент се събира от широчината на всеки отделен аргумент. (Същото важи също и за височината).

Пример:

div#box {
   width: 100px;
   padding: 20px;     /* по 20px отляво и отдясно */
   border: 2px solid; /* по 2px отляво и отдясно */
   margin: 0 30px;    /* по 30px отляво и отдясно */
 }

Каква е ширината на тази област div? Нека се запознаем с отделните стойности:

• 100 пиксела

• 2 пъти по 20 пиксела

• 2 пъти по 2 пиксела

• 2 пъти по 30 пиксела

Това дава обща широчина на елемента от 204 пиксела.

Ширината и височината на елементите се определят чрез width и height. Ако тези стойности не са ясно посочени в таблицата ви, важи следното:

• Ако липсва width, кутията ще бъде широка колкото околният елемент.

• Ако липсва height, елементът ще бъде висок колкото съдържанието му.

Пример:

<!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
 <title>PSD-Tutorials.de</title>
 <style>
 div#box {
    border: 1px solid; /* по 2px отляво и отдясно */
    margin: 0 30px;    /* по 30px отляво и отдясно */
    background-color:#6600CC;
 }
 </style>
 </head>
 <body>
 <div id="box">PSD-Tutorials.de</div>
 </body>
 </html>



В браузъра това изглежда по следния начин:

HTML & CSS за начинаещи (Част 36): Моделът на кутията



Надгорният елемент на елемента div е body. Следователно елементът се показва точно колкото широк елементът body. За височината се ориентира към съдържанието си.

Всичко на нула

Всеки браузър има вграден стил. В тези стилове са дефинирани някои стандартни стойности. Това важи например и за padding и margin. За съжаление, тези стандартни стойности варират в различните браузъри. Този аспект затруднява постигането на идентични резултати в различните браузъри, по отношение на Box модела. Затова е препоръчително да нулирате отстъпите, които са предварително зададени в браузъра. Това може да се направи по следния начин:

* { padding: 0; margin: 0; }



Добавете този ред в началото на вашия стил. По този начин може да започнете да поставяте кутиите на желаните места.

Типове кутии

Как елементът накрая ще се покаже и как ще повлияе на други елементи зависи от типа на елемента. Фактически CSS спецификацията разграничава между Блок елементи и Inline елементи. (Всъщност има и други типове, които обаче не се споменават тук, защото играят подчинена роля).

Блок елементите винаги създават нов ред. Следващите елементи също започват в нов ред. Типични блок елементи са например p, div, h1, ul и т.н. За тези елементи важат предишните обяснени външен отстъп, вътрешен отстъп, височина, широчина и рамка.

<h1>Digital Painting & Matte Painting: Bildaufbau definieren</h1>
<p>Modul 2 - Teil 2: Ein Bild ist immer ein Ganzes. Jedoch muss man sich immer überlegen, wo der Betrachter als Erstes hinsehen sollte.</p>

При поглед във браузъра, видяхме, че h1 и p създават отделни редове.

HTML & CSS за начинаещи (Част 36): Моделът на кутията



Inline елементите, от своя страна, не създават собствен абзац, а се показват в нормалния текстов поток. Типични инлайн елементи са span, em, strong, img, br и т.н. За инлайн елементите няма вертикален външен отстъп и няма зададени широчини и височини.

<h1><em>Digital Painting & Matte Painting</em>: Bildaufbau definieren</h1>

<p>Modul 2 - Teil zwei: <strong>Ein Bild ist immer ein Ganzes</strong>. Jedoch muss man sich immer überlegen, wo der Betrachter als Erstes hinsehen sollte.</p>

И тук един поглед към резултата:

HTML и CSS за начинаещи (Част 36): Моделът на кутиите



Сега вече можете да правите елементи, които по същество са блокови елементи, инлайн елементи.

<!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
 <title>PSD-Tutorials.de</title>
 <style>
 h1 {
 background-color:#00CCFF;
 }
 </style>
 </head>
 <body>
 <h1>Digital Painting & Matte Painting</h1>
 <p>Модул 2 - Част 2: <em>Една картина винаги е цяло</em>. Винаги обаче трябва да се премисли къде първо трябва да погледне зрителят.</p>
 </body>
 </html>

Вижте резултата в браузъра.

HTML & CSS за начинаещи (Част 36): Моделът на кутията



Цветът на фона на h1 заглавието сигнализира, че елементът заема цялата ширина. Ширината зависи от по-горния body елемент.

Сега идва свойството display на сцена.

<!DOCTYPE html>
 <html>
 <head>
 <meta charset="utf-8">
 <title>PSD-Tutorials.de</title>
 <style>
 h1 {
 display:inline;
 background-color:#00CCFF;
 }
 </style>
 </head>
 <body>
 <h1>Digital Painting & Matte Painting</h1>
 <p>Модул 2 - Част 2: <em>Една картина винаги е цяло</em>. Винаги обаче трябва да се премисли къде първо трябва да погледне зрителят.</p>
 </body>
 </html>



С display: inline ширината на елемента се променя.

HTML и CSS за начинаещи (част 36): Моделът на кутията

Наистина сега ширината на елемента се адаптира към наличното съдържание. Тук е преглед на това, кои стойности все още могат да се определят за display:

none – няма показване

block – елементът се показва като блоков елемент, създавайки нов ред.

inline – елементът се показва като инлайн елемент, който се появява в тека на текста.

inline-block – създава външно блок, за който могат да бъдат определени височина, ширина и външно положение. Всеки елемент обаче остава в тека на текста. Това е комбинация от блоков и инлайн елемент.

list-item – елементът се показва като блоков елемент. Представен е с маркер за списък.

run-in – създава блоков или инлайн елемент в зависимост от съдържанието.

table – има същото действие като познатият ни table елемент от HTML.

inline-table – действа като HTML елемента table, но инлайн.

table-row – елементът съдържа деца, които са подредени едно до друго, работи като HTML елемента tr.

table-cell – елементът представлява клетка в таблица и работи като двата HTML елемента th и td.

table-row-group – елементът съдържа група от елементи с подредени деца и работи като tbody елемента в HTML.

table-header-group – елементът съдържа група от елементи с подредени деца и работи като thead елемента в HTML.

table-footer-group – елементът съдържа група от елементи с подредени деца и работи като tfoot елемента в HTML.

table-column – тук се описват свойствата на клетките в колона. table-column работи като елементът col от HTML.

table-column-group – този елемент съдържа група от елементи, чрез които се описват свойствата на клетките в колона. Той действа като HTML елемента colgroup.

table-caption – с този елемент се дефинира заглавието на таблицата. Свойството работи като HTML елемента caption.

Наистина CSS предоставя различни опции за представяне на различни типове елементи. Те играят решаваща роля във връзка с позиционирането на елементите. Повече за това в следващите уроци.