2016-04-16 4 views
0

Я знаю несколько решений для этого, но не тот, который я хочу.jQuery оживить высоту контейнера

Я хочу, чтобы высота анимации быть высотой контейнера, когда текст выцветает

Это то, что я пытался до сих пор:. скрипки: https://jsfiddle.net/jzhang172/rxbnnvdf/1/

$(function(){ 
 
$('.box').click(function(){ 
 
var heightbox = $(this).innerHeight(); 
 
var heightparagraph=$(this).find('p').innerHeight(); 
 
var trueheight=heightbox+heightparagraph; 
 
console.log(heightbox); 
 
console.log(heightparagraph); 
 
console.log(trueheight); 
 
$(this).animate({height: trueheight}, {duration:500}); 
 
$(this).find('p').fadeIn(1000); 
 
}); 
 

 
});
.box{ 
 
    width:100%; 
 
    height:50px; 
 
    border-bottom:1px solid black; 
 
    cursor:pointer; 
 
    overflow:hidden; 
 
} 
 
.box h2{ 
 
    margin:0px; 
 
    padding-top:25px; 
 
} 
 
body,html{ 
 
    padding:0; 
 
    margin:0; 
 
    
 
} 
 
.box p{ 
 
    display:none; 
 
} 
 
*{ 
 
    box-sizing:border-box; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="box one"> 
 
    <h2> 
 
    Box One 
 
    </h2> 
 
    <p class="info"> 
 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vitae tortor id massa tempus ultricies in a diam. Aliquam consectetur dui arcu, non volutpat mauris tempor eget. Donec et nibh ornare, pretium lorem nec, sagittis dui. Donec efficitur pulvinar mauris eget fringilla. Donec vulputate lectus suscipit mauris egestas mollis. Donec at risus dolor. Sed tincidunt, enim nec pharetra condimentum, massa eros condimentum nisi, ac ullamcorper erat lacus et urna. Proin urna sapien, convallis vel tellus vitae, vulputate congue mi. 
 
    </p> 
 
</div> 
 
<div class="box two"> 
 
    <h2> 
 
    Box Two 
 
    </h2> 
 
    <p class="info"> 
 
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean vitae tortor id massa tempus ultricies in a diam. Aliquam consectetur dui arcu, non volutpat mauris tempor eget. Donec et nibh ornare, pretium lorem nec, sagittis dui. 
 
    </p> 
 
</div>

+0

у вас есть обивка-топ, добавить 25px к истинной высоте – va2ron1

+0

Или изменить innerHeight к outerHeight (истина) – va2ron1

ответ

1

Вам не хватало поля. Вам нужно это:

var heightbox = $(this).find('h2').outerHeight(); // because otherwise the box will keep on increasing in height with every click. 
var heightparagraph=$(this).find('p').outerHeight(true); // true argument includes the margin of the element to the height. 

Fiddle

+0

ах, ти очень много! – Snorlax

Смежные вопросы