布局:
<div style={{ flex:1 }}>
<div className="sideBarContainer">
<div className="sideBar">
<div className="sideBarExtra"> <--- conditional
</div>
<div className="content"></div>
</div>
CSS:
.sideBarContainer {
display: flex;
flex-direction: row;
}
.sideBar {
height: 100vh;
min-width: 64px;
z-index: 99;
}
.content {
flex: 1;
transition: width .3s linear;
}
sideBarExtra使用react-tranisition-group CSSTransitionGroup组件有条件地进行渲染。
sideBarExtra在渲染时会从左向右平滑滑动,而在删除时会从右向左滑动。
添加sideBarExtra时,内容div不能平稳过渡,它会跳到其位置。
预期的行为:内容可以平滑地滑动到新宽度。
在控制台开发工具中,我可以看到内容宽度已更改,但是没有过渡动画发生。
答案 0 :(得分:1)
.sideBarContainer {
display: flex;
flex-direction: row;
width: 100%;
}
.sideBar {
background: red;
height: 100vh;
min-width: 64px;
z-index: 99;
}
.content {
width: 10%;
height: 100vh;
background: yellow;
transition: width .3s linear;
}
.content:hover {
width: 80%;
}
<div style="display:flex;">
<div class="sideBarContainer">
<div class="sideBar">
<div class="sideBarExtra"> </div>
</div>
<div class="content">Hover me</div>
</div>
您可以更改即时
.content {
flex: 1;
transition: width: .3s linear;
}
到
.content {
flex: 1;
transition: width .3s linear;
}
该过渡不包含任何:此处的上面的代码
Answare 2
您还可以在以下示例中为flex属性设置动画:
.sideBarContainer {
display: flex;
flex-direction: row;
width: 100%;
}
.sideBar {
background: red;
height: 100vh;
min-width: 64px;
z-index: 99;
flex: 2;
transition: flex .3s linear;
}
.content {
flex: 1;
height: 100vh;
background: yellow;
transition: flex .3s linear;
}
.sideBarContainer:hover .sideBar {
flex: 1;
}
.sideBarContainer:hover .content {
flex: 2 0 auto;
}
<div style="display:flex;">
<div class="sideBarContainer">
<div class="sideBar">
<div class="sideBarExtra"> </div>
</div>
<div class="content">Hover me</div>
</div>