用jQuery获取DIV的高度无法正常工作

时间:2018-07-02 16:24:17

标签: javascript jquery html css

所以我试图自己找到一个解决方案,但是我找不到适合自己的解决方案的主题,因为我有特殊的先决条件。

我的问题如下: 我在左侧有一个粘性DIV元素,并在另一个DIV元素中添加了一个 固定高度,因为如果没有固定高度,粘滞效果就不会起作用。 右侧还有DIV容器中的许多元素。这个 容器的高度取决于元素的数量。

最佳方法是,在完成DIV容器的所有内容元素后,sticky元素停止。但是因为我必须为粘滞元素的容器设置一个固定的高度,所以在再次出现其他任何内容之前,它会继续将其全部高度用作空白。

我希望它不会被解释不好。

alert("The height is " + $("#ProductContainer").height());
#StickyContainer {
  float: left;
  height: 4000px;
  width: auto;
}

.sidebar {
  top: 0px;
  float: left;
  height: 400px;
  width: 200px;
  padding-left: 10px;
  padding-top: 20px;
  border: 2px solid black;
  margin: 20px 10px 0px 5px;
  position: -webkit-sticky;
  position: sticky;
}

.content {
  float: left;
  width: 200px;
  height: 300px;
  padding: 10px;
  margin-top: 20px;
  margin-left: 5px;
  border: 2px solid red;
}

#Test {
  margin-top: 20px;
  width: 100%;
  height: 100px;
  border: 2px solid blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="StickyContainer">
  <div class="sidebar">
    This is the sticky sidebar
  </div>
</div>
<div id="ProductContainer">
  <div class="content">
    One of many boxes
  </div>
  <div class="content">
    Here are 2, but in reality there are more than 10
  </div>
</div>
<div style="clear:both" ;></div>
<div id="Test"> Here is the next content </div>

注意:请以全屏模式运行,否则#ProductContainer始终会在侧边栏下方。

我采取了许多方法,一种方法是使用jQuery测量#ProductContainer的高度,然后将结果设置为#StickyContainer的新高度。 可悲的是它返回高度0。

由于结果,没有得到更多。我尝试了更多在StackOverflow上发现的内容,但似乎没有任何效果。不仅是JavaScript,而且还有HTML,因为问题似乎出在ProductContainer中,无法正确地容纳内容。

但是,即使这只是我的一个简单愚蠢的错误,我也感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

content元素没有浮点数,并使ProductContainer在内部感觉不到任何东西。

您必须在父级上使用 clearfix 类。

.clearfix:after { 
    content: " "; 
    display: block;
    clear: both;
} 

跨平台,兼容的IE6 +,Chrome,Safari,Firefox,您可以将其命名!

.clearfix:after {
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}

.clearfix {
    display: inline-block;
}

html[xmlns] .clearfix {
    display: block;
}

* html .clearfix {
    height: 1%;
}

并把课程交给父母

<div id="ProductContainer" class="clearfix">