#javascript #html #css #vue.js #less
Вопрос:
Я использую vue.js с меньшим. Я пытаюсь прокрутить div с переполнением, но он не работает, он остается как переполнение:скрытый
Это и есть код
<template>
<div class="chatarea" v-if="currentRoom">
<ChatInput />
<div class="chatbox">
<ChatBit
:message="chats.message"
:sender="chats.username"
v-for="(chats, index) in messages[currentRoom]"
:key="index"
/>
</div>
</div>
</template>
Это css
<style lang="less" scoped>
.chatarea {
width: calc(100% - 300px);
height: 100%;
display: flex;
flex-direction: column-reverse;
align-items: center;
background-color: #3b3d47 - #222222;
.chatbox {
height: calc(100% - 50px);
// height: 600px;
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
overflow-y: scroll;
}
}
</style>
Спасибо за любую помощь 🙂
Комментарии:
1. Попробуйте задать фиксированную высоту для вашего класса chatarea. Вроде
height: 100vh
или что-то в этом роде.2.
height: 100%;
высота родителей не будет работать, если у родителя нет фиксированной высоты. Браузер тоже не знает, что применять на 100%. Кроме того, вы получаете полосу прокрутки только в том случае, если элемент действительно переполняется. Если высота элемента не меньше, чем у содержимого, переполнение не появится и, как таковое, полоса прокрутки не окажет никакого влияния.3. @tacoshy Спасибо, но я не могу понять это ясно. Что мне тогда делать?
4. Я рекомендую вам добавить фрагмент кода вместо скриншота
Ответ №1:
Всякий раз, когда я использую атрибут css overflow-y
, я бы обычно использовал значение auto
вместо scroll
.
Вот ваш css, который я изменил, и теперь он должен работать для вас. ВуэЙС здесь не проблема.
<style lang="less" scoped>
.chatarea {
width: calc(100% - 300px);
height: 100%;
display: flex;
flex-direction: column-reverse;
align-items: center;
background-color: #3b3d47 - #222222;
.chatbox {
height: calc(100% - 50px);
// height: 600px;
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
overflow-y: auto;
}
}
</style>
Комментарии:
1. Спасибо, но это не работает
auto
, просто скрывает полосу прокрутки навсегда..2. @AnupamKrishna вам не нужна полоса прокрутки для прокрутки вверх и вниз.
3. Он не прокручивается вверх или вниз. Он ведет себя как переполнение: скрыто
4. хм, это странно. на моем MacBook, когда я прокручиваю вверх и вниз, он работает, когда я прокручиваю вверх и вниз.
Ответ №2:
Попробуйте присвоить атрибут max-height
.chatarea {
width: calc(100% - 300px);
height: 100%; // suggest you to 100vh
display: flex;
flex-direction: column-reverse;
align-items: center;
background-color: #3b3d47 - #222222;
.chatbox {
max-height: calc(100% - 50px);
// height: 600px;
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-end;
overflow-y: scroll;
}
}
Ответ №3:
Спасибо всем, кто помогал. Проблема заключалась в justify-content:flex-end
том, что я удалил линию, и все начало работать так, как задумывалось.
Ответ №4:
в этом случае вы прокомментировали строку, в которой задали высоту для элемента, который вы хотите прокрутить, просто замените этот блок кода : height: 600px; // You had commented this line
и лучше установить overflow
значение auto
, поэтому, если чат не прокручивается (высота чатов меньше высоты контейнера), полоса прокрутки не отображается, и это не ухудшает ваш пользовательский интерфейс.