Aggiunta di ombre di riquadri ai blocchi e agli elementi di WordPress PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Aggiunta di box shadow a blocchi ed elementi di WordPress

Mi sono imbattuto in questo tweet di Ana Segota alla ricerca di un modo per aggiungere un CSS box-shadow allo stato al passaggio del mouse di un pulsante in WordPress nel file theme.json file.

Lei sta chiedendo perché theme.json è dove WordPress vuole che iniziamo a spostare gli stili di base per i temi a blocchi. Tradizionalmente, ci occupavamo di qualsiasi stile style.css quando si lavora su un tema “classico”. Ma con il tema predefinito Twenty Twenty-Three (TT3) recentemente distribuito con WordPress 6.1, spostando tutti i suoi stili in theme.json, ci stiamo avvicinando sempre di più alla possibilità di fare lo stesso con i nostri temi. Ne ho parlato in dettaglio in un recente articolo.

Dico "sempre più vicino" perché ci sono ancora molte proprietà e selettori CSS che non sono supportati theme.json. Ad esempio, se speri di modellare qualcosa con Mi piace perspective-origin in theme.json, semplicemente non accadrà, almeno mentre lo scrivo oggi.

Ana sta guardando box-shadow e, fortunatamente per lei, quella proprietà CSS è supportata da theme.json a partire da WordPress 6.1. Il suo tweet è datato 1 novembre, lo stesso giorno esatto in cui è stato rilasciato 6.1. Non è che il supporto per la proprietà fosse una caratteristica principale del rilascio. I titoli più grandi erano più legati alle tecniche di spaziatura e layout per blocchi e temi di blocco.

Ecco come possiamo applicare a box-shadow a un blocco specifico, ad esempio il blocco Immagine in primo piano, in theme.json:

{
  "version": 2,
  "settings": {},
  // etc.
  "styles": {
    "blocks" :{
      "core/post-featured-image": {
        "shadow": "10px 10px 5px 0px rgba(0, 0, 0, 0.66)"
      }
    }
  }
}

Mi chiedo se il nuova sintassi dei colori lavori? Anche a me! Ma quando ho provato... rgb(0 0 0 / 0.66) - Non ho ottenuto nulla. Forse è già in lavorazione o potrebbe utilizzare una richiesta pull.

Facile, vero? Certo, è molto diverso dallo scrivere CSS vanigliato style.css e ci vuole un po' per abituarsi. Ma è davvero possibile a partire dalla versione più recente di WordPress.

E, ehi, possiamo fare la stessa cosa con singoli "elementi", come un pulsante. Un pulsante è un blocco in sé e per sé, ma può anche essere un blocco annidato all'interno di un altro blocco. Quindi, per applicare a box-shadow globalmente a tutti i pulsanti, faremmo qualcosa di simile in theme.json:

{
  "version": 2,
  "settings": {},
  // etc.
  "styles": {
    "elements": {
      "button": {
        "shadow": "10px 10px 5px 0px rgba(0,0,0,0.66)"
      }
    }
  }
}

Ma Ana vuole aggiungere l'ombra a quella del bottone :hover stato. Per fortuna, supporto per lo stile degli stati interattivi per alcuni elementi, come pulsanti e collegamenti, utilizzando pseudo-classi, incluso :hover, :focus, :activee :visited - anche guadagnato theme.json supporto in WordPress 6.1.

{
  "version": 2,
  "settings": {},
  // etc.
  "styles": {
    "elements": {
      "button": {
        ":hover": {
          "shadow": "10px 10px 5px 0px rgba(0,0,0,0.66)"
        }
      }
    }
  }
}

Se stai usando un tema principale, puoi sicuramente sovrascrivere gli stili di un tema in un tema figlio. Qui, sto completamente sovrascrivendo gli stili dei pulsanti di TT3.

Visualizza il codice completo
{
  "version": 2,
  "settings": {},
  // etc.
  "styles": {
    "elements": {
      "button": {
        "border": {
          "radius": "0"
        },
        "color": {
          "background": "var(--wp--preset--color--tertiary)",
          "text": "var(--wp--preset--color--contrast)"
        },
        "outline": {
          "offset": "3px",
          "width": "3px",
          "style": "dashed",
          "color": "red"
        },
        "typography": {
          "fontSize": "var(--wp--preset--font-size--medium)"
        },
        "shadow": "5px 5px 5px 0px rgba(9, 30, 66, 0.25), 5px 5px 5px 1px rgba(9, 30, 66, 0.08)",
        ":hover": {
          "color": {
            "background": "var(--wp--preset--color--contrast)",
            "text": "var(--wp--preset--color--base)"
          },
          "outline": {
            "offset": "3px",
            "width": "3px",
            "style": "solid",
            "color": "blue"
          }
        },
        ":focus": {
          "color": {
            "background": "var(--wp--preset--color--contrast)",
            "text": "var(--wp--preset--color--base)"
          }
        },
        ":active": {
          "color": {
            "background": "var(--wp--preset--color--secondary)",
            "text": "var(--wp--preset--color--base)"
          }
        }
      }
    }
  }
}

Ecco come viene visualizzato:

Lo stato naturale del pulsante (a sinistra) e il suo stato al passaggio del mouse (a destra)

Un altro modo per farlo: stili personalizzati

Il recentemente rilasciato Pixl Il tema a blocchi fornisce un altro esempio di utilizzo nel mondo reale del box-shadow proprietà in theme.json utilizzando un metodo alternativo che definisce i valori personalizzati. Nel tema, una consuetudine box-shadow proprietà è definita come .settings.custom.shadow:

{
  "version": 2,
  "settings": {
    // etc. 
    "custom": {
      // etc.
      "shadow": "5px 5px 0px -2px var(--wp--preset--color--background), 5px 5px var(--wp--preset--color--foreground)"
    },
    // etc.
  }
}

Quindi, più avanti nel file, il file custom shadow proprietà viene chiamata su un elemento pulsante:

{
  "version": 2,
  "settings": {
    // etc.
  },
  "styles": {
    "elements": {
      "button": {
        // etc.
        "shadow": "var(--wp--custom--shadow) !important",
        // etc.
        ":active": {
          // etc.
          "shadow": "2px 2px var(--wp--preset--color--primary) !important"
        }
      },
    // etc.
  }
}

Non sono del tutto sicuro dell'uso di !important in tale contesto. La mia impressione è che sia un tentativo di impedire la sovrascrittura di quegli stili utilizzando l'interfaccia utente degli stili globali nell'editor del sito, che ha un'elevata specificità rispetto agli stili definiti in theme.json. Ecco un collegamento ancorato a ulteriori informazioni dal mio precedente articolo sulla gestione degli stili dei temi a blocchi.

Aggiornare: Si scopre che c'è stata un'intera discussione su questo in Pull richiesta #34689, che rileva che è stato risolto in WordPress 5.9.

E c'è di più ...

Oltre alle ombre, il CSS outline proprietà anche acquisita theme.json supporto in WordPress 6.1 e può essere applicato ai pulsanti e ai loro stati interattivi. Questo Pubbliche relazioni su GitHub mostra un buon esempio.

"elements": {
  "button": {
    "outline": {
      "offset": "3px",
      "width": "3px",
      "style": "dashed",
      "color": "red"
    },
    ":hover": {
      "outline": {
        "offset": "3px",
        "width": "3px",
        "style": "solid",
        "color": "blue"
      }
    }
  }
}

Puoi anche trovare i veri esempi di come il file outline proprietà funziona in altri temi, tra cui rumorosità, Blocca telae Base di blocco.

Concludendo

Chi sapeva che c'era così tanto di cui parlare con una singola proprietà CSS quando si tratta di bloccare i temi in WordPress 6.1? Abbiamo visto i metodi ufficialmente supportati per impostare a box-shadow su blocchi e singoli elementi, inclusi gli stati interattivi di un elemento pulsante. Abbiamo anche verificato come sovrascrivere le ombre in un tema figlio. E, infine, abbiamo aperto un esempio del mondo reale che definisce e imposta le ombre in una proprietà personalizzata.

Puoi trovare discussioni approfondite più dettagliate su WordPress ed è box-shadow implementazione in questo Pubbliche relazioni su GitHub. C'è anche una Proposta GitHub per aggiungere l'interfaccia utente direttamente in WordPress per impostare i valori delle ombre sui blocchi: puoi farlo passa direttamente a una GIF animata mostrando come funzionerebbe.

A proposito, Justin Tadlock recentemente sviluppato un blocco che visualizza una barra di avanzamento e controlli box shadow integrati al suo interno. Lo mostra in questo video:

[Contenuto incorporato]

Maggiori informazioni

Se desideri approfondire il box-shadow e altre proprietà CSS supportate da theme.json file in un tema a blocchi, ecco un paio di risorse che puoi utilizzare:

Timestamp:

Di più da Trucchi CSS