2016-05-05 1 views
2

Ziel: Animieren div auf Inhalt Größe ändern.Kann ich Animation/Effekt auf div resize setzen?

Gegeben:

  1. Div Höhe und Breite sind nicht angegeben.
  2. Div-Größe hängt von der Inhaltsgröße ab.
  3. Wenn sich die Inhaltsgröße ändert, ändert sich auch die div-Größe (ohne Animation, die Größe ändert sich innerhalb von 0,5FPS).

Frage: Wie bewerbe ich mich Animation/Effekt auf div, wenn es dynamisch Größe ändert, in Abhängigkeit vom Inhalt?

HINWEIS: ein gutes Beispiel dafür ist @gmail (Karte auf dem Erfolg der nächsten ändert die Größe)

+0

denke ich, eine Schmiere Der zu startende Ort wäre das jQuery resize Event (https://api.jquery.com/resize/). – Frits

+0

ich bin nicht bestätigen, aber ich denke, dass Sie nicht mit CSS tun können, der Übergang gilt nicht für Auto-Element müssen Sie eine bestimmte Breite/Höhe oder maximale Breite/Höhe angeben. möglicherweise einige Javascript hilft wie https://jsfiddle.net/eugf4rzw/ –

Antwort

0

ein max-height Nehmen und einen max-width und eine Anzeige Eigenschaft inline-block.

div { 
display: inline-block; 
background:red; 
transition: max-height 1s, max-width 1s; 
max-height:0; 
max-width:0; 
} 
div:hover { 
max-height:200px; 
max-width:400px; 
} 

<div>yada yada yada</div> 
+0

Ich hatte diese Lösung gefunden. aber es funktioniert nur bei Hover und nicht bei der Inhaltsgröße @partypete –

1

Es gibt einen Weg dafür. Sie müssen ein einziges verstecktes Element für diesen Weg verwenden. Sie müssen den Inhalt in beiden Elementen festlegen. versuchen den folgenden

HTML:

<span id="hiddenElement"></span>

<div id="displayElement"></div>

CSS:

#hiddenElement 
{ 
    max-width: 200px; 
    opacity: 0; 
    /* use some other properties to completely hide. but do not give width:0 */ 
} 

#displayElement 
{ 
    width: auto; 
    height: auto; 
    max-width: 200px; 
    -webkit-transition: width 0.5s, height 0.5s; /* Safari */ 
    transition: width 0.5s, height 0.5s; 
    border: 1px solid black; 
    over-flow: hidden; 
} 

JS-Methode:

function setContent(content) 
{ 
    $("#hiddenElement").text(content); 
    $("#displayElement").text(content); 
    $("#displayElement").width($("#hiddenElement").width()); 
    $("#displayElement").height($("#hiddenElement").height()); 
}