jQuery 添加子项时转换容器的大小
Transition The Size of a Container When jQuery Adds Children
我正在寻找一种方法,当 jQuery 添加一个子项或显示一个隐藏的子项时,为元素(边框)大小的增加设置动画。这 JSFiddle 可能更好地解释了这一点。单击标签显示第二个标签时,分隔线不会立即转换为新大小,有没有办法慢慢转换它?我已经尝试了所有我能想到的 CSS 和 JS 的组合,并在 Stack 上找到了无济于事。感谢帮助!
function load() {
$("#example").hide();
$("label").click(function() {
$("#example").fadeIn();
})
}
div {
display: grid;
grid-template-columns: 1fr;
border: 1px solid black;
font-size: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body onload=load()>
<div>
<label>Shown</label>
<label id=example>Addition</label>
</div>
</body>
如果您希望延迟显示实际元素及其属性 (border),您可以向 JS 添加一个 setTimeout()
函数代码将延迟您的超时函数中设置的给定时间量,然后它将 运行 内置 fadeIn
jQuery 函数。
您可以添加 CSS 动画 并使用 @keyframes 使动画 opacity 淡入,但是这将被限制为 [=41= 中的某些属性] 而已。
如果这不是您想要实现的目标,请告诉我。我使用了您在 JSFiddle 中链接到的示例代码。
function delayFade(time) {
setTimeout(() => $("#example").fadeIn(), time);
}
function load() {
$("#example").hide();
$("label").click(() => delayFade(1500));
}
div {
display: grid;
grid-template-columns: 1fr;
border: 1px solid black;
font-size: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body onload=load()>
<div>
<label>Shown</label>
<label id=example>Addition</label>
</div>
</body>
您可以使用 .slideToggle()
- 这会随着父 div 尺寸的增加而向下滑动底部边框。
$("#example").slideToggle();
这也会在隐藏时使底部边框平滑过渡。
function load() {
$("#example").hide();
$("label").click(function() {
$("#example").slideToggle();
})
}
div {
display: grid;
grid-template-columns: 1fr;
border: 1px solid black;
font-size: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body onload=load()>
<div>
<label>Shown</label>
<label id=example>Addition</label>
</div>
</body>
我正在寻找一种方法,当 jQuery 添加一个子项或显示一个隐藏的子项时,为元素(边框)大小的增加设置动画。这 JSFiddle 可能更好地解释了这一点。单击标签显示第二个标签时,分隔线不会立即转换为新大小,有没有办法慢慢转换它?我已经尝试了所有我能想到的 CSS 和 JS 的组合,并在 Stack 上找到了无济于事。感谢帮助!
function load() {
$("#example").hide();
$("label").click(function() {
$("#example").fadeIn();
})
}
div {
display: grid;
grid-template-columns: 1fr;
border: 1px solid black;
font-size: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body onload=load()>
<div>
<label>Shown</label>
<label id=example>Addition</label>
</div>
</body>
如果您希望延迟显示实际元素及其属性 (border),您可以向 JS 添加一个 setTimeout()
函数代码将延迟您的超时函数中设置的给定时间量,然后它将 运行 内置 fadeIn
jQuery 函数。
您可以添加 CSS 动画 并使用 @keyframes 使动画 opacity 淡入,但是这将被限制为 [=41= 中的某些属性] 而已。
如果这不是您想要实现的目标,请告诉我。我使用了您在 JSFiddle 中链接到的示例代码。
function delayFade(time) {
setTimeout(() => $("#example").fadeIn(), time);
}
function load() {
$("#example").hide();
$("label").click(() => delayFade(1500));
}
div {
display: grid;
grid-template-columns: 1fr;
border: 1px solid black;
font-size: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body onload=load()>
<div>
<label>Shown</label>
<label id=example>Addition</label>
</div>
</body>
您可以使用 .slideToggle()
- 这会随着父 div 尺寸的增加而向下滑动底部边框。
$("#example").slideToggle();
这也会在隐藏时使底部边框平滑过渡。
function load() {
$("#example").hide();
$("label").click(function() {
$("#example").slideToggle();
})
}
div {
display: grid;
grid-template-columns: 1fr;
border: 1px solid black;
font-size: 50px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body onload=load()>
<div>
<label>Shown</label>
<label id=example>Addition</label>
</div>
</body>