Autore Topic: Aiuto su CSS  (Letto 4547 volte)

essedi

  • Anziani
  • Utente esperto
  • *
  • Post: 418
Aiuto su CSS
« il: 10 Maggio, 2013, 14:01:08 »
Questa espressione
 
        .sdMnMn > li:hover + li

seleziona il primo elemento li successivo a quello su cui si posiziona il cursore del mouse

Quest'altra
 
        .sdMnMn > li:hover ~ li

seleziona tutti gli elementi li successivi a quello su cui si posiziona il cursore del mouse

Esiste un sistema per selezionare tutti gli elementi li fratelli di quello su cui si posiziona il cursore del mouse, anche quelli precedenti?




lemonsong

  • Anziani
  • Utente storico
  • *
  • Post: 1867
    • lemonsong's world
Re:Aiuto su CSS
« Risposta #1 il: 10 Maggio, 2013, 16:09:23 »
Esiste un sistema per selezionare tutti gli elementi li fratelli di quello su cui si posiziona il cursore del mouse, anche quelli precedenti?

L'ho riletta più volte e sicuramente non ho capito:

Codice:
Only registered users can see contents. Please click here to Register or Login.
Se ho capito male, come non detto.

essedi

  • Anziani
  • Utente esperto
  • *
  • Post: 418
Re:Aiuto su CSS
« Risposta #2 il: 10 Maggio, 2013, 17:21:19 »
Esiste un sistema per selezionare tutti gli elementi li fratelli di quello su cui si posiziona il cursore del mouse, anche quelli precedenti?

L'ho riletta più volte e sicuramente non ho capito:

Codice:
Only registered users can see contents. Please click here to Register or Login.
Se ho capito male, come non detto.

 Sono io ad essermi spiegato male. A mia parziale discolpa c'è il fatto che la situazione non è semplice da descrivere.
 
sdMnMn è la classe attribuita al tag <ul> padre
Con
             .sdMnMn > li
assegno le proprietà degli elementi della lista in condizioni normali
 
Con
           .sdMnMn > li:hover 
assegno le proprietà dell'elemento della lista su cui posiziono il cursore del mouse
 
Voglio definire una regola che viene attivata solo quando posiziono il cursore su uno degli elementi della lista e che valga solo per i fratelli di esso.
 
La dichiarazione
          .sdMnMn > li:hover ~ li
 
realizza ciò che voglio, ma solo per gli elementi successivi. Non viene applicata agli elementi che precedono quello nello stato hover
 
Spero di essere riuscito a spiegarmi meglio, altrimenti abbiate pazienza.

Edit: aggiungo un esempio.

 In condizioni normali gli elementi della lista hanno uno sfondo bianco
Quando passo il cursore su uno degli elementi vorrei che lo stesso apparisse su sfondo grigio e tutti gli altri su sfondo verde.
 
 
« Ultima modifica: 10 Maggio, 2013, 17:26:53 da essedi »

lemonsong

  • Anziani
  • Utente storico
  • *
  • Post: 1867
    • lemonsong's world
Re:Aiuto su CSS
« Risposta #3 il: 10 Maggio, 2013, 20:54:13 »
Sono io ad essermi spiegato male. A mia parziale discolpa c'è il fatto che la situazione non è semplice da descrivere.

[...]

Edit: aggiungo un esempio.

 In condizioni normali gli elementi della lista hanno uno sfondo bianco
Quando passo il cursore su uno degli elementi vorrei che lo stesso apparisse su sfondo grigio e tutti gli altri su sfondo verde.


Era chiarissimo essedi, ho letto la domanda senza considerare i due esempi che hai postato  :)

Ho fatto un esempio per vedere se è quello che cerchi:

http://lemonsong.altervista.org/test_li/

E' una specie di accrocchio, forse coi CSS3 si può fare "naturalmente" e senza dubbio con jQuery andresti "sul sicuro".

Non so se si potrà applicare in tutte le situazioni, eventualmente posta un link con un esempio più completo.

Spero di aver capito, in caso contrario la colpa è del mio Ufficio Anagrafe  :)




essedi

  • Anziani
  • Utente esperto
  • *
  • Post: 418
Re:Aiuto su CSS
« Risposta #4 il: 10 Maggio, 2013, 22:38:24 »
Sono io ad essermi spiegato male. A mia parziale discolpa c'è il fatto che la situazione non è semplice da descrivere.

[...]

Edit: aggiungo un esempio.

 In condizioni normali gli elementi della lista hanno uno sfondo bianco
Quando passo il cursore su uno degli elementi vorrei che lo stesso apparisse su sfondo grigio e tutti gli altri su sfondo verde.


Era chiarissimo essedi, ho letto la domanda senza considerare i due esempi che hai postato  :)

Ho fatto un esempio per vedere se è quello che cerchi:

http://lemonsong.altervista.org/test_li/

E' una specie di accrocchio, forse coi CSS3 si può fare "naturalmente" e senza dubbio con jQuery andresti "sul sicuro".

Non so se si potrà applicare in tutte le situazioni, eventualmente posta un link con un esempio più completo.

Spero di aver capito, in caso contrario la colpa è del mio Ufficio Anagrafe  :)

 Intanto grazie per i suggerimenti e per il tempo che mi dedichi.
 
Poi una premessa. Sono fermamente convinto che in un forum in cui uno chiede aiuto ed altri rispondono, il dovere di essere chiaro e farsi capire spetta al primo. Per cui se le tue risposte, sempre molto valide, non risolvono il problema è perché il richiederne (io in questo caso) non è riuscito a spiegarlo bene. Questo deve essere chiaro.
 
Il tuo esempio funziona, ma non risponde in pieno alle mie necessità.  Appena posso pubblico un sito di esempio.
 
Il tutto è nato durante la preparazione, sempre a titolo di esercizio, di un menu orizzontale personalizzato, con sottomenu a cascata (appena pronto lo pubblico sul mio sito di test). Nella sua forma più elementare funziona anche senza la funzionalità richiesta. Nel tentativo di miglioralo, mi sono imbattuto in questa necessità di potere definire una regola valida per tutti i "fratelli" di un elemento nello stato di hover, sovrascrivendo tutte le regole precedentemente ad essi applicate.
Ripeto che il selettore ~ (sibiling) risponde allo scopo, ma seleziona solo gli elementi successivi e non anche quelli precedenti.
Nel frattempo, anche in base alle tue risposte, sto consolidando la convinzione che non è possibile ottenere quello che voglio solo con il CSS.

lemonsong

  • Anziani
  • Utente storico
  • *
  • Post: 1867
    • lemonsong's world
Re:Aiuto su CSS
« Risposta #5 il: 10 Maggio, 2013, 23:18:28 »
Appena posso pubblico un sito di esempio.

OK, aspettiamo l'esempio  :)


essedi

  • Anziani
  • Utente esperto
  • *
  • Post: 418
Re:Aiuto su CSS
« Risposta #6 il: 12 Maggio, 2013, 23:28:24 »
 Alla fine ho trovato il sistema di adattare il tuo codice in modo da ottenere il risultato voluto.
 
Qui l'esempio funzionante
 
http://www.essedi.altervista.org/_provamenuh/
 
In Impostazione Generali è stato inserito il CSS principale. In Proprietà Pagina la personalizzazione per ogni singola pagina, con l'ausilio dell'ID  della voce di menu in cui la pagina è inserita, tipo
 
.sdMnMn > li[id="sdMn1"] {
            background: #FFFFFF;   /* stesso sfondo del contenuto della pagina */
            height: 24px;
}
 
Mi serviva riportare l'altezza a 22 pixel in caso di mouse su una voce qualsiasi (il colore verde è solo per dare maggiore risalto al fenomeno).
 
Il tuo codice
.sdMnMn:hover > li {
            background: #99FF99;
}
inserito in Impostazioni Generali, non ha effetto sulla pagina aperta.
 
Ho dovuto inserirlo, integrato con l'ID, anche nelle Proprietà delle singole pagine
 
.sdMnMn:hover > li[id="sdMn1"] {
            background: #99FF99;
            height: 22px;
}
 
  Resta il mio dubbio iniziale
 
Questo è l'esempio da cui ero partito
http://www.essedi.altervista.org/_provamenuh0/
 
Nel CSS in Impostazioni Generali è stato inserito
 
.sdMnMn > li:hover ~ li {
            height: 22px;
            background: #99FF99;
}
Con il cursore su Pagina H1, va bene solo se la pagina aperta è Pagina H2 (a destra), mentre non funziona se la pagina aperta è la Home Page.
 
Perché non esiste un selettore simile che vale per tutti gli elementi adiacenti, a sinistra e a destra?
 

lemonsong

  • Anziani
  • Utente storico
  • *
  • Post: 1867
    • lemonsong's world
Re:Aiuto su CSS
« Risposta #7 il: 13 Maggio, 2013, 13:22:56 »
Mhmm, hai dovuto mettere del codice in ogni pagina per simulare una sorta di "tasto premuto", con JS era più pratico.

Visto che i li hanno un id, tutto questo selettore è superfluo:

.sdMnMn > li[id="sdMn2"]

... è sufficiente scrivere l'id: #sdMn2

Se ho visto bene eh.

Un problema dell'accrocchio e quello di dover fissare la larghezza di ul (.sdMnMn); se vai sopra lo spazio in orizzontale riservato al menu si attiva l'hover.
Potresti anche fissare la larghezza dell'oggetto HTML in header.

Perché non esiste un selettore simile che vale per tutti gli elementi adiacenti, a sinistra e a destra?

A questa domanda non posso rispondere ma visto quello che vuoi ottenere credo che usare solo i CSS sia la soluzione meno pratica.

Naturalmente questo è solo un mio pensiero.



stesil

  • Anziani
  • Utente storico
  • *
  • Post: 1219
    • quellidelcucuzzolo
Re:Aiuto su CSS
« Risposta #8 il: 16 Maggio, 2013, 22:36:45 »
Perché non esiste un selettore simile che vale per tutti gli elementi adiacenti, a sinistra e a destra?

Ciao,

ho cercato ma mi pare che proprio non esista un selettore css che può risalire l'albero del documento.
Quindi o l'accrocchio di lemon - come lo chiama lui - o jquery ... altre alternative io non ne vedo.  :)

Comunque il menu è proprio bello .

essedi

  • Anziani
  • Utente esperto
  • *
  • Post: 418
Re:Aiuto su CSS
« Risposta #9 il: 16 Maggio, 2013, 23:17:45 »

Ciao,

ho cercato ma mi pare che proprio non esista un selettore css che può risalire l'albero del documento.
Quindi o l'accrocchio di lemon - come lo chiama lui - o jquery ... altre alternative io non ne vedo.  :)

Comunque il menu è proprio bello .

Grazie per la conferma.

E' la seconda volta che Lemon mi fornisce una buona soluzione. La precedente riguardava il modo di centrare il piè di pagina fisso.
Non capisco perché lui li declassifichi ad "accrocchi": per me sono soluzioni molto valide.

Stavo facendo delle prove per sostituire dichiarazioni tipo .sdMnMn > li[id="sdMn2"] con un semplice #sdMn2. Nell'esempio (semplificato) di menu allegato fino ad ora funziona. In un progetto con un menu un po' più complesso no. Per cui credo che conserverò la struttura attuale.
 

lemonsong

  • Anziani
  • Utente storico
  • *
  • Post: 1867
    • lemonsong's world
Re:Aiuto su CSS
« Risposta #10 il: 17 Maggio, 2013, 12:51:47 »
E' la seconda volta che Lemon mi fornisce una buona soluzione. La precedente riguardava il modo di centrare il piè di pagina fisso.
Non capisco perché lui li declassifichi ad "accrocchi": per me sono soluzioni molto valide.

Grazie essedi  :)

Non c'è un perché, ogni tanto mi esce fuori quel termine; forse lo uso quando penso/credo siano soluzioni temporanee, in attesa di meglio... una specie di "toppa"  :)


essedi

  • Anziani
  • Utente esperto
  • *
  • Post: 418
Re:Aiuto su CSS
« Risposta #11 il: 18 Maggio, 2013, 21:12:09 »
E questo è il risultato finale della nostra discussione.

http://www.essedi.altervista.org/_menuH/


GDR

  • Moderatore globale
  • Utente anziano
  • *****
  • Post: 576
Re:Aiuto su CSS
« Risposta #12 il: 19 Maggio, 2013, 23:05:54 »
...non male, bravo.