Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Selettore del padre di un elemento con classe

    Una domanda a cui credo di saper già rispondere.... ma la chiedo lo stesso (non si sa mai.... l'ignoranza ).


    Ho un menu creato con una unordered list formato da:
    - Menu
    - Sottomenu

    Al menu/sottomenu selezionato viene associata la classe 'marker', che modifica l'aspetto dello stesso (la classe viene associata tramite script lato server).


    Vorrei poter cambiare l'aspetto del menu quando viene associata la classe ad un suo sottomenu.

    E' possibile?
    C'è qualche modo di creare una regola che valga per il padre di un elemento a cui associamo la classe?


    Io ho provato ma riesco a cambiare solo l'aspetto dell'ultimo elemento selettore, non del suo antenato.


    Avete capito?

    Spero che sappiate aiutarmi

    Grazie,
    Pictor

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ci sono due possibilita`
    - hai sbagliato posto dove postare (parli di script lato server, che qui non trattiamo)
    - io non capisco la tua prosa.

    Se il problema e` lato server, specifica quale e` l'interfaccia usata (ASP, PHP, CGI, ...) e ti sposto nella sezione piu` opportuna
    Se il problema e` un menu lato client, prova a vedere i numerosi esempi puntati dai "link utili"; e se hai dubbi posta il link o un sunto del codice HTML+CSS
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    No no hai frainteso.

    Il problema con script lato server so benissimo come risolverlo

    Mi chiedevo se potevo ottenere gli stessi effetti usando solo i CSS.

    Che io sappia, secondo le regole di selezione, non si può fare.

    Però chiedevo appunto:

    codice:
    <ul>[*]
         <ul>[*]testo[/list]
      [*]
         <ul>[*]testo
          <li class="marker">testo[/list]
      [*]testo[/list]
    E' possibile, tramite qualche trucco con i selettori, modificare lo stile dei[*] (o degli <ul>) che contengono un[*] con classe "marker"?

    Per esempio nella lista principale dovrei ottenere il secondo[*] con uno stile diverso, visto che al suo interno è presente un elemento con classe "marker".

    Insomma modificare lo stile in base a ciò che è contenuto.

    Si può fare o esula dalle possibilità dei CSS?

    Capito ora?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Forse con i CSS e` possibile, ma non con i browser attuali.

    Cioe`: usando opportunamente gli pseudo-elementi (esempio :first-child ) e combinandoli con i selettori di attributo (es: input[type="text"] ), potrebbe essere possibile. Ma non ti consiglio di provarci: i browser non sono cosi` evoluti (forse FF e Opera lo sono, ma gli altri no).

    E` piu` semplice dare la classe al blocco superiore, e fare in modo che si applichi in qualche modo anche per i blocchi contenuti.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Eeehh...
    In qualche modo come?

    Appunto non mi viene in mente niente con i CSS.

    Se posso evitare di toccare il codice script è meglio.

    Tu come faresti?

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ci sono centinaia di esempi di menu in rete: una buona parte sono citati nei "link utili" di questo forum.

    Riprendendo il tuo esempio, si potrebbe fare (inserisci il verde e togli il rosso)
    codice:
    <ul>[*]
         <ul>[*]testo[/list]
      
      <li class="marker">
         <ul>[*]testo
          <li class="marker">testo[/list]
      [*]testo[/list]
    e poi applicare le solite regole per i selettori.

    Naturalmente dipende anche dall'effetto che vuoi ottenere.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  7. #7
    Scusami ma non riesco proprio a farmi tornare il ragionamento

    Non è tanto come strutturare l'HTML, quanto che selettori sfruttare.

    Il mio quesito era appunto come esulare dal codice di scripting e risolvere con solo CSS.

    Non so che confidenza hai con la programmazione ma il mio caso fa un ciclo per stampare i vari menu (i primi[*]) e, dentro ognuno di questi, fa un altro ciclo dove stampa i sottomenu.
    Di conseguenza non posso fare controlli sul sottomenu prima di aver già stampato il menu, con relativa classe (a meno di non scrivere ulteriore codice di scripting :master: ).

    Io associo la classe 'marker' al[*] che è attualmente selezionato (menu o sottomenu), in modo da evidenziare la posizione nel menu.

    MA vorrei che nel caso del sottomenu mi cambi lo stile, non dello stesso ma, del menu padre (perchè i sottomenu sono nascosti inizialmente. Non è 'usabile' come evidenziazione).

    Quindi dovrei avere dei selettori che, trovata la classe marker associata ad un[*] di secondo livello (un sottomenu: ul li ul li.marker), mi ricavi il[*] contenitore (il menu padre: ul li ul li.marker) e mi cambi lo stile di questo.


    Non ci riesco perchè appunto è una selezione 'indiretta' del menu, partendo dal sottomenu.

    A livello logico basta associare 'marker' al sottomenu per poter identificare anche il menu padre da 'stilizzare'.

    Però.... non so se si può fare con i soli CSS piuttosto che con script lato server


    Io credo di no, ma secondo me è una mancanza degli attuali CSS :rollo: (se non è possibile, ovvio )


    Scusa la prolissità ma almeno credo di averlo spiegato bene adesso

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Il mio quesito era appunto come esulare dal codice di scripting e risolvere con solo CSS.
    Quale scriping? Io avevo capito che non volevi usare JS o strumenti lato server, ma solo CSS.
    Pero` non hai parlato di marcatura, per cui mi sono permesso di modificare la marcatura, in modo da usare i CSS in un modo standard.

    Il linguaggio lato server SA (lo deve sapere per forza) cosa contiene un blocco, nel momento in cui lo scrive. Si tratta di inserire un if in piu`, ma non mi pare un grave problema. Alla peggio occorrera` una variabile in piu`, ma anche questo non lo vedo difficile.
    Ho un po' di esperienza con Perl, per il lato server, non ho esperienza di VBS o Jscript. Alla peggio puoi usare Javascript, che e` un linguaggio ad oggetti e forse gestisce meglio i puntatori e le matrici di quanto faccia VBS (devi verificare se la tua versione di ASP supporta JS). Ma questo e` un problema che devi chiedere in ASP o in JS.

    Tornando al problema specifico, non credo che allo stato attuale sia una cosa praticamente possibile da CSS andare a vedere gli oggetti contenuti in un altro oggetto. E` una cosa che potresti fare in JS, ma non credo che il gioco valga la candela: fai piu` presto a lavorare lato server.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  9. #9
    Originariamente inviato da Mich_
    Quale scriping? Io avevo capito che non volevi usare JS o strumenti lato server, ma solo CSS.
    Sì infatti. Era una curiosità sulla possibilità di farlo solo con CSS
    ...

    Il linguaggio lato server SA (lo deve sapere per forza) cosa contiene un blocco, nel momento in cui lo scrive. Si tratta di inserire un if in piu`, ma non mi pare un grave problema. Alla peggio occorrera` una variabile in piu`, ma anche questo non lo vedo difficile.
    No appunto per questo chiedevo. Non è semplicissimo.
    Aggiungere da codice lato server un controllo sul sottomenu ("è il sottomenu selezionato o no?") comporta l'utilizzo di un ciclo in più e altre piccole modifiche in altre parti.

    Niente di complicatissimo, ovvio.
    Ma se potevo farlo con i CSS, imparando pure qualcosa di nuovo, era meglio
    Ho un po' di esperienza con Perl, per il lato server, non ho esperienza di VBS o Jscript. Alla peggio puoi usare Javascript, che e` un linguaggio ad oggetti e forse gestisce meglio i puntatori e le matrici di quanto faccia VBS
    AAAaaaahhh!! Vade retro JS!
    E' poco accessibile il suo utilizzo, salvo casi particolari.
    (devi verificare se la tua versione di ASP supporta JS). Ma questo e` un problema che devi chiedere in ASP o in JS.
    Come fai a sapere che uso ASP?
    Mi spìi?
    Sei veggente?! :master:


    Tornando al problema specifico, non credo che allo stato attuale sia una cosa praticamente possibile da CSS andare a vedere gli oggetti contenuti in un altro oggetto. E` una cosa che potresti fare in JS, ma non credo che il gioco valga la candela: fai piu` presto a lavorare lato server.
    Sì infatti era la soluzione migliore.

    Però è una cosa che secondo me verrà introdotta nei CSS.
    I selettori imho sono una delle cose dei CSS che hanno un margine di evoluzione maggiore e che non sono ancora ben sviluppati (nonchè supportati ).

    Credo che prima o poi sarà possibile fare quello che chiedo. E' un passo naturale
    Magari coi CSS 4.0 :rollo:

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Come fai a sapere che uso ASP?
    Mi spìi?
    Sei veggente?!
    Non so neanch'io. Forse ho fatto confusione con un altro thread, o forse lo ho intuito dalla difficolta` che hai a fare una cosa che in altri linguaggi e` semplice.

    AAAaaaahhh!! Vade retro JS!
    E' poco accessibile il suo utilizzo, salvo casi particolari
    Mi stavo riferendo a JS lato server, naturalmente.
    E il suo utilizzo e` equivalente ad usare VBS, ma essendo un linguaggio piu` nuovo e OO certe cose si fanno con maggiore semplicita`.
    Io usavo VB qualche decina di anni fa (credo negli anni '80), poi quando e` uscito il C per i PC ho abbandonato VB.
    Anche l'unica volta che ho usato ASP ho usato JS come linguaggio.

    Credo che prima o poi sarà possibile fare quello che chiedo. E' un passo naturale
    Magari coi CSS 4.0
    Come dicevo gia` nel primo post, qualcosa e` possibile farlo anche con i CSS2; dei CSS3 ne so poco, ma potrebbe essere possibile. Il problema e` pero` il supporto da parte dei browser: finche` il piu` diffuso sara` IE, l'aggiornamento sara` lento.
    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 © 2026 vBulletin Solutions, Inc. All rights reserved.