1

我有以下结构:

        <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">&lsaquo;</a>
              <a href="#" class="jcarousel-control-next">&rsaquo;</a>
            </div>
        </div>

中的每个项目都<ul>将具有不同的高度,尽管除非具有固定的高度,否则我无法使其工作<div class="jcarousel">,这与我想要的相反。我希望根据每个内部<div class="jcarousel">的高度动态改变它的高度。<div><li>

忘了说,这可能很重要。这.Jcarousel div是一个轮播,我有一个nextprev控件。应该根据下一个 li 出现在轮播中的.Jcarousel div高度来改变它的高度。

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%;
    }
4

5 回答 5

3

试试下面的代码伙伴... :)

var totalHeight = 0;
$('.item').each(function(){
    totalHeight += $(this).height();
});

if(totalHeight < 40){
    $('.jcarousel').height(1000);
}

http://jsfiddle.net/JHZSF/

于 2013-10-18T10:59:47.473 回答
0

你给height: 100%.item. 这意味着它将其高度设置为其父级的 100%,即 700px。如果您希望.jcarousel依赖于.itemremove height: 700pxfrom .jcarousel

您还设置float: leftli元素。它使ul0px 高。如果要修复它,请添加以下 CSS

.jcarousel > ul:after {
    content: "";
    display: block;
    clear: both;
}
于 2013-10-18T10:54:12.720 回答
0

请使用下面的 jQuery 代码来设置 DIV 的动态高度

$(document).ready(function(){
     var nHeight = 0;
     $(".jcarousel li div.item").each(function(){
            nHeight += $(this).height();
     });
     $(".jcarousel").height(nHeight);
});
于 2013-10-18T10:56:32.477 回答
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>
于 2013-10-21T10:26:30.833 回答
-1

也许你可以设置一个min-heightjcarousel。像那样:

.jcarousel {
        position: relative;
        overflow: hidden;
        min-height: 700px;
        margin: 0px -20px;
        padding: 0px 20px;
    } 
于 2013-10-18T10:55:20.363 回答