CodeGym /Corso Java /Frontend SELF IT /Pseudo-elementi ::before e ::after

Pseudo-elementi ::before e ::after

Frontend SELF IT
Livello 30 , Lezione 1
Disponibile

6.1 La proprietà content

Gli pseudo-elementi ::before e ::after permettono di aggiungere contenuto prima e dopo il contenuto di un elemento, senza modificare il codice HTML. Sono ampiamente utilizzati per scopi decorativi, migliorare l'interfaccia utente e creare pagine web più interattive.

Cosa sono gli pseudo-elementi ::before e ::after?

Gli pseudo-elementi ::before e ::after creano elementi virtuali che vengono inseriti rispettivamente prima e dopo il contenuto dell'elemento selezionato. Questi pseudo-elementi sono spesso utilizzati per aggiungere icone, elementi decorativi o altri effetti visivi.

Sintassi before:

    
      selettore::before {
        content: "testo o altri valori";
        /* stili */
      }
    
  

Sintassi after:

    
      selettore::after {
        content: "testo o altri valori";
        /* stili */
      }
    
  

La proprietà content

La proprietà chiave per gli pseudo-elementi ::before e ::after è content. Questa proprietà definisce il contenuto dello pseudo-elemento. Può essere una stringa di testo, un'immagine, o anche un valore vuoto, se è necessario solo un effetto visivo.

Valori possibili della proprietà content:

  • Testo: "testo"
  • Immagine: url("path/to/image.png")
  • Valore vuoto: ""
  • Attributi: attr(attributeName)
  • Contatori: counter(name)

6.2 Esempi di utilizzo di ::before e ::after

Aggiunta di elementi decorativi

Esempio 1: Aggiunta di un'icona prima del testo

In questo esempio lo pseudo-elemento ::before viene utilizzato per aggiungere un'icona prima del testo del link. margin-right aggiunge spazio tra l'icona e il testo:

CSS
    
      /* Aggiunta di un'icona prima del testo del link */

      a::before {
        content: "🔗";
        margin-right: 5px;
      }
    
  

Esempio 2: Aggiunta di un elemento decorativo dopo un paragrafo

In questo esempio lo pseudo-elemento ::after aggiunge un elemento decorativo dopo il paragrafo. display: block e text-align: right sono utilizzati per allineare l'elemento a destra:

CSS
    
      /* Aggiunta di un elemento decorativo dopo un paragrafo */

      p::after {
        content: "❦";
        display: block;
        text-align: right;
        color: red;
      }
    
  

Creazione di bordi e sfondi decorativi

Esempio 3: Bordo decorativo attorno all'elemento

In questo esempio lo pseudo-elemento ::before viene utilizzato per creare una striscia decorativa sopra l'elemento div. position: absolute e top: -10px permettono di posizionare la striscia sopra l'elemento:

CSS
    
      /* Bordo decorativo attorno all'elemento */

      div::before {
        content: "";
        display: block;
        width: 100%;
        height: 10px;
        background-color: #3498db;
        position: absolute;
        top: -10px;
        left: 0;
      }
    
  

Esempio 4: Aggiunta automatica di virgolette

In questo esempio gli pseudo-elementi ::before e ::after vengono utilizzati per aggiungere virgolette attorno al blocco di citazione:

CSS
    
      /* Aggiunta automatica di virgolette attorno al blocco di citazione */

      blockquote::before {
        content: "“";
        font-size: 2em;
        color: #ccc;
      }

      blockquote::after {
        content: "”";
        font-size: 2em;
        color: #ccc;
      }
    
  

Esempio 5: Numerazione dei titoli

In questo esempio lo pseudo-elemento ::before viene utilizzato per aggiungere un numero prima del titolo h2. counter-increment incrementa il valore del contatore, e content: counter(section) inserisce il valore corrente del contatore:

CSS
    
      /* Numerazione dei titoli */

      h2::before {
        counter-increment: section;
        content: counter(section) ". ";
        font-weight: bold;
      }
    
  

6.3 Applicazione e stilizzazione degli pseudo-elementi

Stilizzazione degli pseudo-elementi

Gli pseudo-elementi possono essere stilizzati come qualsiasi altro elemento. Supportano la maggior parte delle proprietà CSS, inclusi colore, sfondo, bordi, dimensioni e posizionamento.

Utilizzo degli pseudo-elementi per creare layout complessi

Gli pseudo-elementi sono spesso utilizzati per creare elementi decorativi nei layout, come bordi, ombre e altri effetti visivi, senza la necessità di aggiungere elementi HTML aggiuntivi.

Esempio: ogni elemento della lista avrà un marcatore blu prima del testo:

CSS
    
      ul li::before {
        content: "•";
        color: blue;
        margin-right: 5px;
      }
    
  
HTML
    
      <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
      </ul>
    
  

6.4 Esempio di implementazione completa

CSS
    
      /* Aggiunta di un'icona prima del testo del link */

      a::before {
        content: "🔗";
        margin-right: 5px;
      }

      /* Aggiunta di un elemento decorativo dopo un paragrafo */

      p::after {
        content: "❦";
        display: block;
        text-align: right;
        color: red;
      }

      /* Bordo decorativo attorno all'elemento */

      .decorative-box {
        position: relative;
      }

      .decorative-box::before {
        content: "";
        display: block;
        width: 100%;
        height: 10px;
        background-color: #3498db;
        position: absolute;
        top: -10px;
        left: 0;
      }

      /* Aggiunta automatica di virgolette attorno al blocco di citazione */

      blockquote::before {
        content: "“";
        font-size: 2em;
        color: #ccc;
      }

      blockquote::after {
        content: "”";
        font-size: 2em;
        color: #ccc;
      }

      /* Numerazione dei titoli */

      h2::before {
        counter-increment: section;
        content: counter(section) ". ";
        font-weight: bold;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Esempio di pseudo-elementi ::before e ::after</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <a href="#">Link con icona</a>
          <p>Paragrafo con elemento decorativo dopo il testo</p>
          <div class="decorative-box">Elemento con bordo decorativo</div>
          <blockquote>Citazione con virgolette automatiche</blockquote>
          <h2>Titolo con numerazione</h2>
          <h2>Un altro titolo</h2>
        </body>
      </html>
    
  
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION