2017-10-27 2 views
-1

Ich habe diese beiden erweiterbaren divs: https://jsfiddle.net/ar0j4508/31/
Divs erweiterbar nach oben auf Klick

<div class="container_one"> 
    <div class='header'></div> 
    <div class='container_two'> 
     <div class='title show'>From 4 to 0</div> 
     <div class="text hide"><br>4<br>3<br>2<br>1<br>0<br></div> 
    </div> 
</div> 

ich wissen muss:
1) - Wie automatisch die enthaltenen alle Text auf Klick zeigen;
2) - Wie man ein div erweitert, ohne das andere zu erweitern. Vielen Dank.

+0

ausbleiche Ich könnte eine andere Struktur betrachten. Was passiert, wenn eine '.text' Box zu groß ist, um in' .container_one' zu ​​passen? – showdev

Antwort

0

Für die erste Wie alle enthaltenen Text auf Klick automatisch angezeigt - Sie es durch eine Erhöhung der Höhe von container_two div durch die Höhe des text div

Für die zweite man tun kann, wie ein div zu erweitern, ohne die Erweiterung andere - Sie können es von Ihrem Skript Teil für die jeweiligen divs, in dem die click Veranstaltung mit `$ (this) Schlüsselwort wie diese

$(document).ready(function() { 
 
    $(".show").click(function() { 
 
    var $par = $(this).parent(".container_two"); 
 
    if ($par.attr('vis') == 'show') return; 
 
    $par.parent(".container_one").find(".header").animate({ 
 
     height: '-=' + $par.find(".text").height() 
 
    }) 
 
    $par.animate({ 
 
     height: '+=' + $par.find(".text").height() 
 
    }); 
 

 
    $par.attr('vis', 'show'); 
 
    }) 
 

 
    $(".hide").click(function() { 
 
    var $par = $(this).parent(".container_two"); 
 
    if ($par.attr('vis') == 'hide') return; 
 
    $par.animate({ 
 
     height: '-=' + $par.find(".text").height() 
 
    }); 
 
    $par.parent(".container_one").find(".header").animate({ 
 
     height: '+=' + $par.find(".text").height() 
 
    }) 
 
    $par.attr('vis', 'hide'); 
 
    }) 
 
})
.header { 
 
    width: 250px; 
 
    height: 400px; 
 
    max-height: 400px; 
 
} 
 

 
.container_one { 
 
    width: 200px; 
 
    border: 2px solid black; 
 
    margin: 0 auto; 
 
    float: left; 
 
} 
 

 
.container_two { 
 
    height: 30px; 
 
    overflow: hidden; 
 
} 
 

 
.title { 
 
    background: #0f0; 
 
    text-align: center; 
 
    font-size: 30px; 
 
} 
 

 
.text { 
 
    background: #0f0; 
 
    text-align: center; 
 
    font-size: 35px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<div class="container_one"> 
 
    <div class='header'></div> 
 
    <div class='container_two'> 
 
    <div class='title show'>From 4 to 0</div> 
 
    <div class="text hide"><br>4<br><br>4<br>3<br>2<br>1<br>0<br></div> 
 
    </div> 
 
</div> 
 

 
<div class="container_one"> 
 
    <div class='header'></div> 
 
    <div class='container_two'> 
 
    <div class='title show'>From 8 to 0</div> 
 
    <div class="text hide"><br>8<br>7<br>6<br>5<br><br>4<br>3<br>2<br>1<br>0<br></div> 
 
    </div> 
 
</div>

ausgelöst ausführen

Warum habe ich max-height:400px; Header-Klasse hinzugefügt - Dies liegt daran, wenn Sie den Inhalt ausblenden, dann erhöhen Sie die Höhe von div von Höhe des Textes und wenn die Höhe des Textes mehr als 400px ist dann auf die Höhe des Headers Verbergen erhöht was dazu führen wird, dass zwei divs nicht aneinandergereiht werden (es wird passieren, wenn du das zweite div zeigst und dann dieses div.Try ohne max-height)

+0

Außergewöhnlich. Jetzt bleibe ich dran: in diesem Beispiel (https://jsfiddle.net/s6Lob6zo/3/), wie kann ich die divs zurücksetzen, indem ich auf den dunkelgrünen Bereich klicke? Vielen Dank. –

+0

du meinst drückst die div durch klicken auf 'show' class div auch ?? –

+0

@ LuigiP. Ich habe deine Geige aktualisiert, jetzt kannst du sogar das div schließen, indem du auf dunkelgrünes Teil zwei klickst. Ich habe auch das Höhenproblem des Textdivs behoben. Zuvor war eine Nummer zusammen mit dem Titel sichtbar. Jetzt ist dieses Problem auch behoben. Hier ist der Link https://jsfiddle.net/s6Lob6zo/5/ –

Verwandte Themen