Как я могу прокрутить вниз дочернего div без прокрутки окна?

У меня есть приложение, которое содержит небольшое окно чата. Как обычно с чатами, я хочу, чтобы он по умолчанию прокручивался вниз и прокручивался до последнего сообщения, если оно добавляется.

Я уже проверил некоторые другие решения, такие как это , в котором предлагалось использовать useRef и функцию scrollToElement. Проблема, с которой я столкнулся, заключается в том, что он не прокручивается вниз в нужном мне элементе, а вместо этого прокручивает все окно до этого элемента. Я создал codeandbox, чтобы проиллюстрировать свою настройку здесь: https://codesandbox.io/s/upbeat-albattani-zxprz?file=/src/App.js

Используя решение, указанное выше, все окно начинает прокручиваться, а не только серое поле.

Как я могу настроить это под свои требования?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
342
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Добавь это

дисплей: 'гибкий',

flexDirection: «обратный столбец»,

import React from "react";
import "./styles.css";

export default function App() {
  return (
    <div
      className = "App"
      style = {{
        height: "110vh",
        display: "flex",
        justifyContent: "center",
        alignItems: "center"
      }}
    >
      <div
        style = {{ display: "flex", overflow: "hidden", position: "relative" }}
      >
        <div
          style = {{
            display:'flex',
            flexDirection:'column-reverse',
            overflow: "auto",
            padding: "2rem",
            backgroundColor: "#ebebeb",
            height: "300px",
            fontSize: "2rem"
          }}
        >
          Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam
          nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat,
          sed diam voluptua. At vero eos et accusam et justo duo dolores et ea
          rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
          ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur
          sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et
          dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam
          et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea
          takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit
          amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
          invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
          At vero eos et accusam et justo duo dolores et ea rebum. Stet clita
          kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
          amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed
          diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam
          erat, sed diam voluptua. At vero eos et accusam et justo duo dolores
          et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est
          Lorem ipsum dolor sit amet.
        </div>
      </div>
    </div>
  );
}
Ответ принят как подходящий

Вы можете использовать метод scrollTo в окне. например window.scrollTo(x-axis,y-axis) и поскольку точное количество пикселей в нижней части страницы постоянно меняется в зависимости от содержимого страницы, вы можете использовать это свойство для тела document.body.scrollHeight и ваш код будет выглядеть так window.scrollTo(0,document.body.scrollHeight); ** поскольку вы используете реакцию, добавьте код прокрутки внутри метода useEffect или componentDidMount это не обязательно должно быть тело, это также может быть элемент div, например element.scrollHeight

Другие вопросы по теме