我正在创建一个HTML / CSS应用程序,我有点卡住了。
假设我有2个元素位于彼此旁边display: inline-block
每个元素都有两个彼此相邻的元素。 请参阅下图试图解释它:
因此,下图描述了3个不同级别的元素:
在HTML中,这可以构造如下:
<ul id="holder">
<li>
<div>
<div class="col">Col 1</div>
<div class="col">Col 2</div>
</div>
</li>
<li>
<div class="col">Col 1</div>
<div class="col">Col 2</div>
</li>
</ul>
UL表示红色元素,LI表示黄色元素,DIV元素表示绿色元素。
现在,让我们说我们的红色元素有一个固定的宽度,我把溢出放在隐藏上。这意味着当我调整页面大小时,右侧的元素在不适合页面时会消失。
但是这里的问题很复杂,当我调整窗口大小,窗口变得太小而无法呈现所有内容时,立即在屏幕上看不到最新的LI元素。
是否有任何CSS方法可以确保没有隐藏LI元素但是LI中的DIV元素?当两个DIV元素都被隐藏时,当然可以隐藏LI元素,因为它是空的吗?
如果没有CSS方法可以做到这一点,有人会介意使用JavaScript或其他方式让我朝着正确的方向前进吗?
这是一个jsFiddle来解释一下。
亲切的问候
答案 0 :(得分:2)
li
从视图中消失,因为它在display: inline-block
中。
一旦窗口不够宽,它就会移动低于第一个li。
如果您释放#holder
的高度(height:auto
),就会发现这种情况。
解决方案是添加white-space : nowrap
以强制li
保持一行。
答案 1 :(得分:2)
这不是你的元素隐藏的问题,因为没有足够的宽度,这是因为它们是因为没有足够的宽度(然后被overflow: hidden
隐藏)而包装。
You can see this happening如果您删除了包装器上的height
约束:
#holder { overflow: hidden; border: 1px solid red; }
修复很简单,stop it from wrapping使用white-space: nowrap
:
#holder { white-space:nowrap; overflow: hidden; border: 1px solid red; height: 52px; }