You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

聚焦时改变尺寸的textarea导致按钮点击事件无法触发求助

解决textarea聚焦时按钮首次点击无响应的问题

问题根源

当textarea触发:focus样式改变高度时,页面会立刻发生布局重排,按钮的实际位置被移动了。你第一次点击的是按钮原来的位置,但此时按钮已经不在该位置,所以点击事件没触发;第二次点击对准了按钮新的位置,事件才正常生效。

可行解决方案

方案1:让textarea高度保持固定

直接给textarea设置和聚焦后一致的最小高度,彻底避免布局变动:

textarea {
  min-height: 5rem; /* 和:focus里的高度匹配 */
}
/* 聚焦时改其他样式做视觉提示即可,比如边框颜色 */
textarea:focus {
  border-color: #2196f3;
  outline: none;
}

方案2:用transform实现高度变化(不触发重排)

如果一定要保留高度变化的动态效果,用transform代替直接修改height——transform只会触发浏览器重绘,不会改变元素布局流,按钮位置不会偏移:

textarea:focus {
  transform: scaleY(1.5); /* 按比例纵向放大,替代height变化 */
  transform-origin: top center; /* 从顶部开始缩放,避免挤压下方元素 */
}

方案3:给textarea套固定高度容器

给textarea加一个固定高度的父容器,这样即使textarea高度变化,也不会影响外部布局:

<div class="textarea-wrap">
  <textarea class="dx-texteditor-input" spellcheck="true" tabindex="0" role="textbox" aria-multiline="true"></textarea>
</div>
<button onclick="alert('ok');">test</button>

<style>
.textarea-wrap {
  height: 5rem;
  overflow: hidden; /* 避免textarea超出容器范围 */
}
textarea {
  width: 100%;
  height: 100%;
}
textarea:focus {
  height: 5rem; /* 可按需调整,容器高度固定后不会影响按钮位置 */
}
</style>

内容的提问来源于stack exchange,提问作者gt.guybrush

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:16:12