【发布时间】:2017-02-24 09:28:31
【问题描述】:
我有一个带有几个子元素的弹性盒子容器,每个子元素都有 .flex-item 类。我的网格系统是这样的,每行有 3 个弹性项目,每个占据容器宽度的 1/3。
<div class="flex-box">
<!-- start row 1 -->
<div class="flex-item">[image and text]</div>
<div class="flex-item">[image and text]</div>
<div class="flex-item">[image and text]</div>
<!-- end row 1 -->
<!-- start row 2 -->
<div class="flex-item">[image and text]</div>
<div class="flex-item">[image and text]</div>
<div class="flex-item">[image and text]</div>
<!-- end row 2 -->
</div>
所需功能:
悬停时,我需要每个 flex 项目的宽度加倍,而不移动任何兄弟。
** 例如,如果我将鼠标悬停在第一个子项上,它将完全覆盖第二个;第三个弹性项目将保持不变。
** 类似地,如果我将鼠标悬停在第 5 个 flex 项目上,它的宽度会扩大到覆盖第 6 个 flex 项目,而所有其他 flex 项目保持不变。
我的尝试:
我的第一种方法是纯 CSS,使用 a) 位置:绝对,b) 左/右偏移量,c) 边距左的组合。但是我遇到了为行中的其他兄弟姐妹一致且准确地设置 margin-left 属性的问题。此外,这只适用于第一行。对于所有其他行,我需要计算顶部偏移量,因为我使用的是绝对定位。
有没有更好的纯 CSS 方法?如果除了 CSS 之外我还应该使用一些 JS/jquery,我该怎么做呢?
更新:这是我创建的一个 JSFiddle,以第一个 flex 项目为例,展示了所需的功能:https://jsfiddle.net/4800pwru/
【问题讨论】:
-
如果将鼠标悬停在第三个项目上会发生什么?
-
是期望内容转移到填充还是您只是想扩展您的内容?另外,你的 CSS 目前是什么样子的?考虑设置一个 JS Fiddle。
-
它的宽度也会加倍,除了第三项会向右扩展,完全覆盖第二项。
标签: javascript jquery html css flexbox