我有以下结构:
<div class="div1">
<div class="div2">
<div class="jcarousel">
<ul>
<li>
<div class="item">ITEM 1</div>div>
</li>
<li>
<div class="item">ITEM n</div>div>
</li>
</ul>
</div>
<a href="#" class="jcarousel-control-prev">‹</a>
<a href="#" class="jcarousel-control-next">›</a>
</div>
</div>
<ul>
中的每个项目都会有不同的高度虽然我无法使其工作,除非<div class="jcarousel">
具有固定的高度,这与我想要的相反。我希望<div class="jcarousel">
动态更改其高度,具体取决于每个<div>
内<li>
的高度。
忘了说,这可能很重要。 .Jcarousel div
是一个轮播,我有一个next
和prev
控件。 .Jcarousel div
应根据要显示在轮播中的下一个li的高度来更改其高度。
CSS
.div1 {
height: auto;
background: none repeat scroll 0% 0% rgb(255, 255, 255);
border-width: medium 1px 1px;
border-style: none solid solid;
border-color: -moz-use-text-color rgb(255, 255, 255) rgb(255, 255, 255);
padding: 20px 20px 0px;
margin-bottom: 50px;
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.46);
}
.div2 {
margin-top: -50px;
}
.jcarousel {
position: relative;
overflow: hidden;
height: 700px;
margin: 0px -20px;
padding: 0px 20px;
}
.jcarousel ul {
width: 20000em;
position: absolute;
list-style: none outside none;
margin: 0px;
padding: 0px;
}
.jcarousel li {
float: left;
width: 480px;
}
.item {
margin: 0px;
padding: 0px 20px;
height: 100%;
}
答案 0 :(得分:3)
尝试以下代码配对...:)
var totalHeight = 0;
$('.item').each(function(){
totalHeight += $(this).height();
});
if(totalHeight < 40){
$('.jcarousel').height(1000);
}
答案 1 :(得分:0)
您将height: 100%
提供给.item
。这意味着它将其高度设置为其父级的100%,即700px。如果您希望.jcarousel
依赖.item
height: 700px
移除.jcarousel
。
您还可以将float: left
设置为li
元素。它使ul
高出0px。如果要修复它,请添加以下CSS
.jcarousel > ul:after {
content: "";
display: block;
clear: both;
}
答案 2 :(得分:0)
请使用以下jQuery代码设置DIV的动态高度
$(document).ready(function(){
var nHeight = 0;
$(".jcarousel li div.item").each(function(){
nHeight += $(this).height();
});
$(".jcarousel").height(nHeight);
});
答案 3 :(得分:0)
在尝试了一些事情后,我提出了以下解决方案:
我意识到事先创建一个具有<ul><li>
所有高度的数组,它的响应速度足以正确更新.Jcarousel div
的高度。
JS
<script type="text/javascript">
$(document).ready(function(){
// checking the height of the first element in the <ul>
var count = 0;
var count_max = $(".jcarousel li").length;
var alturas = [];
$(".jcarousel li div.cenario").each(function(){
var height = $(this).height();
alturas.push(height);
});
$(".jcarousel").css('height',alturas[count]);
// changing height when pressing the prev control
$(document).on("click",".jcarousel-control-prev", function(){
if (count == 0) {
} else {
count = count-1;
$(".jcarousel").css('height',alturas[count]);
}
});
// changing height when pressing the next control
$(document).on("click",".jcarousel-control-next", function(){
if (count !== count_max) {
count = count+1;
$(".jcarousel").css('height',alturas[count]);
} else {
// trying to update the counter when reach the last <li> element within the <ul>
count = 0;
$(".jcarousel").css('height',alturas[count]);
}
});
});
</script>
答案 4 :(得分:-1)
也许您可以将min-height
设置为班级jcarousel
。像那样:
.jcarousel {
position: relative;
overflow: hidden;
min-height: 700px;
margin: 0px -20px;
padding: 0px 20px;
}