
[英]How to set a child element display property to none when the parent element is set to block
[英]How to animate width on parent element with display:block/none on child elem
我在一个父元素中有两个孩子,其中第一个孩子始终可见,但第二个孩子仅在 hover 上可见。 因为当我 hover 父元素展开时,我为父元素的宽度设置了适合内容。 我需要的是这个扩展的平稳过渡。 我在 React 中完成所有这些工作。 谢谢
请检查上下文:
.parent{ display: flex; justify-content: space-evenly; background-color: #f31d84; width: fit-content; }.icon{ margin: 5px; }.text{ display: none; margin: 5px; }.parent:hover.text{ display: block; }
<div> <div class='parent'> <div class='icon'> icon </div> <div class='text'> texttexttexttext </div> </div> </div>
我设法找到了解决我的问题的方法。 代码:
<div>
<div class='parent'>
<div class='icon'>
icon
</div>
<div className='text-wrapper'>
<div class='text'>
texttexttexttext
</div>
</div>
</div>
</div>
.parent{
display: flex;
justify-content: space-evenly;
background-color: #f31d84;
width: fit-content;
}
.icon{
margin: 5px;
}
.text{
opacity: 0;
max-width: 0;
margin: 5px;
transition: 5s ease;
}
.text-wrapper{
width: auto;
}
.parent:hover .text{
opacity: 1;
max-width: 1000px;
}
你不能为不是值的东西设置动画。 我的意思是从display: none
到display: block
不能是动画的,因为它们不是值。
这是一个错误的实现。 在此示例中,您的父元素宽度不会在 hover 上发生变化。如果您想为事物设置动画,一个好的做法是将宽度 0 设置为子元素,当父元素悬停时,带有 class text
的 div 获得父元素宽度的 50%。 您只能通过 css 和反应方式来实现。 如果你有兴趣让我知道编辑这个答案。
从display: none
过渡到display: block
将不起作用。 实际上,只有有限数量的 CSS 属性可以进行动画处理,而display
不是一个(参见: MDN 上的 Animatable CSS 属性)。
做这样的事情的常用方法是从width: 0
过渡到width: 50%
(或者你想要你的块的任何值,只要记住auto
将不起作用)。
.parent { display: flex; justify-content: space-evenly; background-color: #f31d84; width: fit-content; }.icon { margin: 5px; }.text { display: block; margin: 5px; width: 0; overflow: hidden; transition: all.2s ease; }.parent:hover.text { width: 50%; transition: all.2s ease; }
<div> <div class='parent'> <div class='icon'> icon </div> <div class='text'> texttexttexttext </div> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.