【问题标题】:How to have html elements lay over and reach out of CSS "column"如何让 html 元素覆盖并伸出 CSS“列”
【发布时间】:2015-02-12 12:29:38
【问题描述】:

我需要的是基于 2 列的布局,其内容可以动态加载并根据需要均匀分布在尽可能多的空间中。

所以我认为 CSS 列是完美的选择。这是针对上述情况内容不是纯文本,它实际上是具有潜在下拉菜单的输入元素,为此我使用了 twitter 的 typeahead。

但是这个下拉列表,当然应该被列机制忽略,并且应该覆盖列,甚至可能伸出它。

这是一张图片来说明所需的效果:

我认为嵌套 div 的绝对定位可以做到这一点,但没有运气。没有 JS 有什么办法可以做这种魔术吗?

<fieldset>
    <div class="item">
        <input type="text"/>
        <div class="dropdown"></div>
    </div>
    <div class="item">
        <input type="text"/>
    </div>
    <div class="item">
        <input type="text"/>
    </div>
</fieldset>
fieldset {
  column-count: 2;
  column-gap: 20px;
}

.item {
  position: relative;
  -webkit-column-break-inside: avoid;
}

.dropdown {
  position: absolute;
  height: 200px;
  width: 100px;
  z-index: 10;
}

检查笔: http://codepen.io/anon/pen/ByJXVW

【问题讨论】:

  • 为了分享你的 codepen,你需要点击保存按钮来生成一个 url。给定的链接指向“创建新代码”页面。
  • (facepalm)thanx @lupz

标签: html css drop-down-menu multiple-columns absolute


【解决方案1】:

更新:可能你已经让它工作了吗?我刚刚添加了背景颜色,使其可见。

fieldset {
  column-count: 2;
  column-gap: 20px;
  width: 200px;
}

.item {
  position: relative;
  -webkit-column-break-inside: avoid;
}

.ontop {
  position: absolute;
  height: 200px;
  width: 200px;
  z-index: 10;
  background-color:rgba(0,0,0,0.5);
}
<fieldset>
    <div class="item">List Item1         
        <div class="ontop"></div>
    </div>
    <div class="item">List Item2</div>
    <div class="item">List Item3</div>
</fieldset>

【讨论】:

  • 没有。其实一点也不。应该“覆盖”列的 div“onTop”需要嵌套在“item”内,并且应该覆盖它下面的元素。就像下拉菜单一样。笔现在应该可以工作了。
  • 您可能需要刷新此页面。刚刚和同事确认了一下。笔正在工作。 codepen.io/anon/pen/ByJXVW
  • 奇怪,它不适合我。无论如何,我更新了我的答案。
  • 覆盖确实覆盖了字段集中的其他输入元素,但它们应该“伸出基于列的字段集”并且应该完全忽略该列。如果您从“项目”中删除“相对”定位,您将获得所需的效果,只是定位已关闭。
  • 并且您确实需要在列数和间隙前面放置供应商前缀(例如 -webkit-)。为了简化代码,我删除了它们。
猜你喜欢
  • 1970-01-01
  • 2020-08-11
  • 2013-03-28
  • 2011-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多