Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199

    last-of-type con siblings nascosti

    Ciao a tutti!

    io ho una tabella con 5 celle. quando tutte e 5 sono visibili ho messo un interspazio usando il bordo della cella stessa, settando però che l'ultimo bordo a destra non ci deve essere (usando appunto last-of-type).
    Queste celle, in base alla scelta dell'utente, potranno avere un valore display:hidden o table-cell.
    Questo comporta che, se l'ultima cella reale è nascosta, la penultima (ora visualizzata come ultima) mantiene il bordo a destra.
    Il perché è semplice da capire: con display:none nascondo solo l'oggetto, ma esso esiste ancora.

    Si potrebbe usare PHP per far apparire le celle fisicamente o farle scomparire (e in questo caso funzionerebbe il selettore css), ma per vari motivi non posso applicarlo a questo caso.
    Potrei creare una funzione con JS, ma dovrebbe venir fuori un poema di if e else, un lavorone che non è proprio necessario per un problema così secondario (almeno credo sia un lavorone, se non lo è fatemi sapere!!! ).

    Esiste qualcosa con i CSS che possa ovviare a questo problema, io non ho trovato nulla (anche perché non mi è stato semplice effettuare la ricerca per un problema così specifico).

    Voi avete qualche idea?

    Grazie tante,

    CiAo


  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Usa il bordo sinistro anziche` il destro, e toglilo alla prima cella.

    Naturalmente il consiglio e` valido se la prima cella e` sempre visualizzata ...
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    già provato ad invertire, ma senza risultato proprio perchè neanche la prima cella è sempre visibile.

    Grazie lo stesso!

    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Comunque e` sempre possibile farlo tramite JS: devi ciclare su tutti i figli del contenitore e modificare il border-right dell'ultimo.
    (Dato che in questo caso il JS agisce solo su parti di abbellimento (e non sul contenuto) puoi usarlo tranquillamente senza preoccuparti di cosa succede nei browser che nonhanno JS attivato)

    Se decidi di andare per questa strada ti spostiamo nel forum corrispondente.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2012
    Messaggi
    199
    Grazie Mich, ma in JS sono in grado di farlo, ma lo ritengo un lavoro sproporzionato rispetto al risultato, speravo in una soluzione semplice con i CSS.

    Grazie comunque.

    Ciao

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    In realta` e` una cosa un po' al limite, e non credo che CSS contempli queste cose.

    Pero` in JS non e` una serie infinita di if.

    Io imposterei in questo modo:
    codice:
    var padre = document.getElementById(...);
    var ultimo = 0;
    
    foreach (figlio) in padre {             /* non ricordo come e` la sintassi giusta */
      if ((figlio).style.display <> 'none') ultimo = (figlio);
    }
    if (ultimo <> 0) ultimo.style.marginRight = 0;
    Scusa ma non ho tempo di ripassare JS e non ricordo la sintassi. Spero che con queste info riesci a farlo.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.