Echo - 520小玩具
Echo
這是一個網路應用程式,與我的女朋友一起慶祝 5 月 20 日(意思是“我愛你”)。 ;P 它受 iMessage 中名為 echo 的訊息效果的啟發。
只是讓你開心。
嗯,這就是此作者的原話,滿滿的撒狗糧 ???,但是此程式還是很有趣的對不對~所以還是拉下程式碼,悄悄的 ? 一波(畢竟單身汪,週末也沒什麼事)
預覽
demo
將學到的知識點
- 單一 div 氣泡繪製
- 隨機大小位置
- 動畫效果
- 記憶體回收
氣泡繪製
可以看出它是由一個橢圓和一個小尾巴構成。
如何繪製下這個小尾巴?
先看下這篇文章瞭解下使用CSS3繪製圖形基本原理
width: 10rem;
height: 10rem;
background-color: orangered;
border-left: 1rem solid orange;
border-bottom-left-radius: 10rem 7rem;
看此上,將背景色取掉;是不是一個小尾巴就出來了,縮小下尺寸,汽泡的小尾巴就就出來了~這裡我們通過偽類元素來繪製氣泡的小尾巴。
隨機大小位置
氣泡是絕對定位的,控制隨機出現的位置,其實就是控制 left
和 top
值。
- 先獲取當前可視視窗尺寸
- 控制氣泡出現的在可視視窗的範圍內,
left
和top
小於可視視窗寬高的值 - 大小,使用 CSS3 裡的
transform
屬性的scale()
來控制(肯定不能比本身的小)
const left = Math.ceil(Math.random() * 0.9 * screenSize.width)
const top = Math.ceil(Math.random() * 0.9 * screenSize.width)
const scale = 1 + Math.random(); // 縮放值
記憶體回收
記憶體回收實現原理,good
作為是否回收的標誌(全 false
進行回收)。整個流程就是每一個訊息 good
預設為 true
, 當某條訊息完成了消失動畫以後,就會將 good
狀態變為 false
; 然後將固定的第一條訊息以外的全部訊息中的 good
提取出來。我們的最終目的是判斷當前提取出來的新陣列裡是否還存在處於展示狀態的訊息,無論訊息量有多少,只需要判斷是否至少有一個 good
狀態為 true
即可,直到全部訊息的 good
狀態都為 false
了,我們再進行記憶體回收 ♻️,也就是對 msgs
重置。
記憶體回收的實現:
const hasMsgs = this.msgs
.slice(1)
.map(({ good }) => good)
.reduce((left, right) => left || right); // 找出任意一個為 true 的狀態
if (!hasMsgs) this.msgs.splice(1);
License
MIT Licensed.
相關文章
- bat檔案用echo列印變數顯示ECHO IS OFF/ECHO已關閉BAT變數
- 520活動
- [Bash] echo command
- 中國玩具消費調查:喜歡的玩具型別型別
- 洛谷——玩具謎題
- FV520B
- echo與函式函式
- echo命令詳解
- 小喬陪玩具備如下殺手鐧讓你賺的盆滿缽滿
- 開發一個Node命令列小玩具全過程--高顏統計工具命令列
- 三維 WebGIS 新玩具:OpenGlobusWeb
- Shell echo命令介紹
- 深入淺出 Laravel EchoLaravel
- 最近用`go`+`umi`+`MySQL`寫了一個文章部落格+小視訊播放的玩具GoMySql
- Shell Step by Step (4) —— Cron & Echo
- laravel-echo前端使用指北Laravel前端
- Shell學習【printf與echo】
- P4290 [HAOI2008] 玩具取名
- [寫了一個玩具] 引數注入
- 520專屬Python程式碼分享Python
- echo -n "12345678" > /data/params/d/DongleId
- Linux基礎命令:echo的使用Linux
- Laravel + Laravel Echo + Pusher 網頁推送Laravel網頁
- 微信紅包限額臨時調至520元 微信520紅包怎麼發?
- Diff到底是怎麼更新的?這個小玩具將Diff的過程視覺化了出來視覺化
- 【Voyage】GDOI 2023 旅遊記 || ECHO.
- laravel-echo-server 踩坑記錄LaravelServer
- [20210218]bash echo 建立順序號.txt
- 駭客玩具入門——1、前言與裝機
- 駭客玩具入門——6、網路嗅探
- 駭客玩具入門——8、其他攻擊手段
- [極客玩具] Win、Office 無配置 自啟用
- 520表白小程式設計Python程式碼詳解(PyQt5介面,B站動漫風)程式設計PythonQT
- laradock+Laravel-echo 私有頻道解決Laravel
- Laradock 部署 Laravel+MySQL+Redis+Laravel-echo-serverLaravelMySqlRedisServer
- laravel-echo-server 廣播服務搭建LaravelServer
- 分享 echo-framework 專案基礎框架Framework框架
- Laravel 如何使用 Docker 快速架起 Echo Server(上)LaravelDockerServer