Die kurze ist, habe ich drei div
Container mit einem . In jedem ist eine div
mit einer Hintergrundfarbe 100%
Breite und Höhe festgelegt. Die Idee ist, dass, wenn ich sie anklicke, das Wasser von oben nach unten auslaufen sollte. Ich mache dies, indem ich die interne div
Höhe von 100%
zu 0%
mit Übergang umschalte. Allerdings lässt dies das Wasser einfach schweben. Also habe ich den größten Teil des Nachmittags gesucht und habe mir nichts ausgedacht. Ich bin auf der Suche nach der einfachsten Art, es einfach rückwärts laufen zu lassen oder die y-Achse sozusagen umzudrehen, was auf dem Gesicht nicht so schwierig sein kann, oder?CSS Animieren statt
Wie auch immer, hier ist ein Code-Stift, weil jsfiddle CSS-Animation erlauben, was ich versuche zu tun. https://codepen.io/anon/pen/NgYEKE
function func1(buttonname) {
var x = document.getElementById(buttonname).className;
if (x = "full") {
document.getElementById(buttonname).className = "empty";
} else {
document.getElementById(buttonname).className = "full";
}
}
.full {
height: 100%;
transition:height 2s;
}
.empty {
height: 0%;
transition: height 2s;
}
<body style="background-color:black;">
<div style="display:flex;justify-content:center;align-content:center;">
<div id="glass1" style="height:50px;width:25px;border:2px solid blue;margin: 3px;">
<div id="water1" class="full" style="width:100%;background-color:aqua;"></div>
</div>
<div id="glass2" style="height:50px;width:25px;border:2px solid blue;margin: 3px;">
<div id="water2" class="full" style="width:100%;background-color:aqua;"></div>
</div>
<div id="glass3" style="height:50px;width:25px;border:2px solid blue;margin: 3px;">
<div id="water3" class="full" style="width:100%;background-color:aqua;"></div>
</div>
</div>
<div style="display:flex;justify-content:center;align-content:center;">
<button id="button1" onclick="func1(this.innerHTML)">water1</button>
<button id="button2" onclick="func1(this.innerHTML)">water2</button>
<button id="button3" onclick="func1(this.innerHTML)">water3</button>
</div>
</body>
Auf einer seitlichen Anmerkung auch ich glaube, ich richtig die Javascript zwischen den leeren und vollen Klassen wechseln geschrieben haben, scheint aber nur eine Möglichkeit, zu arbeiten, wenn Sie eine Idee haben, was Ich habe es falsch gemacht, es würde auch helfen.
Dies war die umfassendste Antwort und die Animation ist auch die robustere Option. Der einzige Nachteil ist, dass es die Höhe des Containers wissen muss. Diejenigen, die nach einer Alternative suchen, wenn die Höhe des Containers nicht bekannt ist, sollten sich die ScaleY-Option ansehen, die in Aziz's Post beschrieben wird. Beachten Sie jedoch, dass die scaleY-Lösung Probleme mit dem Wechseln von Klassen hat, bevor der Übergang abgeschlossen wurde. –
@SimonGreen Nach deinem Kommentar habe ich mein Snippet noch einmal bearbeitet: Anstelle des px-Wertes für 'top' (leer) kannst du auch 'top: 100%' verwenden, also musst du * nicht * kenne die Höhe des Containers. – Johannes