我有一个CSS类,在悬停时应将justify-content
属性从center
更改为flex-start
,延迟时间为1秒。
所以一切正常,除了justify-content
以外都会被推迟。
.menuItem:hover {
transition-property: all;
transition-delay: 1s;
justify-content: flex-start;
}
我做错了吗?如果是这样,我怎样才能实现这种行为?
答案 0 :(得分:10)
justify-content
不是可转换的属性。您可以找到兼容属性here的完整列表。所有未列出的属性应该只是捕捉到它们的新值。
如果您只需要为单个元素设置动画,则可以尝试使用绝对定位。
#wrapper {
position: relative;
}
#element {
position: absolute;
left: 50%;
transform: translateX(-50%);
transition: all 300ms;
}
#element:hover {
left: 0;
transform: translateX(0);
}
请注意,这将 适用于多个元素。
答案 1 :(得分:1)
您可以使用两个flex项目来实现您的目标,其中的过渡位于“ flex”属性上。
.container {
display: flex;
justify-content: center;
border: 1px solid gray;
}
.content {
flex: 1;
max-width: fit-content;
border: 1px solid orangered;
}
.dummy {
flex: 0;
transition: flex 1s;
border: 1px solid limegreen;
}
.container:hover .hovered {
flex: auto;
}
<div class="container">
<div class="content"> hover over me </div>
<div class="dummy hovered" />
</div>
答案 2 :(得分:0)
您不能设置'justify-content'的动画,但是如果需要设置动画以使元素从一侧移动到另一侧,则可以执行以下操作:
.parent {
display: flex;
}
.menuItem:hover {
flex: 1;
animation: moveAnim .3s alternate 1;
}
@keyframes moveAnim {
from { flex: none }
to{ flex: 1 }
}
答案 3 :(得分:-6)
好吧,正如skreborn所说,你不能在对齐内容上使用转换,所以我尝试使用动画并且它有效:
.menuItem:hover {
animation-name: change-content;
animation-delay: 1s;
animation-fill-mode: forwards;
}
@keyframes change-content {
from { justify-content: center; }
to { justify-content: flex-start; }
}