Manipulacja właściwością "display"

W poprzedniej części kursu CSS poznaliśmy dwie wartości właściwości display, były to wartości inline oraz block, dzięki czemu znamy różnicę pomiędzy elementem HTML, który jest pokazywany w oknie naszej przeglądarki internetowej jako element wyświetlony w bloku (display:block;) oraz elementem HTML, który jest pokazywany w oknie naszej przeglądarki internetowej jako element wyświetlony w linii (display:inline;).

Każdy element HTML domyślnie posiada w sobie jakąś wartość właściwości display (podobnie jak wartość domyślną każdej innej właściwości CSS). Najczęściej tą wartością domyślną właściwości display jest wartość inline lub block, jednak nie są to wszystkie wartości, jakie występują w języku CSS wraz z właściwością display, dlatego w tej części kursu CSS przyjrzymy się pozostałym wartościom właściwości display.

Właściwość display należy rozumieć jako właściwość, dzięki której możemy manipulować interpretacją danego elementu HTML przez przeglądarkę internetową, dlatego zmieniając domyślną wartość właściwości display danego elementu HTML sami możemy określić czy dany element HTML ma być interpretowany, czyli "rozumiany" przez przeglądarkę internetową, np. jako element inline, element block lub inny typ elementu HTML.

W jednej z początkowych części tego kursu CSS powiedziałem, że elementy HTML, które umieścimy w części body dokumentu HTML, tworzą wygląd danej strony internetowej. Poprzednie twierdzenie jest oczywiście prawdą, lecz co się dzieje z częścią head dokumentu HTML? Co się dzieje z elementem head i pozostałymi elementami HTML, które znajdują się w elemencie head? Dlaczego ich nie widzimy?

Odpowiedź na powyższe pytania jest bardzo prosta. Element head oraz wszystkie elementy HTML, jakie znajdą się we wspomnianym elemencie head, są dla nas niewidoczne, ponieważ domyślnie posiadają one właściwość display wraz z wartością none.

Poniżej został zaprezentowany przykładowy dokument HTML.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      div {
        width:50%;
        margin:15px auto;
        padding:15px;
        border:3px solid green;
        background-color:gold;
        text-align:center;
      }
    </style>
  </head>

  <body>

    <div>to jest przykładowy element - div</div>
    <div>to jest kolejny przykładowy element - div</div>

  </body>
</html>

Gdy wyświetlimy nasz przykładowy dokument HTML w oknie przeglądarki internetowej zobaczymy następujący rezultat:

to jest przykładowy element - div
to jest kolejny przykładowy element - div

W naszej przeglądarce internetowej ukazały się dwa elementy div, które znajdują się w elemencie body. Czy są to jedyne elementy HTML, które zostały wyświetlone?

Odpowiedź na to pytanie brzmi: nie!

W oknie naszej przeglądarki internetowej ukazały się tak naprawdę wszystkie elementy HTML, jakie zostały umieszczone w elemencie html, włączając w to również sam element html.

Elementy html, head, body nie są dla nas dostrzegalne gołym okiem, ponieważ element html oraz element body nie posiadają w sobie żadnej domyślnej właściwości CSS, jaka zaznaczyłaby nam ich granice. Natomiast element head oraz wszystkie elementy HTML, jakie zostały w nim umieszczone, nie są pokazywane w oknie naszej przeglądarki internetowej, ponieważ wspomniane elementy HTML posiadają w sobie domyślną wartość właściwości display, która jest równa none.

Czas sprawić, aby elementy html, head, body stały się dla nas dostrzegalne. Na początek zajmiemy się elementami html oraz body. Dodamy do nich marginesy zewnętrzne oraz różny kolor obramowania.

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      html {
        margin:15px;
        border:3px dashed blue;
      }

      body {
        margin:15px;
        border:3px dashed black;
      }

      div {
        width:50%;
        margin:15px auto;
        padding:15px;
        border:3px solid green;
        background-color:gold;
        text-align:center;
      }
    </style>
  </head>

  <body>

    <div>to jest przykładowy element - div</div>
    <div>to jest kolejny przykładowy element - div</div>

  </body>
</html>

Rezultat:

to jest przykładowy element - div
to jest kolejny przykładowy element - div

W tym momencie możemy dostrzec granice elementów html oraz body. W jaki sposób sprawić, aby element head stał się dla nas widoczny?

Spróbujmy dodać do niego czerwone obramowanie oraz marginesy zewnętrzne.

head {
  margin:15px;
  border:3px dashed red;
}

Rezultat:

to jest przykładowy element - div
to jest kolejny przykładowy element - div

Niestety nie widzimy żadnych zmian. Wciąż nie widzimy elementu head. Czas zmienić jego domyślną wartość właściwości display z wartości none na wartość block.

head {
  display:block;
  margin:15px;
  border:3px dashed red;
}

Rezultat:

to jest przykładowy element - div
to jest kolejny przykładowy element - div

W tym momencie element head stał się dla nas widoczny, ponieważ nie posiada on w sobie właściwość display:none; lecz posiada właściwość display:block;. Widzimy tylko jego czerwone obramowanie, które utworzyliśmy dla niego wcześniej.

Wszystkie elementy HTML umieszczone w elemencie head z reguły posiadają w sobie właściwość display:none; dlatego nie są one dla nas widoczne, nawet gdy sprawimy, aby element head stał się dla nas widoczny. Elementem, który ma w sobie jakąś zawartość, w części head, w naszym przykładzie, jest element title oraz style. Spróbujmy zmienić domyślną wartość none właściwości display elementu title.

title {
  display:block;
  margin:15px;
  padding:15px;
  border:3px dashed gold;
  text-align:center;
}

Rezultat:

Darmowy Kurs CSS
to jest przykładowy element - div
to jest kolejny przykładowy element - div

Od tej pory widzimy zarówno element html oraz element body, jak również element head oraz element title. Oczywiście sam element head nie został stworzony po to, aby tworzył on jakąś istotną wizualną część naszej strony internetowej, która byłaby przeznaczona dla użytkownika, który odwiedzi naszą stronę internetową, dlatego domyślnie posiada on w sobie właściwość display wraz z wartością none. Natomiast warto wiedzieć, że niektóre elementy HTML domyślnie posiadają w sobie właściwość display wraz z wartością none. Właściwość display wraz z wartością none oraz block wykorzystuje się do budowania rozwijanego menu, lecz tym zagadnieniem zajmiemy się dopiero w dziale czwartym.

Czas zająć się nieco inną wartością właściwości display, a mianowicie wartością list-item. W języku HTML istnieje element HTML, który domyślnie posiada w sobie właściwość display wraz z wartością list-item. Tym elementem jest elementem li. Element li tworzy wyróżnik listy HTML, listy ul lub ol, tzn. do elementu HTML, który jest interpretowany przez przeglądarkę internetową jako element list-item, domyślnie jest dodawany wyróżnik listy, graficzny, alfanumeryczny itp.

Przykładową listę HTML możemy utworzyć w następujący sposób:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      ul > li {
        margin:15px;
        padding:15px;
        background-color:tomato;
      }
    </style>
  </head>

  <body>

    <ul>
      <li>pierwszy wyróżnik</li>
      <li>drugi wyróżnik</li>
      <li>trzeci wyróżnik</li>
    </ul>

  </body>
</html>

Rezultat:

  • pierwszy wyróżnik
  • drugi wyróżnik
  • trzeci wyróżnik

A co w wypadku gdybyśmy chcieli z jakiś powodów, aby inne elementy HTML były interpretowane przez przeglądarkę internetową jako elementy listy? Oczywiście taka sytuacja nie powinna mieć z reguły miejsca, bo do tego celu zostały stworzone elementy ul, ol, li, lecz gdyby jednak taka sytuacja zdarzyła się?

W takiej sytuacji możemy wykorzystać, do wspomnianego celu, właściwość display wraz z wartością list-item, która sprawi, że dany element HTML będzie interpretowany przez przeglądarkę internetową jako element listy HTML.

Przykład:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      div > p {
        display:list-item;
        margin:15px;
        padding:15px;
        background-color:tomato;
      }
    </style>
  </head>

  <body>

    <div>
      <p>pierwszy wyróżnik</p>
      <p>drugi wyróżnik</p>
      <p>trzeci wyróżnik</p>
    </div>

  </body>
</html>

Rezultat:

pierwszy wyróżnik

drugi wyróżnik

trzeci wyróżnik

Ponadto właściwość display posiada wartości, które należą do grupy table. Jak łatwo można się domyślić, służą one do określenia tabeli HTML oraz jej elementów.

Najprostszą tabelę HTML możemy utworzyć w następujący sposób:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      table > tr > td {
        background-color:gold;
      }
    </style>
  </head>

  <body>

    <table>
      <tr>
        <td>komórka - 1</td>
        <td>komórka - 2</td>
        <td>komórka - 3</td>
      </tr>

      <tr>
        <td>komórka - 4</td>
        <td>komórka - 5</td>
        <td>komórka - 6</td>
      </tr>

      <tr>
        <td>komórka - 7</td>
        <td>komórka - 8</td>
        <td>komórka - 9</td>
      </tr>
    </table>

  </body>
</html>

Rezultat:

komórka - 1 komórka - 2 komórka - 3
komórka - 4 komórka - 5 komórka - 6
komórka - 7 komórka - 8 komórka - 9

Gdybyśmy chcieli w formie ćwiczenia zbudować tabelę HTML z innych elementów HTML, to moglibyśmy wykorzystać do tego celu właściwość display oraz jej wartości, które należą do grupy table.

Przykład:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Darmowy Kurs CSS</title>

    <style>
      div {
        display:table;
      }

      div > p {
        display:table-row;
      }

      div > p > span {
        display:table-cell;
        background-color:gold;
      }
    </style>
  </head>

  <body>

    <div>
      <p>
        <span>komórka - 1</span>
        <span>komórka - 2</span>
        <span>komórka - 3</span>
      </p>
      <p>
        <span>komórka - 4</span>
        <span>komórka - 5</span>
        <span>komórka - 6</span>
      </p>
      <p>
        <span>komórka - 7</span>
        <span>komórka - 8</span>
        <span>komórka - 9</span>
      </p>
    </div>

  </body>
</html>

Rezultat:

komórka - 1 komórka - 2 komórka - 3

komórka - 4 komórka - 5 komórka - 6

komórka - 7 komórka - 8 komórka - 9

Przykłady zaprezentowane w tej części kursu CSS miały na celu pomóc nam w zrozumieniu właściwości display oraz jej różnych wartości. Przykłady dotyczące widocznego elementu head, tworzenia listy HTML oraz tabeli HTML za pomocą innych elementów HTML, należy traktować jako ciekawostkę.

Najbardziej przydatnymi wartościami właściwości display, które będziemy często wykorzystywać do manipulowania sposobem wyświetlania elementów HTML w oknie naszej przeglądarki internetowej będą wartości: inline, block, none oraz inline-block.

Wartość inline-block łączy w sobie cechy zarówno wartości inline, jak i wartości block, dzięki czemu możemy wyświetlić kilka elementów HTML obok siebie, lecz zanim poznamy wartość inline-block, dobrze będzie, jeżeli zapoznamy się z najczęstszym sposobem, za pomocą którego możemy wyświetlić kilka elementów HTML obok siebie. Temat ten rozpocznie tzw. unoszący się element HTML, który poznamy w następnej części tego kursu CSS.