Hallo Leute,
mich interessiert schon seit längerem wie die Frameworks die Effekte wie Slide erzeugen, wo man dann sogar noch genau bestimmen kann wie lang der Effekt andauern soll.
Gründe, dass ich kein Framework benutzen will ist einmal der Lerneffekt (ich will wissen was passiert

) und zweitens will ich nicht unbedingt ein 50KB-Javascript einbinden nur um diesen einen Effekt zu nutzen.
Folgendes hab ich mir mal zusammengeschrieben:
PHP-Code:
function slideArea(areaId)
{
var div = document.getElementById(areaId);
div.style.display = "block";
var oldHeight = div.offsetHeight;
div.style.height = 0;
var timer = window.setInterval(function()
{
var curHeight = parseInt(div.style.height);
if (curHeight < oldHeight) {
div.style.height = (curHeight + 6);
} else {
window.clearInterval(timer);
}
}, 1);
}
Diese Variante hat 2 Probleme:
1. Ich kann die Effekt-Zeit nicht einstellen, also wie lang ein Effekt andauern soll (außerdem wird der Slide-Effekt von verschiedenen Browsern verschieden schnell ausgeführt)
2. Hab ich 3 div-Boxen, die darüber einblenden will, aber bei der untersten wird komischerweise der Effekt nicht angewendet.
Hier mal noch ein HTML-Dokument zum Ausprobieren:
PHP-Code:
<html>
<head>
<title></title>
<script type="text/javascript">
function slideArea(areaId)
{
var div = document.getElementById(areaId);
div.style.display = "block";
var oldHeight = div.offsetHeight;
div.style.height = 0;
var timer = window.setInterval(function()
{
var curHeight = parseInt(div.style.height);
if (curHeight < oldHeight) {
div.style.height = (curHeight + 6);
} else {
window.clearInterval(timer);
}
}, 1);
}
</script>
<style type="text/css">
div#navigation {
float: left;
width: 250px;
margin-top: 4em;
}
div#navigation div.navBox {
display: block;
clear: left;
float: left;
width: 250px;
margin-bottom: 1em;
background-color: #ffffff;
}
div#navigation div.navBox a {
display: block;
margin: 20px 0;
padding-left: 10px;
font-size: 1.2em;
}
div#navigation div.navbox div.content {
display: none;
}
div#navigation div.navBox div.content a {
padding-left: 20px;
}
</style>
</head>
<body>
<h1>Kalender 2011</h1>
<div id="navigation">
<div class="navBox">
<div class="title">
<a href="javascript:slideArea('linkArea1');">Übersicht</a>
</div>
<div class="content" id="linkArea1">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
<div class="navBox">
<div class="title">
<a href="javascript:slideArea('linkArea2');">Übersicht</a>
</div>
<div class="content" id="linkArea2">
<a href="#">Link 4</a>
<a href="#">Link 5</a>
<a href="#">Link 6</a>
</div>
</div>
<div class="navBox">
<div class="title">
<a href="javascript:slideArea('linkArea3');">Übersicht</a>
</div>
<div class="content" id="linkArea3">
<a href="#">Link 7</a>
<a href="#">Link 8</a>
<a href="#">Link 9</a>
</div>
</div>
</div>
</body>
</html>
Ich wäre euch für eure Hilfe sehr dankbar.
mfg
SilentSight