Penso che di solito il nome venga aggiunto nell’attributo alt. Quando carico un file, il nome viene solitamente aggiunto davanti alla dimensione in markdown, ed è quella la parte utilizzata da “alt”.
Dato che non sono un esperto di CSS, ho chiesto a ChatGPT la tua opzione e ho ottenuto questo, dato che voglio nascondere le immagini che iniziano con hide-this-image-, ma poi hanno qualcos’altro. Ho ricevuto questa risposta:
No, il CSS puro non supporta selettori jolly o “inizia con” per gli attributi alt delle immagini.
I selettori di attributi CSS supportano solo:
- Corrispondenza esatta:
[alt=\"valore\"] - Contiene parola:
[alt~=\"valore\"] - Contiene sottostringa:
[alt*=\"valore\"] - Inizia con:
[alt^=\"valore\"] - Finisce con:
[alt$=\"valore\"]
Tuttavia, alt^=\"hide-this-image-\" non funzionerà in modo affidabile nel tuo esempio perché il CSS non può corrispondere all’attributo alt di <img> in tutti i browser quando l’immagine viene renderizzata, specialmente in sistemi come Discourse in cui l’attributo alt non è necessariamente riflesso nel DOM in un modo a cui il CSS possa accedere.
Soluzione alternativa con CSS (funziona solo in alcuni ambienti):
.cooked img[alt^="hide-this-image-"] {
display: none;
}
Ma ancora una volta, questo potrebbe non funzionare in modo coerente in Discourse a causa di come vengono renderizzate le immagini (ad esempio, tramite markdown o JS). In tal caso, avresti bisogno di JavaScript.
Alternativa affidabile con JavaScript:
document.querySelectorAll('.cooked img[alt^="hide-this-image-"]').forEach(img => {
img.style.display = 'none';
});
Questo funzionerà in modo affidabile in tutti gli ambienti, incluso Discourse.
La soluzione di ChatGPT sembra funzionare:
E Facebook Debugger la vede come immagine in primo piano:
Componente con il Javascript:
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
api.onPageChange(() => {
document
.querySelectorAll('.cooked img[alt^="featured-image-"]')
.forEach((img) => {
const parent = img.closest("div");
if (parent) {
parent.style.display = "none";
} else {
img.style.display = "none";
}
});
});
});
Ho notato che manteneva dello spazio dove l’immagine doveva essere, quindi ho chiesto di nuovo a ChatGPT e ha aggiunto che era necessario nascondere il contenitore padre, che in questo caso è il tag
<div>.
Ora funziona benissimo!
Grazie per questo. Aggiunto alle mie note.
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.

