28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous !

J'essaie de mixer deux exemples d'infobulle, un en css et l'autre avec un peu de javascript pour aider à remplir les champs d'un formulaire.

Sous firefox et Opéra ça fonctionne parfaitement, sous ie il m'affiche l'infobulle sous les champs du formulaire... Et je ne vois pas pourquoi, j'ai tenté de modifier les z-index dans otus les sens mais impossible de résoudre le bug.

Voici la page de mon test en question : http://membres.lycos.fr/csstests/bulle-formulaire/

Voici la structure html (dt, dd et span pour l'infobulle):
...
<dd>
  <input name="username" id="username" type="text" />
  <span class="aide">
    <span class="top"></span>
    <span class="middle">This is my Bubble Tooltip with CSS</span>
    <span class="bottom"></span>
  </span>
</dd>
<dt>
  <label for="password">Password:</label>
</dt>
<dd>
  <input name="password" id="password" type="password" />
  <span class="aide">
    <span class="top"></span>
    <span class="middle">This is my Bubble Tooltip with CSS</span>
    <span class="bottom"></span>
  </span>
</dd>...


La css :

dl
{
	font:normal 12px/15px Arial;
    width: 350px;
}
dt
{
    clear: both;
    float:left;
    width: 130px;
    padding: 4px 0 2px 0;
    text-align: left;
}
dd
{
    float: left;
    width: 200px;
    margin: 0 0 8px 0;
    padding-left: 6px;
	position: relative;
}
.aide
{
    display:none;
	z-index: 100;
    position:absolute;
	top: 15px;
	left: 50px;
	width: 196px;
	color: #496f00;
    text-align: center;
	filter: alpha(opacity:90);
	KHTMLOpacity: 0.90;
	MozOpacity: 0.90;
	opacity: 0.90;
}
.aide span.top
{
	display: block;
	padding: 40px 8px 0 0;
    background: url(tt-bg.gif) no-repeat top;
}
.aide span.middle
{ /* different middle bg for stretch */
	display: block;
	padding: 0 8px; 
	background: url(tt-extend.gif) repeat bottom; 
}
.aide span.bottom
{
	display: block;
	padding:3px 8px 15px 0;
	color: #ff6600;
    background: url(tt-bg.gif) no-repeat bottom;
}


et le javascript (je ne pense pas que le bug vienne du javascript) :
<script type="text/javascript">
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function prepareInputsForHints() {
	var inputs = document.getElementsByTagName("input");
	for (var i=0; i<inputs.length; i++){
		// test to see if the hint span exists first
		if (inputs[i].parentNode.getElementsByTagName("span")[0]) {
			// the span exists!  on focus, show the hint
			inputs[i].onfocus = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
			}
			// when the cursor moves away from the field, hide the hint
			inputs[i].onblur = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			}
		}
	}
	// repeat the same tests as above for selects
	var selects = document.getElementsByTagName("select");
	for (var k=0; k<selects.length; k++){
		if (selects[k].parentNode.getElementsByTagName("span")[0]) {
			selects[k].onfocus = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
			}
			selects[k].onblur = function () {
				this.parentNode.getElementsByTagName("span")[0].style.display = "none";
			}
		}
	}
}
addLoadEvent(prepareInputsForHints);
</script>


Merci pour votre aide Smiley cligne ![/i][/i][/i]
Modifié par tankia (14 Nov 2007 - 13:58)
Bonjour Tankia,

J'ai le même rendu sous IE6/7 et sous Firefox le tout sous windows !?
Un problème de cache navigateur ? Javascript désactivé ? OS différent ?

Bon courage Smiley cligne

Cdt,
Sylvain
Ah d'accord 6l20

tu testes l'exemple du script, chez moi aussi il marche bien.

Mais dans mon cas ce n'est pas tout a fait pareil car la bulle n'est pas sur le côté mais chevauche le formulaire.
Apparemment ça vient d'un bug de Internet Explorer...
Il ne gère pas bien les z-index et affiche les champ input par dessus.

Existe-t-il un hack ou autre pour ça ?
Bonjour à tous !

Je chercher je cherche mais aucune solution pour ce bug !

Quelqu'un a-t-il déjà eu ce soucis ?