J'ai un ul
avec un max-height
et overflow-y: auto
.
Lorsque l'utilisateur saisit assez d' li
- éléments, l' ul
commence à défiler, mais je veux le dernier li
avec l' form
en à toujours être présent et visible pour l'utilisateur.
J'ai essayé de mettre en œuvre un scrollToBottom
fonction qui ressemble à ceci:
scrollToBottom() {
this.formLi.scrollIntoView({ behavior: 'smooth' });
}
Mais cela ne fait que l' ul
sauter vers le haut de l'écran et afficher l' li
avec la forme en elle que la seule chose visible.
Est-il un meilleur moyen pour y parvenir? Réponses que j'ai trouver a tendance à être un peu plus âgés, et l'utilisation ReactDOM. Merci!
CSS:
.prompt-box .options-holder {
list-style: none;
padding: 0;
width: 95%;
margin: 12px auto;
max-height: 600px;
overflow-y: auto;
}
HTML:
<ul className='options-holder'>
{
this.state.items.map((item, index) => (
<li key={item.id} className={`option ${index === 0 ? 'first' : ''}`}>
<div className='circle' onClick={this.removeItem} />
<p className='item-text'>{ item.text }</p>
</li>
))
}
<li key={0} className={`option form ${this.state.items.length === 0 ? 'only' : ''}`} ref={el => (this.formLi = el)}>
<div className='circle form' />
<form className='new-item-form' onSubmit={this.handleSubmit}>
<input
autoFocus
className='new-item-input'
placeholder='Type something and press return...'
onChange={this.handleChange}
value={this.state.text}
ref={(input) => (this.formInput = input)} />
</form>
</li>
</ul>