Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

CSS, attribut "clear"

58 réponses
Avatar
Mihamina Rakotomandimby
Bonjour,

J'ai beau regarder les docs et les tutoriels existants, je ne trouve pas
d'explication satisfaisante sur l'usage et la signification de "clear".

Ce que je ne comprend pas c'est:
- qu'est-ce qui passe à la ligne apres le "clear"?
- qu'est ce que "clear" chamboule?

Jusque là je n'ai pas eu obligation de l'utiliser, mais je vois par
exemple que Joomla (les templates joomlart, plus exactement) l'utilise
beaucoup, et quand je customise ces templates en enlevant le "clear", ça
ne change pas grand chose...

En gros, j'ai regardé la théorie, je comprends pas.
J'ai expérimenté sur des cas de la vraie vie, je comprends pas.

Peut-être un des contributeurs de ce groupe aurait le "truc" qui
m'aiderai :)

Merci d'avance.

--
Huile Essentielle de Camphre http://www.huile-camphre.fr
Infogerance http://www.infogerance.us
(Serveurs, Postes de travail, Développement logiciel)

10 réponses

1 2 3 4 5
Avatar
Thibault Jouan
On 2008-03-18, Sergio wrote:
Il se trouve que Une Bévue a formulé :

j'ai eu un pb avec un clear, le code :
css :
div.clear {
clear:both;height:1px;overflow:hidden;
}

html :
<div class="clear"></div>

ça, ça marche comme je veux...



Perso, je fais :

<br style="clear:both" />

Voire, quand on n'est pas obsédé par les CSS et qu'on n'a pas peur des
"deprecated" :
<br clear="all" />

Là ça passe à tous les coups...



J'utilise une autre solution, je la propose :

.clear:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

Ensuite j'utilise cette classe sur le parent de mes éléments flottant,
par exemple :

CSS :

div.element img {
float: left;
}

XHTML :

<div class="element clear">
<img src="toto" alt="titi" />
bla bla bla
</div>

Comme ça il n'est pas nécessaire d'avoir un élément de plus dans la
page, qui selon moi n'a rien à y faire d'un point de vue sémantique.

--
Thibault Jouan
Avatar
Lea GRIS
Olivier Miakinen a écrit :
Le 18/03/2008 11:39, SAM répondait à Une Bévue :
je poste ça car j'ai mis pas mal de temps à comprendre que mon layout
avait été complétement chamboulé par le passage de '<div
class="clear"></div>' à '<div class="clear"/>'...





Mais je suppose que ton code XHTML était annoncé avec le Content-Type
text/html pour être lisible par Internet Explorer, non ? Dans ce cas,
les navigateurs ne le considèrent pas comme du XML mais comme du HTML
mal formé, et il appliquent donc les règles de HTML dans la mesure de
leurs moyens. Or <div/> n'est pas une syntaxe autorisée en HTML.

Pourtant il est usuel d'avoir :
<hr class="clear" />
et que ça fonctionne, non ?



Oui, mais là c'est exactement l'inverse : contrairement à l'élément DIV
qui est censé avoir du contenu, l'élément HR est censé être vide. Dans
ce cas, c'est la syntaxe <hr></hr> qui risque de poser des problèmes aux
navigateurs.



Pour ce genre de problèmes j'utilise une petite astuce qui fonctionne
merveilleusement bien avec Apache :

Il est possible d'adapter cette réécriture du type MIME aux différents
langages de scriptes; puisqu'il suffit d'interroger la variable
d'en-tête HTTP_ACCEPT et envoyer le type MIME compatible.

# Servir les pages xhtml avec le type MIME text/html
# aux navigateurs qui ne comprennent pas le application/xhtml+xml

AddType application/xhtml+xml .xhtml

RewriteEngine On
RewriteBase /

# l'en-tête Http Accept ne contient pas "application/xhtml+xml"
RewriteCond %{HTTP_ACCEPT} !application/xhtml+xml

# l'en-tête Http Accept contient "text/html" OR "*/*"
RewriteCond %{HTTP_ACCEPT} (text/html|*/*)

# Le fichier demandé se termine en .xhtml
RewriteCond %{REQUEST_FILENAME} .*.xhtml

# L'expression prend en compte toute URL :
# - Signifie pas de substitution.
# T définit le type MIME comme text/html,
# L indique que c'est la dernière règle
RewriteRule ^.*$ - "[T=text/html,L]"


--
Léa Gris
Avatar
unbewusst.sein
Thibault Jouan <tj+ wrote:

Ce que je ferai, c'est faire flotter l'image *et* l'adresse :

#img,
#addr {
float: left;
}

En supposant que #img est l'image est #addr le conteneur de tes
adresses. Je rajouterai aussi un clear après le conteneur de ces deux
éléments.



OK, merci bien, j'essaie derechef ;-)
--
Une Bévue
Avatar
Olivier Miakinen
Le 18/03/2008 14:11, Lea GRIS m'a répondu :

Mais je suppose que ton code XHTML était annoncé avec le Content-Type
text/html pour être lisible par Internet Explorer, non ? Dans ce cas,
les navigateurs ne le considèrent pas comme du XML mais comme du HTML
mal formé, et il appliquent donc les règles de HTML dans la mesure de
leurs moyens. Or <div/> n'est pas une syntaxe autorisée en HTML.
[...]



Pour ce genre de problèmes j'utilise une petite astuce qui fonctionne
merveilleusement bien avec Apache :

[...]

# Servir les pages xhtml avec le type MIME text/html
# aux navigateurs qui ne comprennent pas le application/xhtml+xml

[...]



Et donc tu auras un rendu correct dans les navigateurs traitant le XML,
mais complètement bugué dans les autres... Je suis d'accord que c'est
une bonne idée pour vérifier que notre code XML est correct (et pour
préparer l'avenir) mais cela ne doit pas nous dispenser de faire en
sorte que la soupe de balises qu'est XHTML en text/html ne soit pas
trop éloignée de la norme HTML 4.01.
Avatar
SAM
Une Bévue a écrit :

ce que je souhaite obtenir :

|---------------| Adresse personnelle:
| |
| photo | 2, rue de la Poupée qui tousse
| | 75016 Paris
| | Adresse travail :
| |
|---------------| 56, rue du Lapin qui fume
75007 Paris

c'est-à-dire qu'une adresse commencée à droite reste avec son décalage.



suffit qu'elle soit dans un block flottant, non ?

<http://cjoint.com/data/dsqi2ug8Au_flottage.htm>
(en bas)

--
sm
Avatar
SAM
Thibault Jouan a écrit :

Comme ça il n'est pas nécessaire d'avoir un élément de plus dans la
page, qui selon moi n'a rien à y faire d'un point de vue sémantique.




Pas très certain ... une adresse (avec son intitulé) pourrait être
assimilée à une définition (qui fait partie des balises genre listes)


--
sm
Avatar
unbewusst.sein
SAM wrote:


suffit qu'elle soit dans un block flottant, non ?

<http://cjoint.com/data/dsqi2ug8Au_flottage.htm>
(en bas)



chouette !!!

--
Une Bévue
Avatar
Thibault Jouan
On 2008-03-18, SAM wrote:
Thibault Jouan a écrit :

Comme ça il n'est pas nécessaire d'avoir un élément de plus dans la
page, qui selon moi n'a rien à y faire d'un point de vue sémantique.




Pas très certain ... une adresse (avec son intitulé) pourrait être
assimilée à une définition (qui fait partie des balises genre listes)




Soit je ne me suis pas bien expliqué, soit je n'ai pas compris ton
exemple. Voici le type de chose qui me « gène » :

<div>
<div style="float: left; width: 49%">
bla bla
</div>
<div style="float: left; width: 49%">
bla bla
</div>
<div>
<div style="clear: both;"></div>


Je préfère :

clear:after {
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

<div class="clear">
<div style="float: left; width: 49%">
bla bla
</div>
<div style="float: left; width: 49%">
bla bla
</div>
<div>

Ce qui me gène ici c'est que le dernier div n'a selon moi aucun sens,
donc je préfère la solution que j'ai évoquée, c'est à dire faire le
clear uniquement en CSS sans toucher à la structure du document.

Par contre si à chaque « clear » on devait avoir quelquechose de
« visible » là j'opterai pour la seconde.

D'une manière générale je préfère éviter de modifier la structure du
document pour ce qui concerne uniquement l'apparence. De même, sauf
bonnes raisons j'évite les style="" en dur comme ceux que j'ai écrits au
dessus :-)

--
Thibault Jouan
Avatar
Andreas Prilop
On Tue, 18 Mar 2008, Lea GRIS wrote:

# Servir les pages xhtml avec le type MIME text/html
# aux navigateurs qui ne comprennent pas le application/xhtml+xml



Bullshit!

Il suffit d'utiliser le suffixe .html

http://www.unics.uni-hannover.de/nhtcapri/temp/ignore-content-type.x.html

--
In memoriam Alan J. Flavell
http://groups.google.com/groups/search?q=author:Alan.J.Flavell
Avatar
SAM
Thibault Jouan a écrit :
On 2008-03-18, SAM wrote:
Thibault Jouan a écrit :
Comme ça il n'est pas nécessaire d'avoir un élément de plus dans la
page, qui selon moi n'a rien à y faire d'un point de vue sémantique.



Pas très certain ... une adresse (avec son intitulé) pourrait être
assimilée à une définition (qui fait partie des balises genre listes)



D'une manière générale je préfère éviter de modifier la structure du
document pour ce qui concerne uniquement l'apparence. De même, sauf
bonnes raisons j'évite les style="" en dur comme ceux que j'ai écrits au
dessus :-)



c'est à dire que ce que j'ai compris :
- on traite des fiches <- un block me semble OK
- fiche avec image <- une img me semble OK
- fiche avec adresse(s) <- une liste me semble OK (definition = super)

ce qui donnerait :

<div class='trombine'>
<h2>Dupond>/h2>
<img src="dupont.jpg" atl="">
<dl>
<dt></dt>
<dt>Adresse personnelle:</dt>
<dd>2, rue de la Poupée qui tousse</dd>
<dd>75007 Paris</dd>
<dt>Adresse travail :</dt>
<dd>56, rue du Lapin qui fume</dd>
<dd>75007 Paris</dd>
</dl>
</div>


Bon ... on pourrait peut-être aller jusqu'à :

<ul id="trombine">
<li>
<h2>Dupond</h2>
<img src="dupont.jpg" atl="">
<dl>
<dt></dt>
<dt>Adresse personnelle:</dt>
<dd>2, rue de la Poupée qui tousse</dd>
<dd>75007 Paris</dd>
<dt>Adresse travail :</dt>
<dd>56, rue du Lapin qui fume</dd>
<dd>75007 Paris</dd>
</dl>
</li>
<li>
<h2>Durand</h2>
<img src="durand.jpg" atl="">
<dl>
<dt></dt>
<dt>Adresse personnelle:</dt>
<dd>2, rue de la Momie qui tousse</dd>
<dd>75007 Paris</dd>
<dt>Adresse travail :</dt>
<dd>56, rue du Zombi qui fume</dd>
<dd>75007 Paris</dd>
</dl>
</li>
</ul>


Mais là je ne suis pas certain que ce soit autorisé tout ce St Frusquin
dans les LI.

Néanmoins Firefox n'a pas l'air de râler :
<http://cjoint.com/data/dsrbmktVT2_flottage.htm>
et ... ce n'est pas si mal avec ou sans CSS
(pas regardé si IE ...)

--
sm
1 2 3 4 5