我需要創建一個手風琴,可以跟蹤它對高度所做的調整。在大多數情況下,手風琴的容器會自動調整其高度,但我的手風琴位於相對定位的div內的絕對定位的div,我需要調整相對定位的div的高度以及手風琴以移動一些背景周圍的圖像。萬一別人永遠需要類似的東西,這裏是我想出了(帶ahren和dmi3y的幫助下)結果:簡單的jQuery手風琴,可以跟蹤高度變化,使其他物體沿着動畫
的HTML:
<div id="accordion">
<h3>Sample Header 1</h3>
<div>
<p>
Sample<br />
More Sample Text<br />
Yet More Sample Text<br />
I wish I could come up with something more clever<br />
This should be enough for you to see the problem
</p>
</div>
<h3>Sample Header 2</h3>
<div>
<p>
Sample<br />
More Sample Text<br />
Yet More Sample Text<br />
I wish I could come up with something more clever<br />
This should be enough for you to see the problem Sample<br />
More Sample Text<br />
Yet More Sample Text<br />
I wish I could come up with something more clever<br />
This should be enough for you to see the problem
</p>
</div>
</div>
的CSS:
#accordion {
width: 600px;
border: 1px solid #C0C0C0;
border-bottom: none;
box-shadow: 0 0 5px #C0C0C0;
-webkit-box-shadow: 0 0 5px #C0C0C0;
margin: 30px auto;
background: #FFF;
}
#accordion h3 {
border-bottom: 1px solid #C0C0C0;
padding: 10px;
}
#accordion div {
display: none;
padding: 20px;
border-bottom: 1px solid #C0C0C0;
background: #F4F4F4;
}
#accordion p {
padding: 0;
margin: 0;
}
#accordion h3:hover {
cursor: pointer;
}
.forMeasure {
position: absolute;
visibility: hidden;
display: block!important;
}
的JavaScript/jQuery的:
$('#accordion h3').click(function(){
var adjustment = 0;
var div = $(this).next('div');
if(div.css('display') == 'none')
{
adjustment += div.addClass('forMeasure').outerHeight();
div.removeClass('forMeasure');
div.slideDown();
div.siblings('div').each(function(){
if($(this).css('display') == 'block')
{
adjustment -= $(this).outerHeight();
$(this).slideUp();
}
});
}
else
{
adjustment -= div.outerHeight();
div.slideUp();
}
});
** tldr; ** - 考慮爲您的問題創建一個小的測試用例,如果可以的話。它會花任何時間5-10分鐘閱讀並理解你的問題,因爲它目前的狀況。 – ahren
好點,謝謝 - 我編輯了這篇文章。 – dnag
你認真地期待有人讀到所有這些? –