Tôi có một ul
với max-height
và overflow-y: auto
.Cuộn xuống cuối một div bị tràn trong React
Khi người dùng nhập vào đủ li
yếu tố, các ul
bắt đầu di chuyển, nhưng tôi muốn cuối cùng li
với form
trong đó luôn luôn có mặt và có thể xem được cho người dùng.
tôi đã cố gắng thực hiện một chức năng scrollToBottom
trông như thế này:
scrollToBottom() {
this.formLi.scrollIntoView({ behavior: 'smooth' });
}
Nhưng điều đó chỉ làm cho ul
nhảy tới phía trên cùng của màn hình và hiển thị các li
mẫu tại nó như là chỉ có thể nhìn thấy Điều.
Có cách nào tốt hơn để thực hiện việc này không? Câu trả lời tôi tìm thấy có xu hướng lớn hơn một chút và sử dụng ReactDOM. Cảm ơn!
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>
Trong trường hợp này, có thể bạn di chuyển li cuối cùng ra khỏi ul và thêm một trình bao bọc khác –
Tại sao tôi muốn làm điều đó thay vì chỉ cuộn ul? –