Автоматически прокручивайте просмотр просмотра чата с фиксированной высотой, так что каждое новое пользовательское сообщение расположено вверху-поднимает более ранние сообщения вверх и вне поля зрения (видны только путем прокрутки)-как и Chatgpt. Сообщения остаются в хронологическом порядке (сверху до дна) в DOM, но когда добавляется помощник ответа и вызывает переполнение, контейнер должен прокручивать дно, чтобы показать этот последний контент. Как я могу реализовать это поведение, используя JavaScript и CSS < /p>
.chat-container { display: flex; flex-direction: column; height: 100vh; }
.chat-header { padding: 1rem; background: #444; color: white; }
.chat-messages {
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
border: 1px solid #ccc;
padding: 1rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.message { max-width: 70%; padding: 0.5rem; border-radius: 1rem; }
.user { background: #007aff; color: white; align-self: flex-end; }
.bot { background: #ddd; color: #333; align-self: flex-start; }
.composer { padding: 0.5rem; border-top: 1px solid #ccc; }
.input { width: 80%; padding: 0.5rem; }
.send-btn { padding: 0.5rem 1rem; }
Chat Demo
Welcome!
Send
const msgs = document.getElementById('msgs');
const inputEl = document.getElementById('input');
const sendBtn = document.getElementById('send');
function addMessage(text, cls) {
const m = document.createElement('div');
m.className = `message ${cls}`;
m.textContent = text;
// I append chronologically:
msgs.appendChild(m);
// then try to scroll the new message into view at the top:
m.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
sendBtn.addEventListener('click', () => {
const txt = inputEl.textContent.trim();
if (!txt) return;
addMessage(txt, 'user');
inputEl.textContent = '';
setTimeout(() => addMessage('Echo: ' + txt, 'bot'), 200);
});
Подробнее здесь: https://stackoverflow.com/questions/796 ... -container
Как прокрутить последнее сообщение от пользователя в верхнюю часть контейнера чата ⇐ Javascript
Форум по Javascript
1752237937
Anonymous
Автоматически прокручивайте просмотр просмотра чата с фиксированной высотой, так что каждое новое пользовательское сообщение расположено вверху-поднимает более ранние сообщения вверх и вне поля зрения (видны только путем прокрутки)-как и Chatgpt. Сообщения остаются в хронологическом порядке (сверху до дна) в DOM, но когда добавляется помощник ответа и вызывает переполнение, контейнер должен прокручивать дно, чтобы показать этот последний контент. Как я могу реализовать это поведение, используя JavaScript и CSS < /p>
.chat-container { display: flex; flex-direction: column; height: 100vh; }
.chat-header { padding: 1rem; background: #444; color: white; }
.chat-messages {
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
border: 1px solid #ccc;
padding: 1rem;
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.message { max-width: 70%; padding: 0.5rem; border-radius: 1rem; }
.user { background: #007aff; color: white; align-self: flex-end; }
.bot { background: #ddd; color: #333; align-self: flex-start; }
.composer { padding: 0.5rem; border-top: 1px solid #ccc; }
.input { width: 80%; padding: 0.5rem; }
.send-btn { padding: 0.5rem 1rem; }
Chat Demo
Welcome!
Send
const msgs = document.getElementById('msgs');
const inputEl = document.getElementById('input');
const sendBtn = document.getElementById('send');
function addMessage(text, cls) {
const m = document.createElement('div');
m.className = `message ${cls}`;
m.textContent = text;
// I append chronologically:
msgs.appendChild(m);
// then try to scroll the new message into view at the top:
m.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
sendBtn.addEventListener('click', () => {
const txt = inputEl.textContent.trim();
if (!txt) return;
addMessage(txt, 'user');
inputEl.textContent = '';
setTimeout(() => addMessage('Echo: ' + txt, 'bot'), 200);
});
Подробнее здесь: [url]https://stackoverflow.com/questions/79698278/how-to-scroll-the-last-message-from-user-to-the-top-of-chat-container[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия