<分区>
假设我们有一个带有输入字段的按钮,输入字段会增长以占据可用空间:
单击按钮时,按钮旁边会出现额外的上下文:
内容的宽度是动态的——我们不能硬编码。输入自然收缩。
您将如何为动态内容的外观设置动画,使其从按钮后面滑出?
我正在寻找 CSS 动画解决方案。
<分区>
假设我们有一个带有输入字段的按钮,输入字段会增长以占据可用空间:
单击按钮时,按钮旁边会出现额外的上下文:
内容的宽度是动态的——我们不能硬编码。输入自然收缩。
您将如何为动态内容的外观设置动画,使其从按钮后面滑出?
我正在寻找 CSS 动画解决方案。
最佳答案
您可以使用关键帧动画来做到这一点。关键是设置一个大于元素大小的 max-width
。请注意,动画时间考虑了总的最大宽度。
CSS
.test {
animation-name: test;
animation-duration: 1s;
animation-direction: forwards;
overflow: hidden;
white-space: nowrap;
}
@keyframes test {
0% {
max-width: 0;
}
100% {
max-width: 200px;
}
}
然后你需要将这个类添加到你的动态对象中
function App() {
const [isOpen, setIsOpen] = useState(false);
return (
<div className="container">
<button onClick={() => setIsOpen(!isOpen)}>
{isOpen ? "Hide" : "Show"}
</button>
{isOpen && <div class='test'>Dynamic Content</div>}
<input type="text" />
</div>
);
}
如果您愿意,您也可以切换动画持续时间并使其在移除时发生,但我会把它留给您去玩。
关于javascript - 如何为动态宽度内容设置动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54797426/
相关文章:
javascript - 为什么在 ajax 或 javascript 函数调用后输入字段会被禁用?
javascript - 轮播不自动滑动 JQuery 1.12.4 和 Bootstrap 3.3.6
silverlight - 如何在加载 silverlight 时淡入图像?
objective-c - 如何使用 CAMediaTimingFunction 映射自定义值?
javascript - 在 ES6 代码中扩展 EcmaScript 5 类
javascript - laravel 回声 : "Uncaught ReferenceError: Echo is not defined"