CSS flexbox 溢出 100% 宽度元素

ibe*_*bex 3 html css overflow flexbox

鼠标悬停时,我想变换彼此相邻的两个弹性元素的位置,如下图所示

在此输入图像描述

标记如下

<div class="container">
  <div class="element">Normal</div>
  <div class="element">Hover</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我希望两个元素都是父元素的 100% 宽度,第二个元素会溢出,这样我就可以在鼠标悬停时变换 X。我遇到的问题是两个元素都被挤进容器中。

我知道我可以将这两个元素包装在另一个 div 中,并为其指定容器的 200% 宽度。但想知道这是否可以用flexbox来完成

Mic*_*l_B 7

.container {
  display: flex;
  width: 200px;
  overflow: hidden;           /* hides the flex item parked outside the container */
  cursor: pointer;
  border: 1px solid black;
}

.element {
  height: 100px;
  flex: 0 0 100%;            /* can't grow, can't shrink, fixed an 100% width */
  transition: .5s;
  min-width: 0;              /* override min-width: auto default;
                                https://stackoverflow.com/q/36247140/3597276 */
}

.container:hover > .element:first-child {
  flex-basis: 0;
}

.element:first-child { background-color: lightgreen; }
.element:last-child  { background-color: orange; }
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="element">Normal</div>
  <div class="element">Hover</div>
</div>
Run Code Online (Sandbox Code Playgroud)

你写了:

我遇到的问题是两个元素都被挤进容器中。

这可能是因为弹性项目默认设置为flex-shrink: 1,这意味着它们可以收缩以适合容器内。在我的回答中flex-shrink设置为0.