MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Stilizarea elementului details

Să examinăm unele posibilități de stilizare a elementului details, care reprezintă un bloc extensibil.

Atributul open

În primul rând, în starea deschisă, elementului details i se adaugă atributul open. Astfel, folosind acest atribut, se pot defini stiluri diferite pentru element în stările ascuns și deschis. De exemplu:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
   <style>
   details > summary {
       padding: 5px;
       background-color: #eee;
       color: #333;
       border: 1px #ccc solid;
       cursor: pointer;
   }

   details > div {
       border: 1px #ccc solid;
       padding: 10px;
   }
   details[open] > summary {
       color:#eee;
       background-color:#333;
   }
   </style>
</head>
<body>
<details>
   <summary>Prințul Andrei și Pierre în Bogucharovo</summary>
   <div>În jurul casei era plantată o grădină tânără. Gardurile și porțile erau solide și noi; sub un adăpost
   stăteau două țevi de pompieri și un butoi, vopsit în verde; drumurile erau drepte, podurile solide cu balustrade.
   Peste tot erau amprenta ordonării și gospodăriei.</div>
</details>
</body>
</html>

Cu ajutorul selectorului details[open] ne putem referi la elementul details în starea deschisă.

details[open] > summary {
   color:#eee;
   background-color:#333;
}

Permite setarea stilurilor pentru elementul summary în starea deschisă. Astfel, în acest caz, la deschiderea elementului details schimbăm culoarea stilului și a fundalului titlului.

Configurarea markerului

Implicit, elementul summary folosește un simbol triunghiular ca marker de ascundere/deschidere. Acesta poate fi, de asemenea, configurat.

Pentru a configura imaginea markerului, se poate folosi proprietatea list-style, precum și proprietăți suplimentare precum list-style-type sau list-style-image, care sunt utilizate pentru stilizarea listelor. De exemplu, dacă este necesar să elimini acest marker, se poate aplica stilul list-style: none:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
   <style>

   details > summary {
       padding: 5px;
       background-color: #eee;
       color: #333;
       border: 1px #ccc solid;
       cursor: pointer;
       list-style: none;
   }

   details > div {
       border: 1px #ccc solid;
       padding: 10px;
   }

   details[open] > summary {
       color:#eee;
       background-color:#333;
   }
   </style>
</head>
<body>
<details>
   <summary>Prințul Andrei și Pierre în Bogucharovo</summary>
   <div>În jurul casei era plantată o grădină tânără. Gardurile și porțile erau solide și noi; sub un adăpost stăteau două țevi de pompieri și un butoi,
   vopsit în verde; drumurile erau drepte, podurile solide cu balustrade. Peste tot erau amprenta ordonării și gospodăriei.</div>
</details>
</body>
</html>

Alt exemplu - aplicarea stilului list-style-type: disc;

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
   <style>

   details > summary {
       padding: 5px;
       background-color: #eee;
       color: #

333;
       border: 1px #ccc solid;
       cursor: pointer;
       
       list-style-type: disc;  /* setăm markerul */
   }

   details > div {
       border: 1px #ccc solid;
       padding: 10px;
   }

   details[open] > summary {
       color:#eee;
       background-color:#333;
   }
   </style>
</head>
<body>
<details>
   <summary>Prințul Andrei și Pierre în Bogucharovo</summary>
   <div>În jurul casei era plantată o grădină tânără. Gardurile și porțile erau solide și noi; sub un adăpost stăteau două țevi de pompieri și un butoi,
   vopsit în verde; drumurile erau drepte, podurile solide cu balustrade. Peste tot erau amprenta ordonării și gospodăriei.</div>
</details>
</body>
</html>

Configurarea cu ajutorul proprietății content

Desigur, nu suntem limitați la proprietatea list-style și putem controla mai fin titlul, de exemplu, folosind proprietatea content:

<!DOCTYPE html>
<html>
<head>
   <meta charset="utf-8" />
   <title>FDC.COM</title>
   <style>

   details > summary {
       padding: 5px;
       background-color: #eee;
       color: #333;
       border: 1px #ccc solid;
       cursor: pointer;
       list-style: none;
   }

   details > div {
       border: 1px #ccc solid;
       padding: 10px;
   }

   details[open] > summary {
       color:#eee;
       background-color:#333;
   }
   summary:before {
      content: "+";
      font-size: 20px;
      font-weight: bold;
      margin: -5px 5px 0 0;
   }

   details[open] summary:before {
      content: "-";
   }
   </style>
</head>
<body>
<details>
   <summary>Prințul Andrei și Pierre în Bogucharovo</summary>
   <div>În jurul casei era plantată o grădină tânără. Gardurile și porțile erau solide și noi; sub un adăpost stăteau două țevi de pompieri și un butoi,
   vopsit în verde; drumurile erau drepte, podurile solide cu balustrade. Peste tot erau amprenta ordonării și gospodăriei.</div>
</details>
</body>
</html>

În acest caz, folosind selectorul summary:before, stabilim conținutul care va fi plasat înaintea conținutului principal al elementului summary. Selectorul details[open] summary:before permite să facem același lucru, doar că în starea deschisă. În final, în starea ascunsă markerul va afișa simbolul +, iar în starea deschisă - simbolul -.

← Lecția anterioară Lecția următoare →