# Div animiert ausfahren lassen



## anve (9. August 2011)

Hi!

Ich will dass bei Mouseover ein DIV-Bereich herausfährt. Ich habe aber noch keine Ahnung wie JavaScript funktioniert. Jedoch habe ich mir folgendes JavaScript zusammengebastelt:


```
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
		<script type="text/javascript">
			function fadeout(){
				jQuery('#Content').animate({
					opacity: 1,
					width: 'toggle'
					}, 307, function() {
				});
		</script>
```

HTML:

```
<div id="Element" onmouseover="fadeout()">
				<a href="#"><img src="./images/button.png" width="59" height="170" /></a>
				<div id="Content">
                                         <!-- der  Inhalt den ich herausfahren lassen will-->
```

Mittels onmouseover soll die Funktion fadeout aufgerufen werden, die das animieren für mich erledigt (später evtl. Content als Parameter). Passieren tut gar nichts, aber so in der Richtung sollte es gehen ...

Vielen Dank für eure Hilfe!


----------



## SpiceLab (9. August 2011)

```
$("#Element").hover(function(){
  $("#Content").animate({
    // hier folgen die Animationsparameter
  }, 1500 );
});
```


```
<div id="Element"><!-- ohne onmouseover-Event -->
```

Siehe http://api.jquery.com/animate/


----------



## Quaese (9. August 2011)

Hi,

die obige Funktion sollte auch funktionieren, allerdings fehlt eine schliessende Klammer:

```
function fadeout(){
        jQuery('#Content').animate({
            opacity: 1,
            width: 'toggle'
            }, 307, function() {
        });
    }  // Diese Klammer fehlt
```
Ciao
Quaese


----------



## zer0 (9. August 2011)

Solltest dir mal Firebug installieren, dann werden dir solche syntaktischen Fehler nicht mehr passieren!


----------



## anve (9. August 2011)

Vielen Dank für die Antworten!

Ich habe jetzt die Klammer hinzugefügt und (ich hätte es mir nicht gedacht) es geht soweit. Jedoch findet die Animation durchgehend statt. Kann man das einmal ausfahren lassen und dann das div-Element festbleibend anzeigen, außer der User geht mit der Maus vom ausgefahrenen div-Element weg?

PS: Ich habe Firebug, aber wie kann ich damit den Fehler finden?


----------



## Quaese (10. August 2011)

Hi,

dafür gibt es in jQuery die Events mouseenter und mouseleave. Wenn du diese verwenden möchtest, solltest du jedoch auf die Schreibweise umstellen, die dir @spicelab vorgestellt hat.

Beispiel:

```
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
  $('#Element').mouseenter(function(){
    jQuery('#Content').animate({
      opacity: 1,
      width: 'toggle'
    }, 307, function() {
    });
  });

  $('#Element').mouseleave(function(){
    jQuery('#Content').animate({
      opacity: 1,
      width: 'toggle'
    }, 307, function() {
    });
  });
});
</script>
</head>
<body>
<div id="Element" onmouseover="fadeout()">
  <a href="#"><img src="bild.jpg" width="59" height="170" /></a>
  <div id="Content">
  	der  Inhalt den ich herausfahren lassen will
  </div>
</div>
</body>
</html>
```
Ciao
Quaese


----------



## zer0 (10. August 2011)

anve hat gesagt.:


> PS: Ich habe Firebug, aber wie kann ich damit den Fehler finden?



Öffne mal Firebug. Du siehst 6 verschiedene Tabs: Konsole, HTML, CSS, Skript, DOM und Netzwerk.

Klicke jeden mal durch. Es kann sein das sie noch nicht alle aktiv sind. Aktiviere sie und besuche deine Seite. Das Firebug Icon in der rechten unteren Ecke sollte in Farbe sein und _NICHT_ graustufig. Firebug sollte dir dann wenn du es öffnest den Fehler in der Konsole anzeigen!

Gruß


----------



## anve (10. August 2011)

Der Code von spicelab funktioniert nur mit $(function()


```
$(function(){
				$('#Elements').hover(function(){
				  $('#Contents').animate({
					// hier folgen die Animationsparameter
					opacity: 1,
					width: 'toggle'
				  }, 1500 );
				});
			});
```

@Quaese:
Ich hab deinen Code probiert. Jedoch macht der immer noch dasselbe (fährt ein und aus, und bei Mouseover bei Elements wird gar nichts angezeigt). Ein Einfahren würde ich nicht unbedingt benötigen (schaut jedoch besser aus). Ich hab diesen Teil mal weggelassen, jedoch verschwindet das div nicht mehr. Nun habe ich stattdessen hide benutzt:


```
$('#Elements').mouseleave(function(){
					jQuery('#Contents').hide('slow');
				});
```
Das Problem hierbei ist, beim ersten Mal verschwindet das div wieder. Bei weiteren Mouseover gehts normal.


----------



## Quaese (10. August 2011)

Hi,

wenn du anfangs das Element versteckst und dann die Transparenzen korrekt setzt, sollte es funktionieren.

```
$(function(){
  $('#Content').animate({
    opacity: 0,
    width: 'toggle'
  }, 0);

  $('#Element').mouseenter(function(){
    $('#Content').stop(true, true).animate({
      opacity: 1,
      width: 'toggle'
    }, 307);
  });

  $('#Element').stop(true, true).mouseleave(function(){
    $('#Content').animate({
      opacity: 0,
      width: 'toggle'
    }, 307);
  });
});
```
Ciao
Quaese


----------



## anve (10. August 2011)

Hallo Quaese!

Hier meine Probleme die ich hatte:

Wenn ich im CSS bei Content display:none und display:block im hover von Content rausschmeiße, dann gehts. Ansonsten fährt das div Element ein und aus sobald ich die Maus bewege und über dem vermeintlich versteckten div Element bin.

Jetzt habe ich das bei zwei Elementen probiert (also zwei Mal function). Beim zweiten Element fangen dann wieder die Aus- und Einfahrprobleme an ...

LG
anve


----------

