Newsgroup: it.comp.www.html
Titolo: Errore nella validazione

Mi sono accorto che le mie pagine non validano a causa di un <br> che 
uso solamente per inserire un clear per il float.
Questo è una versione ridotta del codice:
<html xmlns="
http://www.w3.org/1999/xhtml
">
  <head>
    <title>Prova</title>
    <link type="text/css" rel="stylesheet" href="layout.css" />
  </head>
  <body>
    <div id="top-section">
      Prova
    </div>
    <div id="middle-section">
      <div id="menu-sito">
        <span class="titolo-menu">SITO</span> 
        <ul>
          <li><a href="index.html"><span class="visibile">Home</span></a>/li>
        </ul>
      </div>
      <div id="menu-pagina">
        <span class="titolo-menu">PAGINA</span> 
        <ul>
          <li><a href="#Introduzione">Introduzione</a></li>
        </ul>
      </div>
      <div id="corpo">
        <div class="sezione">
          .: Introduzione :. <a id="Introduzione" name="Introduzione"></a>
        </div>
        Blabla bla bla ....
      </div>
    </div>
    <br class="clear-float" />   <------------
    <div id="bottom-section">
    Bla bla bla bla
    </div>
  </body>
</html>
L'errore è il seguente :
document type does not allow element "br" here; missing one of "p", 
"h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset", 
"ins", "del" start-tag 
e si riferisce alla linea che ho segnato con la freccia. Come suggerito 
ho provato a sostituire il br con un <p> vuoto, in effetti così valida 
ma il clear-float non funziona più. In pratica la classe clear-float 
contiene solo un clear:right che mi serve perchè il body ha impostata la
proprietà float:right.
Qualche suggerimento sul perchè non valida? Qualche suggerimento su come
risolvere?
La classe clear float 
-- 
After I cook the vegetables, what do I do with the wheelchairs?
 |\ |       |HomePage   : 
http://digilander.libero.it/nemesis2001/
 | \|emesis |XPN (my nr): 
http://digilander.libero.it/nemesis2001/Xpn.html

Nemesis  ha scritto:
| Mi sono accorto che le mie pagine non validano a causa di un <br> che
| uso solamente per inserire un clear per il float.
[mega-cut]
| L'errore è il seguente :
|
| document type does not allow element "br" here; missing one of "p",
| "h1", "h2", "h3", "h4", "h5", "h6", "div", "pre", "address", "fieldset",
| "ins", "del" start-tag
|
| e si riferisce alla linea che ho segnato con la freccia. Come suggerito
| ho provato a sostituire il br con un <p> vuoto, in effetti così valida
| ma il clear-float non funziona più. In pratica la classe clear-float
| contiene solo un clear:right che mi serve perchè il body ha impostata la
| proprietà float:right.
Ciao Nemesis, non valida perchè in sostanza non puoi inserire del testo
direttamente nel body. Il <br> è stato pensato per dare un a-capo a due righe
di testo, e quindi va incluso, come ti siggerisce il validatore, dentro uno dei tag
predisposti a contenere del testo.
Una soluzione semplice semplice: dare un clear a un <div> invece che a un <br>
***css***
div.clearer{
    clear: all  /*o solo left o solo right, dipende da cosa ti serve*/
    }
***html***
<body>
    <div id="middle-section">
        <!--ecc... -->
    </div>
    <div class="clearer"></div>
    <div id="bottom-section">
        <!--ecc... -->
    </div>
</body>
Saluti,
    SantaKlauss

     }
clear: all? ma esiste?
clear: none | left | right | both | inherit
http://www.w3.org/TR/CSS21/visuren.html#flow-control
IE ha colpito ancora :)
-- 
email: goldicus1970 AT 
yahoo.it
web: 
http://www.deelan.com

| SantaKlauss ha scritto:
| >
| > div.clearer{
| >     clear: all  /*o solo left o solo right, dipende da cosa ti serve*/
| >     }
deelan ha puntualizzato:
| clear: all? ma esiste?
Ooops *<|:-) era un post quasi perfetto... peccato x la svista!
Scusate l' errore, era ovviamente:
clear: both
Saluti,
    SantaKlauss

***css***
[cut]
A parte il "all" che ti ha fatto notare deelan, il codice non funziona.
Cioè se il clear lo faccio con il div, Mozilla(da 1.3 in poi mi pare) lo 
ignora, in effetti una delle prime prove era stato quello di inserire il
clear tra gli attributi della "bottom-section". Stesso discorso con <p>, 
Mozilla effettua correttamente il clear solo se uso <br>.
A questo punto vi chiedo, è un bug di Mozilla oppure c'è qualche errore 
di fondo?
-- 
Computers follow your orders, not your intentions.


 di fondo?
mmm, io quel trucco del "clear:" lo uso spesso, tipo:
http://www.deelan.com/redesign/03/
il <div> a destra ha un float:right, la sidebar non ha impostato nessun
float, il copyright sotto e', semplificando:
<p class="clear:both">blah blah blah</p>
che e' necessiario per resettare il float e fare in modo che il <p>
del copyright stia sempre sotto alla sidebar, qualsiasi sia la lunghezza
del testo a destra, cioe' del contenuto principale della pagina.
insomma l'idea e' quella di applicare il clear:both al primo
div che deve "staccare" che, se ho capito bene, nell'esempio
dell'autore del thread e' "bottom-section".
ciao.


Nemesis ha scritto:
| Cioè se il clear lo faccio con il div, Mozilla(da 1.3 in poi mi pare) lo
| ignora, in effetti una delle prime prove era stato quello di inserire il
| clear tra gli attributi della "bottom-section". Stesso discorso con <p>,
| Mozilla effettua correttamente il clear solo se uso <br>.
| A questo punto vi chiedo, è un bug di Mozilla oppure c'è qualche errore
| di fondo?
Non credo che sia un bug di mozilla, il mio sito ad esempio, come la pagina
postata da deelan, usano il clear senza problemi. Credo sia una questione
di codice. A parte il <br> ti dà altri errori la validazione dell' html?
Comunque, credo che ci siano molti modi per risolvere la cosa e far si
che il codice venga validato, eccone un paio che mi vengono in mente:
- mettere il clear al footer (ma mi pare che tu abbia detto che non funziona)
- tra il corpo centrale e il footer mettere:
  <div>
     <br style="clear: both">
  </div>
Fammi sapere se hai risolto, e se non sei riuscito magari metti on-line la pagina
così ci dò uno sguardo.
Ciao,
    SantaKlauss

del testo a destra, cioe' del contenuto principale della pagina.
Ho visto (a proposito, quel layout è veramente carino) ma il punto è che 
Mozilla non mi digerisce il clear se lo metto nel <div id="bottom">.
Cmq penso di aver risolto mettendo il <br class="clear-float" /> 
all'interno della middle-section e non all'esterno, il motivo lo ignoro 
ma così funziona e valida.
-- 
Daddy, why doesn't this magnet pick up this floppy disk?


così ci dò uno sguardo.
Come ho scritto nell'altro post ho risolto mettondo il br all'interno 
della middle-section.
-- 
If you ain't makin' waves, you ain't kickin' hard enough!
