28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous !

Je bute sur un problème de CSS que je pensais pouvoir résoudre d'apres les nombreuses sources sur le web... mais que neni ! Je bloque !
Donc me voilà à exposer mon problème sur ce forum, dans l'espoir qu'un expert en CSS pourra me répondre ! Smiley cligne

Voilà, dans le cadre de la mise en place d'un "chat" web sur mon site : je désire une zone (DIV ? TD ?) de taille fixe (largeur et hauteur définie, sans ascenseurs, sans agrandissement de la zone si le texte à l'intérieur est trop grand).

Il faudrait que le texte dans cette zone ai des propriétés particulières :
- alignement bottom
- retour à la ligne des lignes trop grande horizontalement
- masquage du texte en haut s'il déborde de la zone (la zone doit etre de taille fixe et le texte aligné sur le bas).

Je ne sais pas si je suis assez explicite, mais voilà en gros !

Ha oui, et que ce soit compatible avec IE et Firefox !
Smiley cligne

Merci Merci à celui ou ceux qui auront une idée sur la façon de faire ...

Dexterin
Modifié par Dexterin (23 Oct 2006 - 17:20)
Administrateur
Hello Dexterin et bienvenue,

En fait, le problème de l'alignement vertical tient au fait que sur IE la propriété vertical-align (comme tu voudrais l'employer) ne fonctionne que sur des cellules de tableaux puisque IE ne reconnait pas la règle "display: table-cell" sur les autres éléments.

La solution la plus simple à mettre en oeuvre sera d'utiliser une cellule de tableau.
Modifié par Raphael (16 Oct 2006 - 15:30)
Ben je teste


<TABLE id="TABLE" width="250" height="150" 
Style="[b]background-color:#66FFCC;[/b]">
<TR>
<TD Style="[b]overflow:hidden; 
vertical-align=bottom;[/b]">

[#olive]Texte[/#]

</TD>
</TR>
</TABLE>


Et ca marche mais pas pour l'overflow ...

Car si je met plus de texte :


<TABLE id="TABLE" width="250" height="150" 
Style="[b]background-color:#66FFCC;[/b]">
<TR>
<TD Style="[b]overflow:hidden; 
vertical-align=bottom;[/b]">

[#olive]Début du texte<BR>Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla <BR>2<BR>3<BR>4<BR>5<BR>6<BR>7<BR>8<BR>9<BR>10<BR>11<BR>12<BR>13<BR>14<BR>15<BR>Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla Bla<BR>Fin du texte[/#]
</TD>
</TR>
</TABLE>

J'ai bien le retour à la ligne horizontalement, mais ... le tableau s'allonge en hauteur (alors que je voudrais que le debut du texte soit caché, le contenu étant aligne sur le bas)...

;-(

Ou diable je rate qqchose ?
Modifié par Dexterin (17 Oct 2006 - 09:03)
Bonjour Dexterin, et bienvenue sur ce forum.

Pas le temps tout de suite de me pencher sur ton problème, mais je peux déjà t'annoncer que tu risques fort de te faire tirer les oreilles par l'administrateur que tu viens de croiser, ou par un modérateur (moi, par exemple), pour cause de non respect d'une règle élémentaire de ce forum : mettre en forme le code que l'on poste sur le forum.
http://forum.alsacreations.com/help.php#regle13

Merci de corriger ton message (il y a un bouton d'édition en haut à droite) pour en tenir compte. Smiley smile
Modérateur
bonsoir,

pour realiser ce que tu veut faire , un tableau n'est pas forcement necessaire.
Par contre pour esperer avoir un resultat similaire dans chaque navigateur , il est fortement conseillé de s'appuyer sur les standards sans s'assoir dessus Smiley smile .

a priori , 1 conteneur devrait pouvoir aider a maitriser l'aspect visuel de son son contenu a l'aide d'une feuille de style.

premiere remarque a propos du tableau ,
par defaut il va s'adapter au contenu , pour le rendre entierement visible , ses dimensions sont donc des dimensions minimales !

seconde remarque , pourquoi un tableau , car manifestement même pour un rendu visuel a la mode des année 90 , ça ne marche pas ! est -il finalement approprié aux contenus ? si oui , alors autant le gardé , si non , on devrait s'en passer .

tu donne comme dimensions et comportement de base attendu par le conteneur direct ceci en css :
	height:150px;
	width:250px;
	overflow:hidden	;
vertical-align:bottom;

comme dit precedemment le overflow:hidden risque de ne pas avoir d'effet dans une cellule de tableau .
Mais un div (ou autre balise) oui !
usons alors d'un div comme conteneur supplementaire.

et maintenant ?
comment inverser ou contrecarrer le flux habituel ?
---> le position;absolute; ! tout a fait adapté !

alors le contenu devrait recevoir en css de base :


	position:absolute;
	bottom:0;

manque encore a lui donne sa position de reference en appliquant un position:relative au parent conteneur et d'assure le coup sur les fond de page transparent avec un overflow:hidden en plus .

une page d'exemple du resultat a tester :
http://gcyrillus.free.fr/trucs_css/tableaux_et_cellule_de_tailles_fixes_aligner_en-bas.html
et le code pour le copier/coller :
<!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>
<title>Page d'exemple pour tester le CSS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" >
body {
background:#555;
font-size:75%;
}
#conteneur {
width:700px;
margin:3em auto;
padding:1em;
background:#fff;
border:6px solid #EFDC0E;
}
h1 , h2 {border-bottom:2px solid #FFDFDF;margin:1em;text-align:center;}
p {
padding:2px;
}
#table {
	background-color:#66FFCC;
	height:150px;
	width:250px;
	margin:auto;

}
.chat{
	height:150px;
	width:250px;
	position:relative;
	overflow:hidden	;
	border: double 3px #999;
	margin:auto;

}
#table .chat{
	border:0;

}
.perche {
	position:absolute;
	overflow:hidden	;
	bottom:0;
	margin:0;
	padding:2px;
	list-style-position:inside;

}
li:first-letter {font-weight:bold;color:#7F1F35;padding-left:0.2em;}
li {text-indent:1em;margin-top:0.5em;}
#table td {
	vertical-align:top;
	height:150px;
	width:250px;
}

</style>

</head>
<body>
<div id="conteneur"
<h1>chat box , sur place ou a emporté ?</h1>

<h2> sur place !  ... 15% de service en sus </h2>
<table id="table" >
	<tr>
		<td >
			<div class="chat">

<ol class="perche">
<li>Lorem ipsum dolor sit amet, hymenaeos morbi, integer mi nulla platea viverra id, aliquam eu, non rhoncus nam quisque nec et nulla, 

sed pulvinar leo erat. </li>
<li>Donec et, tempus id nullam. </li>
<li>Sed sem turpis sit itaque, tristique amet maecenas eros id penatibus. </li>
<li>Rutrum ac leo, in iaculis sem. </li>
<li>Libero vulputate ut praesent nec, orci in arcu sodales, velit quis ultrices dui, sollicitudin urna gravida velit sem. </li>
<li>Turpis praesent varius, eros eget dictum nam. </li>
<li>Et cum volutpat aenean consectetuer, sit metus, magna quam nec egestas mattis, sit amet amet, lorem blandit diam neque ante 

suspendisse elit. </li>
<li>Massa aliquam morbi, arcu eleifend nulla ullamcorper dolor eu dui, ridiculus dolor phasellus, turpis ullamcorper aliquam, iaculis et 

rutrum. </li>
</ol>
	
			</div>
		</td>
	</tr>
</table>
<h2> a emporter ! pas de service, ni de table a debarrasser ! </h2>

			<div class="chat">

<ol class="perche">
<li>Lorem ipsum dolor sit amet, hymenaeos morbi, integer mi nulla platea viverra id, aliquam eu, non rhoncus nam quisque nec et nulla, 

sed pulvinar leo erat. </li>
<li>Donec et, tempus id nullam. </li>
<li>Sed sem turpis sit itaque, tristique amet maecenas eros id penatibus. </li>
<li>Rutrum ac leo, in iaculis sem. </li>
<li>Libero vulputate ut praesent nec, orci in arcu sodales, velit quis ultrices dui, sollicitudin urna gravida velit sem. </li>
<li>Turpis praesent varius, eros eget dictum nam. </li>
<li>Et cum volutpat aenean consectetuer, sit metus, magna quam nec egestas mattis, sit amet amet, lorem blandit diam neque ante 

suspendisse elit. </li>
<li>Massa aliquam morbi, arcu eleifend nulla ullamcorper dolor eu dui, ridiculus dolor phasellus, turpis ullamcorper aliquam, iaculis et 

rutrum. </li>
</ol>
	
			</div>
<p> hmm div , table ,   ....l'un ne remplace pas l'autre, l'un sert dans l'autre et devrait même suffire !</p>
</div>
</body>
</html>


ce qui est important , c'est d'utiliser un doctype valide , avoir un bon balisage et de creuser au mieux ce que peuvent etre les valeurs css les plus appropriées au comportement attendu .
aprés on croise les doigts en souhaitant ne pas avoir trop de bug ! Smiley lol

++
Ok, et merci bien pour cette aide, j'ai réussi à obtenir en me basant sur cet exemple ce que je voulais !
Merci Merci ...
(j'ai au passage reformaté mes message précédents, pour respecter la charte ! Smiley cligne ))

Pour le moment le chat n'est qu'au stade de dévellopement sur un site internet plus conséquent (et ya le javascript et le php à mettre en place aussi) mais dès que c'est en production, je donnerais l'URL ici pour montrer ce que cela donne ... et j'aiderai tout candidat désirant mettre un chat simple en javascript/php/mysql sur son site.

Mais une derniere question : j'essaye de mettre un scroll vertical (mais toujours pas de scroll horizontal) histoire de pouvoir remonter dans le chat, voir ce qui fut dit précédement et ... ben je n'y arrive pas !
Smiley bawling

Ya bien un
overflow:scroll;
à mettre qqpart, mais ou ?

J'ai vraiment tout à apprendre en CSS et mes expérimentations ne sont pas concluantes !

Encore merci !
Modérateur
bonsoir ...

le contenu se trouve dans .perche (que j'avais par ailleurs omis de dimensionné pour bien avoir les derniers textes en visuels ).

pour retrouver le "scroll" , il faut donc le dimensionné ....

.perche {
	position:absolute;
	overflow:auto;
height:150px;
width:242px;
	bottom:0;
	margin:0;
	padding:2px;
	list-style-position:inside;

}


mais là le contenu se reaffiche normalement , le debut est visible avec la barre de scroll pour acceder au reste ....

une solution peut etre de surchargé le css (overflow:auto + dimensions ) par le biais du javascript et faire scroller de toutes sa hauteur l'element " .perche ". (en passant , attribué un id a cette element ou passé la class en id , pour le ciblé au travers du dom).

La solution d'appliqué le css en "dynamique" , permettra au rare utilisateur qui ont desactivé javascript de voir les derniers "message" mais sans la possibilité de "scroller" ... a toi de voir quel solution ?

autre possibilite (la plus logique ) c'est d'afficher en premier les messages recents ... inverser le "flux" a l'affichage , enfin faire la requete qui va bien pour sortir les message dans le bon sens Smiley smile

++
Modifié par gcyrillus (17 Oct 2006 - 18:23)