【问题标题】:Possible to use CSS transitions with textarea rows value?可以将 CSS 转换与 textarea 行值一起使用吗?
【发布时间】:2018-11-26 21:55:10
【问题描述】:

多年来我一直在开发网站,这种情况以前从未出现过,我不确定我正在尝试做的事情是否可能。

我有一个带有textareaReact 组件。它的初始状态以 1 行的高度呈现,如下所示:

state = {
  rows: 1
}

...

<textarea 
   ...
   rows={this.state.rows ? this.state.rows : 1}
   onFocus={this.onFocus}
   ...
/>

onFocus 函数将行状态更改为 5,从而扩展了 textarea

这很好用,但我现在正尝试将 CSS 过渡添加到 textarea,以便它可以很好地扩展而不是立即扩展。

我尝试过的所有方法都不起作用,例如:

textarea#content {
  transition: all 2s ease-in-out;
}

...所以我的问题是 - 不能以这种方式使用 CSS 过渡吗?我进行了一些谷歌搜索,但找不到任何答案,这让我相信它不是,但我只是想在我开始以另一种方式实现这一目标之前确定一下。

【问题讨论】:

  • 我试过的一切都不起作用你试过什么?
  • 与其尝试对行进行某种过渡,不如使用高度?
  • @ScottMarcus transition: all 2s ease-in-out; - 不适合一个人。 @mwarren 如果我不能这样做,那将是我的下一步行动。但我现在很好奇它是否真的可以这样做,因为我以前从未遇到过这种情况。

标签: javascript css reactjs transition


【解决方案1】:

这里不能说 React 是如何参与其中的,但是要让 transition 工作,被转换的 CSS 属性必须为其设置一个默认值。您通过更改 rows间接影响 height 属性,但您实际上并未指定要更改 height,因此您无法转换 height 如果你只是间接地改变它。此外,没有 CSS rows 属性,因此转换它也没有运气。

解决方案是首先不使用rows 间接设置height。直接设置height,并在CSS中为height设置一个默认值。

而且,您甚至真的不需要 JavaScript 来执行此操作:

textarea {
 height:1em; /* Initial value required for transitions to work */
 transition:height 1s ease-in-out; /* configure the transition*/
}

/* Style to be applied automatically when the textarea recievs the focus */
textarea:focus {
  height:5em; /* A change in this property will trigger the transition */
}
&lt;textarea&gt;&lt;/textarea&gt;

【讨论】:

  • 是的,这就是我的猜测。可惜它不能像这样使用,因为那样会非常好!感谢斯科特的反馈。
  • @spice 不客气。不要忘记投票并标记为“the”答案。祝你好运。
  • 这甚至适用于行之类的东西吗?我认为转换不适用于基于整数的属性。
  • @JudeDesir 正如我所说,它不适用于rows,因为rows 不是CSS 属性。但是,转换将适用于 任何 CSS 属性值,这些属性值可以计算为具有起始值和结束值 - 整数值或分数值都可以。
猜你喜欢
  • 2020-11-23
  • 2018-04-20
  • 2011-03-18
  • 2017-01-05
  • 2018-12-10
  • 2012-12-25
  • 2021-09-16
  • 1970-01-01
  • 2011-03-09
相关资源
最近更新 更多