Precedente :: Successivo |
Autore |
Messaggio |
juzo kun Dio maturo


Registrato: 19/04/04 09:32 Messaggi: 1853 Residenza: tra la tastiera e la sedia
|
Inviato: 25 Nov 2005 10:39 Oggetto: * Il W3C e gli hack |
|
|
Gli hack, in temini di CSS, sono quei pezzi di codice che sfruttano un errore di rendering di uno o più browser per passare un parametro altrimenti non interpretato, o interpretato male. Un esempio abbastanza classico è questo:
Codice: | div#blablabla { color:#ff0000; }
div[id="blablabla"] { color:#000000 !important; } |
L'identificazione dell'oggetto è la stessa (un <div> con classe "blablabla") ma Internet Explorer non riconosce la seconda e applica la prima, mentre i browser standard la riconoscono correttamente e applicano la seconda.
Tendenzialmente sarebbe meglio non usarli questi hack. Ma spesso non se ne può fare a meno, quando si usa il posizionamento e il float.
Alcuni hack sono compatibili in avanti, altri sono degli accrocchi di codice, altri hanno bisogno di markup aggiuntivo per funionare. E anche i migliori cadono in tentazione
Una volta per errore ho aperto il sorgente della pagina dei risultati di validazione del W3C, al posto di quella che stavo modificando io... e ho visto una cosa buffa nel codice:
Codice: | <div class="cheat"><!-- *sigh* --></div> |
Che cosa vuol dire? Già il nome della classe, che vuol dire "barare"... in pratica, è un <div> vuoto (e quindi, superfluo dal punto di vista semantico e strutturale) a cui è stato applicato un clear per terminare il float di un elemento precedente:
Codice: | fieldset div.cheat {
clear: both;
} |
La morale: a volte anche ai "guru" tocca usare delle pezze per far funzionare i fogli di stile su tutti i browser (quel 'sigh' commentato è decisamente significativo su quanto lo sviluppatore l'abbia fatto volentieri...)
Cià
JK |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 25 Nov 2005 12:22 Oggetto: |
|
|
caspita jk! mi stai buttando per aria una manciatina di certezze!
io uso normalmente il clear both a chiusura dei float, pensavo fosse prassi corrente accettabile ed accettata, non che si trattasse di un trick
scrib... scrib... ristudiarsi il float... scrib... scrib... |
|
Top |
|
 |
juzo kun Dio maturo


Registrato: 19/04/04 09:32 Messaggi: 1853 Residenza: tra la tastiera e la sedia
|
Inviato: 25 Nov 2005 12:53 Oggetto: |
|
|
'spé, il clear:both serve esattamente per quello! Fa parte della prassi
L'hack è appiccicarlo su un div vuoto messo lì esclusivamente per fare quello e nient'altro. Per esempio, mettere lì un <br /> o un <div></div> messo nel codice esclusivamente per questo e basta è un hack, metterlo al footer di un'impaginazione è normale (anzi, necessario se non vuoi che il footer si vada a incastrare dove non dovrebbe...)
Per chi mastica l'inglese, in questa pagina è spiegato il perché e il percome del clear e di come a volte bisogna fare qualche giro in più per convincere i vari browser che ad un certo punto bisogna 'andare a capo'.
[Gran parte dei rimedi proposti è indirizzata a IE per Macintosh, browser particolarmente rognoso. Ci sono varie dispute anche sul fatto se continuare a considerarlo oppure no ma questo è già un altro argomento...]
Cià
JK |
|
Top |
|
 |
horus Macchinista


Registrato: 22/03/05 10:48 Messaggi: 2554 Residenza: Sirio e dintorni
|
Inviato: 25 Nov 2005 13:35 Oggetto: |
|
|
Lascia perdere, ieri sera ho lottato per ore con il margin di IE.
Alla fine, per evitare di spargere div e simili in giro per la pagina, ho lasciato che lo interpretasse un po' come voleva accettando il fatto che il layout differisca (leggermente) a seconda dei browser. |
|
Top |
|
 |
juzo kun Dio maturo


Registrato: 19/04/04 09:32 Messaggi: 1853 Residenza: tra la tastiera e la sedia
|
Inviato: 25 Nov 2005 13:59 Oggetto: |
|
|
Che è esattamente il modo in cui deve essere considerato il web design
Cercare la perfezione al pixel su ogni browser è dispendioso (in termini di tempo e risorse) e rischia di essere una corsa inutile: sta uscendo Internet Explorer 7, alcuni difetti di rendering li hanno corretti, (molti) altri no, e si ricomincia.
Nella grafica a stampa si è abituati a pensare a una gabbia (è il termine tecnico) necessaria per la composizione: nella grafica per il web bisogna liberarsi di questo concetto. Pensare sì a una gabbia, ma esclusivamente "logica" (la struttura) e rendendo la grafica sussidiaria alla presentazione delle informazioni. Nella grafica a stampa i due concetti sono legati, in quella web non necessariamente, perché la sua fruizione passa per un elemento tecnologico quale un pc e un browser. Anzi, un sacco di browser.
Tutto 'sto pistolotto palloso per dire: lasciate perdere la perfezione del pixel... per quanto si scriva codice e si usino hack 'sta pagina non c'è modo di farla vedere ovunque come vuole chi la crea.
Il design cosiddetto "elastico" aiuta anche in questo. Nato per accomodare le esigenze degli utenti (usabilità, accessibilità e discorsi correlati) viene comodo anche per accomodare le fisime dei vari browser: nel senso che mi permette in certi casi di annullare gli errori di interpretazione (nel caso di Horus, del box-model che le vecchie versioni di IE interpretano a modo loro).
...non vi siete addormentati, vero? :ooops:
Cià
JK |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 25 Nov 2005 14:42 Oggetto: |
|
|
juzo kun ha scritto: | Che è esattamente il modo in cui deve essere considerato il web design  |
infatti
cmq spesso anch'io uso un div vuoto o meglio ancora un div che contiene un # nbsp ; altrimenti ff fa le bizze
(bizze: il div che contiene i due div flottanti rimane "arrotolato" in alto anziche' chiudersi sotto di essi ) |
|
Top |
|
 |
rebelia Dio maturo


Registrato: 17/07/03 09:22 Messaggi: 7987
|
Inviato: 26 Nov 2005 13:13 Oggetto: |
|
|
horus ha scritto: | Lascia perdere, ieri sera ho lottato per ore con il margin di IE.
Alla fine, per evitare di spargere div e simili in giro per la pagina, ho lasciato che lo interpretasse un po' come voleva accettando il fatto che il layout differisca (leggermente) a seconda dei browser. |
mi e' capitato di annidare due div per evitare sfanculamenti e di dare larghezza 97% margin left 1% a quello interno
lasciandolo trasparente ed usando l'allineamento del testo a bandiera, il contenuto sta al suo posto ed il contenitore non si sfascia
con un paio di accorgimenti nella progettazione della grafica, il risultato non e' male  |
|
Top |
|
 |
|