使用 justify-content: flex-end 時無法 scroll 滑動畫面

--

目標

使用 vue.js 做出如上圖聊天室的功能與樣子。

  1. 最新的訊息置底
  2. 可滾動看上方歷史訊息。

遇到問題

直覺想到使用以下方法:

display: flex;
flex-direction: column;
justify-content: flex-end; //置底
overflow: scroll; // 溢出時能滑動看更多訊息

在訊息還沒滿出來時一切都很完美,直到訊息超過可讀範圍後,發現加了 “overflow: scroll;” 卻無法滾動畫面!

找尋解法

下關鍵字 ”justify-content flex-end overflow scroll” 東查西查,原來大家都是為了做聊天視窗遇到這個問題XD

找到很多種解法,但用起來都沒效(有的說在 FireFox 才有效),而且還有超複雜要動用到 JavaScript 的方法。

瀏覽了大約一小時,看起來其實都是用繞開的方式解決這個狀況。

既然如此,就決定自己想一個簡單的!

自創解法

靈感來源:
找尋解法時看到有人說用 “flex-direction: column-reverse;”
確實是能置底,但順序卻反過來不是我想要的成果。

突發奇想:
那用反序處理 for 迴圈呢?
就等於反兩次回到正的順序,又可以置底。

事不宜遲立刻查查看,下關鍵字 “v-for reverse”,立刻看到方法來試試:

<template>

v-for=”chatData in chatDatas.slice().reverse()”

<style scoped>

display: flex;
flex-direction: column-reverse;
overflow: auto;

搭配起來就成功啦😭

覺得超感動的~

不能只有我知道!

分享給需要的人💛

--

--

Responses (2)