gpt4 book ai didi

html - 使用过渡调整文本区域的大小是滞后的

转载 作者:太空宇宙 更新时间:2023-11-03 22:28:52 25 4
gpt4 key购买 nike

当我为 textarea 设置过渡并且我想通过右下角的调整大小 handle 调整它的大小时,调整大小很慢。

你可以在这个简单的例子中看到:

textarea{
outline : none;
border: 3px solid black;
resize: vertical;
-webkit-transition:all ease-in-out 0.7s;
-moz-transition:all ease-in-out 0.7s;
-ms-transition:all ease-in-out 0.7s;
-o-transition:all ease-in-out 0.7s;
transition:all ease-in-out 0.7s;
}

textarea:focus{
border-color: red;
}
<textarea>Resize me by my resize handle please</textarea>

没有过渡调整大小是平滑的,但我想有边界颜色变化的过渡。

我考虑过不在 textarea 上使用过渡,而是像这样使用动画:

textarea{
outline : none;
border: 3px solid black;
resize: vertical;
}

textarea:focus{
animation: animate 0.7s linear forwards;
}

@keyframes animate {
100% {
border-color: red;
}
}
<textarea>Resize me by my resize handle please</textarea>

如您所见,我部分解决了动画问题,但在焦点外我没有过渡。

请提供纯 CSS 的解决方案。如果我可以在不使用动画的情况下解决延迟问题,或者使用我不知道如何选择焦点输出的动画焦点输出来解决它。

最佳答案

问题是您正在将过渡应用到所有 属性,并且在调整大小时您正在更改元素的高度/宽度,因此它们会受到过渡的影响;因此你有这种滞后效应。

为避免这种情况,只需将过渡应用于所需的属性,在本例中为 border-color

textarea {
outline: none;
border: 3px solid black;
resize: vertical;
transition: border-color ease-in-out 0.7s;
}

textarea:focus {
border-color: red;
}
<textarea>Resize me by my resize handle please</textarea>


关于动画问题:当焦点被移除时,动画也会被移除,所以你会立即回到初始状态。要解决此问题,您可以考虑使用两个动画。

这只是对第二种方法的修复,而不是我推荐的解决方案,因为上面的方法是合适的。

textarea {
outline: none;
border: 3px solid black;
resize: vertical;
animation: focus-out 0.7s linear forwards;
}

textarea:focus {
animation: focus-in 0.7s linear forwards;
}

@keyframes focus-out {
from {
border-color: red;
}
to {
border-color: black;
}
}

@keyframes focus-in {
to {
border-color: red;
}
}
<textarea>Resize me by my resize handle please</textarea>

关于html - 使用过渡调整文本区域的大小是滞后的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com