Come identificare e modificare/rimuovere elementi Ember?

Molto nuovo a CSS e affini, quindi scusate se quanto segue è incredibilmente basilare e/o prolisso.

La mia domanda è: come si identificano e rimuovono gli elementi “ember” tramite CSS? Immagino si possa fare tramite il suffisso “display:none”.

Solo come esempio casuale, supponiamo di voler eliminare il pulsante dei segnalibri in fondo ai topic. Quando cerco l’elemento nella console di Chrome, vedo solo il CSS per tutti i pulsanti del piè di pagina dei topic in generale, ma non quello specifico; quindi, se applicassi “display:none”, si applicherebbe a tutti i pulsanti invece che solo a quello.

risultato dell’applicazione di display:none al tag CSS del pulsante.

prima:

applicazione di “display:none”.

dopo:

Sono abbastanza sicuro che sia possibile rimuovere solo uno di essi e che questo si estenda ad altri elementi ember, la maggior parte dei quali è raggruppata in modo simile; prima sono riuscito a eliminare altri elementi ember (nello specifico il pulsante di giustificazione nella barra degli strumenti del compositore), sebbene solo con l’aiuto di altri utenti di questo forum.

Tuttavia, come si fa a identificare il tag CSS specifico a cui applicare “display:none”?

Ancora una volta, scusate se è troppo basilare o prolisso.

Questo può essere fatto nelle impostazioni di amministrazione e non è necessario il CSS

amministrazione > impostazioni > Configurazione di base > menu dei post

2 Mi Piace

Scusa se ho fatto un esempio poco chiaro, poiché non sapevo che esistesse un’opzione al di fuori del CSS. Ho semplicemente scelto un elemento Ember a caso.

Forse un esempio migliore si trova nella pagina utente. Il punto è che sto cercando di capire come identificare cosa si può inserire nel CSS (simile al post citato in poi, tratto dal thread “MD Composer Extras” a cui ho fatto riferimento sopra), in modo da poter teoricamente impedire la visualizzazione di un elemento Ember.

Un esempio migliore sarebbe la barra laterale nella sezione Attività di un Profilo. Per quanto ne so, non esiste un’opzione specifica per questo nelle Impostazioni, ma sarebbe necessario utilizzare il CSS.

Ciao @b481

Quello che stai cercando si chiama “selettore CSS” (o semplicemente “selettore” per brevità). I selettori CSS vengono utilizzati per “trovare” (o selezionare, ovviamente) l’elemento DOM che desideri stilizzare.

Ad esempio, da dove sto scrivendo ora, cercherò il selettore per il tuo nome utente nel compositore (solo un esempio).

Cosa facciamo: passiamo il mouse sopra l’elemento (il tuo nome utente b481 nel compositore), facciamo clic con il tasto destro e apparirà un menu con la voce “Ispeziona”.

Clicca su “Ispeziona” e si aprirà la console per sviluppatori (ora sto usando Chrome su macOS); con un po’ di fortuna, l’elemento che ci interessa verrà evidenziato.

Se fai clic con il tasto destro sull’elemento evidenziato nella console, vedrai la voce di menu Copia–>Copia selettore.

Se scegli questa opzione e copi il selettore, in questo esempio otterrai:

#ember433 > span > a

Questo non è un selettore molto buono perché #ember433 è assegnato da Ember, ma puoi spostare il mouse sopra gli elementi nella console e vedrai che verranno evidenziati sia nella pagina di interesse che nella console. La buona notizia è che siamo già vicini, velocemente e facilmente.

Puoi quindi trovare l’elemento che desideri nascondere e, in questo esempio, puoi fare di nuovo clic con il tasto destro sull’elemento (questo esempio) e testarlo scegliendo “aggiungi attributo” dal menu sotto il mouse per verificare il nostro selettore.

Ho appena fatto questo come esempio in questa cattura:

e ora quell’elemento con il tuo id ‘b481’ è nascosto in quella parte del DOM…

Quindi, sappiamo che in questo caso, se usiamo il CSS:

span.action-title{
   display:none;
}

possiamo aggiungerlo al nostro tema e avremo nascosto quell’elemento.

In questo caso, dovresti verificare se ci sono più elementi nella pagina con lo stesso selettore e dovresti anche assicurarti che il selettore scelto non sia troppo “grezzo” e non selezioni elementi su altre pagine che non desideri nascondere.

Più specifico è il selettore, meglio è.

Ad esempio, in questo caso, possiamo renderlo più specifico specificando che il nostro selettore è un figlio di un elemento genitore, in questo caso (non testato):

div.compose-action-title > span.action-title{
   display:none;
}

Puoi vedere che stiamo diventando più specifici; e a questo punto dovresti avere un’idea abbastanza chiara di come cercare gli elementi che desideri modificare.

Buona caccia!

Un’ultima nota:

Puoi usare JavaScript e jQuery per selezionare elementi, ma ho scoperto che nelle app SPA come Discourse/Ember, i selettori CSS funzionano bene, almeno per me. Tendo a usare i selettori JavaScript solo quando devo attraversare il DOM in modo “complicato” (il che può anche essere molto divertente).

Spero che questo ti sia d’aiuto.

Vedi anche:

4 Mi Piace

Grazie mille @neounix. Ci proverò più tardi.

Ho riscontrato un piccolo problema. Nel tentativo di eliminare l’esempio “segnalibri” che ho postato sopra, non riesco a farlo perché il numero Ember associato continua a cambiare.

Ecco il codice che ho usato quando era 52. Ho anche provato senza !important.

span.ember52.ember-view{
display:none !important;
}

Buon inizio, ma c’è ancora da lavorare @b481

Sì, te l’ho già detto @b481: non dovresti scegliere un selettore basato sulle classi e sugli ID assegnati da Ember.

Dovresti usare un selettore che non sia una classe assegnata da Ember. Ti ho già descritto come farlo nella mia risposta precedente.

NOTA LATERALE: Per tua informazione, in questo modo non stai “eliminando” questi elementi dal DOM (come hai menzionato sopra), ma solo “nascondendoli”, ma questo è un argomento per un’altra occasione :slight_smile:

Per favore, usa un selettore che non viene assegnato automaticamente da Ember.

Spero che questo ti aiuti.


Nota:

Se stai cercando di nascondere (nel tuo esempio) il pulsante dei segnalibri in fondo a un argomento, hai provato:

#topic-footer-button-bookmark
{
  display:none;
}

Mi dispiace, ma dai tuoi messaggi non riesco a capire esattamente quale elemento nel DOM (nell’esempio o reale) desideri nascondere.

1 Mi Piace

Per nascondere una di queste sezioni, basta fare:

.user-secondary-navigation li:nth-child(3) {
  display: none;
}

Sostituendo il numero con quello che si desidera nascondere.

Questo funzionerà solo quando l’elenco è prevedibile, ovviamente, altrimenti il CSS non sarà una soluzione.

2 Mi Piace

Ci ho messo un po’, ma finalmente sono riuscito a prenderci la mano.

Grazie @neounix, è stato di grande aiuto e sarà un grande vantaggio per il mio forum.

2 Mi Piace

Qualcuno sa come eliminare solo l’opzione “cita l’intero post” senza cancellare anche quella sulla sinistra? Entrambe condividono lo stesso CSS e lo stesso div genitore, quindi non ho trovato un modo per eliminarne una senza l’altra.

Ciao @b481

Puoi utilizzare il selettore [ attributo=valore ]:

Riferimento:

https://www.w3schools.com/cssref/sel_attribute_value.asp

con l’attributo title e il valore Blockquote (⌘⇧9)

Ad esempio (non testato):

button[title="Blockquote (⌘⇧9)"]
{
  display:none;
}

O forse:

button[title*="Blockquote"]
{
  display:none;
}

Non l’ho testato, quindi potresti dover apportare delle modifiche.

Inoltre, un altro modo “grezzo” per farlo è nascondere solo l’elemento SVG:

svg.d-icon-quote-right
{
   display:none;
}

Esistono anche altri selettori CSS possibili da valutare. Sono certo che altri abbiano suggerimenti ancora migliori.

Spero che questo ti aiuti un po’ nel tuo percorso.

Vedi anche:

  1. CSS Attribute Selectors

  2. Di seguito

2 Mi Piace