【发布时间】:2017-01-09 03:08:35
【问题描述】:
我有一个带有inline-block div 的酒吧。其中一些超出了视口,因为我为容器设置了:white-space:nowrap; overflow: hidden;。我正在寻找选择最后一个可见孩子的方法。可见我的意思是 div 被放置(最好完全)在它的容器区域中。
据我所知,CSS 和 jQuery 中都没有这样的选择器。最接近的是 jQuery 的:visible,但它表示所有 div 都是可见的,因为它们占用了页面布局中的空间。
我看到的唯一方法是枚举加载时的 div 和每次调整大小,以便通过将 div 的宽度、填充和边距相加来计算 div 是否仍在容器中。
你有更好的想法吗?
#container {
white-space:nowrap;
overflow: hidden;
}
.element {
display: inline-block;
vertical-align:top;
}
<div id="container">
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
<div class="element">
<img src="http://placehold.it/150x150" alt=""/>
</div>
</div>
在当前的、无响应版本的 sn-p 堆栈溢出中,我们可以看到 4 个完整的 div 和 5 个的一小部分。我想选择第 5 个(或者最好是第 4 个 div,因为下一个不完全可见)。
【问题讨论】:
-
@PatrickMlr 我看过那个链接,但使用了
display:none。我们正在努力解决这里的溢出问题 -
您可以尝试使用 jQuery 获取容器的
width和每个元素的offset。如果偏移量大于宽度,你就做你的事。 -
@PatrickMlr 是的,这是我当前想法的另一个实现。我问这个问题是为了找到一个更好的
-
如果元素可以有不同的宽度,没有比遍历元素并计算宽度更好的方法(对于一般解决方案)。是否动态添加新元素?元素的宽度可以改变吗?如果没有,你可以在开始时缓存宽度,然后至少调整大小循环会更有效。
标签: javascript jquery css jquery-selectors