根据选项卡中内容的高度重新计算容器div的高度

时间:2015-11-20 15:55:18

标签: javascript jquery html css jquery-ui

我的页面左侧有一个粘性图像边栏,右侧有不同高度的选项卡内容。我遇到的问题是,当选择了较短的标签时,粘性侧边栏会溢出它的容器。

单击选项卡2并向下滚动页面可以观察到此行为。左侧的图像不应溢出到页脚。选项卡1显示正确的行为。

以下是代码示例:http://codepen.io/anon/pen/gayMjx

  <section class="js-pin-container">
<div class="row">
  <div class="left-col">
    <div class="js-pin-content">
      <img src="http://placehold.it/250x250">
    </div>
  </div>
  <div class="right-col">
    <div id="tabs">
      <ul>
        <li><a href="#tabs-1">tab 1</a></li>
        <li><a href="#tabs-2">tab 2</a></li>
        <li><a href="#tabs-3">tab 3</a></li>
      </ul>
      <div id="tabs-1">
        <p style="background: silver; height: 900px;">This dive is 900px tall.</p>
      </div>
      <div id="tabs-2">
        <p style="background: silver; height: 600px;">This dive is 600px tall.</p>
      </div>
      <div id="tabs-3">
        <p style="background: silver; height: 1200px;">This dive is 1200px tall.</p>
      </div>
    </div>
  </div>
</div>

1 个答案:

答案 0 :(得分:1)

关注@piyin后,我建议不要每次都提出recalculateLimits事件。

原因是在现实世界中,您可能有多个附加到此事件的函数,并且您希望避免在每个制表符开关上调用所有这些函数。

重新计算高度的更好方法是公开插件方法activate并将其附加到 ... $window.resize(function () { recalculateLimits(); }); recalculateLimits(); //This line expose the method this.recalculateLimits = recalculateLimits; $window.load(update); return this; }; })(jQuery); 事件:

工作示例:JSnippet Demo

公开方法:

$(function() {

    //Attach pin:
    var pinSide = $(".js-pin-content").pin({
        containerSelector: ".js-pin-container"
    });
    //Create tabs:
    $( "#tabs" ).tabs({
        activate:function(){
            pinSide.recalculateLimits();
        }
    });

然后你只能附上它:

{{1}}

});