2016-10-20 1 views

Antwort

0

Sie können nicht. Anstelle der Anzeige: keine; mach es mit der Höhe: 0; und Übergang: Höhe .5s; Überlauf versteckt;

Dann werden Sie andere Divs neben anderen leicht verschieben. :)

Wenn du willst, kann ich einen einfachen Codepen machen.

+0

Das wäre schön :) – jonhue

+0

reine CSS sein: http://codepen.io/bra1N/pen/bwQQOo hier gehen Sie, klicken Sie einfach auf dem Roten Platz :) – ristapk

+0

ehrfürchtige Blicke , Danke! – jonhue

0

Verwenden slideUp() statt hide();, wenn Sie verwenden jquery

$('.hidden').slideUp(); 
0

Gerade sie animieren. jQuery hat viele Möglichkeiten, es zu tun, zum Beispiel:

$('#myDiv').hide(200); // 200ms 
+0

@madalinivascu Nein, ich meine jQuery http://api.jquery.com/hide/#hide-duration-complete –

0

Um zu vermeiden, mit einer Breite ein verborgenes Element zu halten, die mit anderen Elementen auf der Seite stören könnten, sollten Sie einfach:

$('yourElement').slideUp(); 

Auf diese Weise Sie werden die Höhe yourElement animieren und schließlich, um es tatsächlich aus dem Elementfluss zu entfernen.

Bearbeiten: Danke A. Wolff für den Kommentar. Unnötige Funktion nach .slideUp() entfernt.

+1

Nein, 'hide()' (ohne Dauer Parameter) wird nicht in fx queue geschoben werden bedeutet, dass das Element versteckt wird, bevor die SlideUp-Animation beendet wird, und es macht keinen Sinn, weil beide Methoden redundant sind. –

+0

Danke, Sie haben vollkommen recht. Ich werde die Antwort korrigieren. –

0

Noch eine bessere Lösung für Sie. Sie können die blaue Box mit jedem Klick auf die rosa Box ein- und ausblenden.

$('.pinkBox').click(function() { 
 
    $('.pinkBox').addClass('show'); 
 
    $('.blueBox').addClass('displayed'); 
 
}); 
 

 
$('.blueBox').click(function() { 
 
    $('.pinkBox').removeClass('show'); 
 
    setTimeout(function() { 
 
     $('.blueBox').removeClass('displayed'); 
 
    }, 300); 
 
});
.blueBox { 
 
    height: 100px; 
 
    width: 100px; 
 
    background-color: blue; 
 
    transition: all .3s ease; 
 
    position: absolute; 
 
    display: none; 
 
} 
 
.pinkBox { 
 
    height: 100px; 
 
    width: 100px; 
 
    background-color: pink; 
 
    transition: all .3s ease; 
 
    position: absolute; 
 
} 
 
.show { 
 
    transform: translateY(100px); 
 
} 
 
.displayed { 
 
    display: block; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class='blueBox'> 
 
</div> 
 

 
<div class='pinkBox'> 
 
</div>

+0

Sieht ziemlich solide aus, nicht das, was ich für dieses Problem brauche, aber eine ziemlich gute Lösung für eine Reihe von Dingen. Vielen Dank! – jonhue

+0

@klvler Das 'display' zu animieren ist immer sehr problematisch. In den meisten Fällen funktioniert es einfach nicht so wie es beabsichtigt ist. –

+0

@klvler Ich habe den Code ein wenig geändert. Die Anzeige 'display: none' wurde hinzugefügt, wenn die blaue Box nicht sichtbar ist. Prüfen Sie. –