Newsgroup: it.comp.www.html
Titolo: barre di scorrimento e div centrati [Opera / Mozilla]

Ho notato che in Opera e Mozilla (ultime versioni) centrando un div in una
pagina assegnandoli margini laterali pari ad auto ho uno spostamento dello
stesso se la pagina eccede una schermata. Questo visivamente perchč sia
Opera che Mozilla non rendono visibile la barra verticale di scorrimento del
browser se non č necessaria, cosa che invece Explorer fa.
Non č un grosso inconveniente ma vi pongo qualche domanda:
Sembra a mio avviso piů corretto il comportamento di Explorer che dei due
browser che rispettano le specifiche, non č cosě?
Si puň fare qualcosa per evitare che ciň accada senza perderci troppo tempo?
Grazie
E.L.

 Si puň fare qualcosa per evitare che ciň accada senza perderci troppo
tempo?
In un modo o nell'altro si puo' risolvere tutto, pero' se fosse un po' piu'
chiaro cosa...


Hai ragione sono stato poco chiaro, l'ora era tarda; ora cercherň di farmi
perdonare.
Allora io mi riferisco semplicemente alla barra di scorrimento verticale del
browser (posizionata all'estrema destra della pagina per intenderci) che nel
caso di explorer č sempre presente anche se non viene utilizzata. come nel
caso di una pagina qualsiasi che non occupa piů di una schermata. Opera e
Mozilla invece questa barra non la fanno vedere se la pagina occupa una sola
schermata. Se invece la pagina occupa piů di una schermata ecco che la barra
di scorrimento compare e tutto il mio layout si sposta a sinistra  di un po'
di pixel quanti sono quelli occupati dalla barra di scorrimento appena
comparsa. Chiaro? No, bene, mi aiuto con un esempio. Ho creato una pagina,
quadrato1.htm con questo codice:
css:
#contenitore {
 background-color: #FF0000;
 height: 450px;
 width: 450px;
 margin-top: 0px;
 margin-right: auto;
 margin-bottom: 0px;
 margin-left: auto;}
html:
<div class="style1" id="contenitore"><a
href="quadrato2.htm">quadrato2</a></div>
Ora la pagina quadrato2.htm, a cui questa che appena descritto punta,
differisce dalla stessa nella altezza del contenitore e cioč:
css:
#contenitore {
 background-color: #FF0000;
 height: 1500px;
 width: 450px;
 margin-top: 0px;
 margin-right: auto;
 margin-bottom: 0px;
 margin-left: auto;}
Ora se ti crei le due pagine e selezioni il collegamento non vedrai nessuno
spostamento con explorer, se invece lo fai con Moz o Opera, come ho detto in
precedenza, vedrai che il div si sposta a sinistra di tanti pixel quanto
sono quelli occupati dalla barra di scorrimento.
Ora, il DTD č corretto, potrei avere fatto qualche errore ma mi sembra
proprio di no. E quindi la mia domanda lecita, credo, č questa non sembra
piů coerente il comportamento di Explorer rispetto a quello degli altri due
browser? C'č modo di risolvere l'inconveniente?
Se non ti č ancora chiaro posso mandarti per email le pagine o anche due
stampe delle schermate...
Spero di essere stato chiaro ora!
Grazie e saluti
E.L.

 Grazie e saluti
Prego e ciao
Fammi sapere qualcosa...

 20:26 tardi?!? A che ora vai a dormire? :)
Ero in piedi dalle 5.30 di mattina, quindi l'ora era tarda :))
Non quoto altro perchè è chiaro quello che mi hai detto; la mia era solo una
curiosità e ti dirò che se per aggiustare le cose devo aggiungere del codice
javascript lascio tutto com'è e chissenefrega.
Però onestamente continuo ad essere convinto che sia più coerente il
comportamento di IE6 (che ti assicuro so quanto schifo fa nel supporto ai
css), ma, non lo so, per questa cosa e solo per questa non mi convince il
comportamento dei browser che rispettano appieno (o quasi) gli standard. E'
solo un opinione è chiaro, grazie cmq per la risposta.
E.L.

 solo un opinione è chiaro, grazie cmq per la risposta.
Cioe', ritieni che i browser debbano avere sempre in primo piano la
scrollbar anche quando non serve?
Seguimi in questo esempio, supponiamo di avere 2 div:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
">
<html xmlns="
http://www.w3.org/1999/xhtml
">
<head>
<style type="text/css">
<!--
div {
 height: 50px;
 overflow: auto;
 background-color: #0066CC;
}
-->
</style>
</head>
<body>
<div>Ciao</div>
<br />
<div><br /><br /><br /><br /></div>
</body></html>
come vedi nel PRIMO non compare la scrollBAR nel secondo SI!!! E questo lo
fanno tutti i browser...
Il body e html, a parere mio, dovrebbero comportarsi allo stesso modo! E poi
ancora piu' importante, cosi' non si sprecano pixel che potrebbero essere
utili...
Caso mai, puoi obbiettare la scelta che fanno MZ, NN, OP nel far apparire
totalmente la scrollbar nei div anche quando il loro contenuto non ha
raggiunto ancora gli estremi quando lo si impone via CSS.
In questo caso, a parere mio, IE si comporta meglio: il cursore della
scrollBar non appare...
Per verificare cio', sostituisci lo stile precedente con questo e poi
confronta con piu' browser il risultato, osservando il primo <div>:
<style type="text/css">
<!--
div {
 height: 50px;
 overflow: scroll;
 background-color: #0066CC;
}
-->
</style>
Ciao

 utili...
Su questo ti do ragione, anzi probabilmente è questa la ragione: op e moz si
comportano in questo modo proprio per quel motivo, garantire tutti i pixel
disponibili, niente da eccepire...
Un'ultima cosa, mi hanno anche suggerito anche di dichiarare
html {height:100%}
body {height:101%}
in modo tale che la barra campaia sempre con tutti i browser e non vi sia
quel piccolo inconveniente. Se dovessi decidere di modificare le pagine
credo che utilizzerei questo metodo.
In ogni caso grazie per aver perso tempo a parlare con me.
E.L.