一組純CSS開發的聊天背景圖,幫助避免發錯消息的尷尬
theme: channing-cyan highlight: atelier-dune-light
我正在參加「碼上掘金挑戰賽」詳情請看:碼上掘金挑戰賽來了!
我與好友的故事
我好友,人美心善,就是做事有點小迷糊。這不,她最近好幾次差點消息發錯羣。主要是羣太多,不好區分。
於是,我準備想個法子,省得她一不小心,變成大型社死現場。
2小時之後
來自網友的智慧
網友提供了一組聊天背景圖,右上是羣分類,幾種分類,我挑了三個很適合好友的:交流羣、工作羣、摸魚羣。
文字在圖片右側,自己沒發言,就能很清楚的看到文字。還有一羣可愛的小動物,為背景圖增加了一絲趣味。
一組聊天背景圖
上效果
先來看最終實現的效果
https://code.juejin.cn/pen/7141285499787804685
一張背景圖
從上面的代碼展示中不難發現,整個背景圖左側是很空曠的。因為羣聊裏,一般其他人的發言在屏幕的左側,自己的發言在右側,所以沒有發言之前,可以很清晰的看到右側的背景信息。而背景圖的右上角是當前羣的類型名,基本打開羣聊,一眼就發現背景圖上的文字了。
垂直書寫模式
文字的垂直書寫模式是通過CSS提供的writing-mode實現的。
writing-mode定義了文本在水平或垂直方向上如何排布。
以下知識點來自菜鳥教程
| 參數 | 描述 | | ------------- | ------------------------------------- | | horizontal-tb | 水平方向自上而下的書寫方式。即 left-right-top-bottom | | vertical-rl | 垂直方向自右而左的書寫方式。即 top-bottom-right-left | | vertical-lr | 垂直方向內內容從上到下,水平方向從左到右 | | sideways-rl | 內容垂直方向從上到下排列 | | sideways-lr | 內容垂直方向從下到上排列 |
背景圖中文字的效果就是為文本設置了writing-mode屬性值為vertical-rl。
js
.chat-title {
writing-mode: vertical-rl;
font-size: 32px;
font-weight: 600;
position: absolute;
top: 80px;
right: 0;
}
一組卡通形象
文字下面是一組可愛的卡通形象。我摸了摸下巴,感覺是可以用CSS實現的。
小雞 🐤
小雞圖形由這以下部分組成:
頭、一隻眼睛、嘴巴、左手臂、右手臂
基本都是用圓和橢圓組成的,整體色調是黃色的,除了鼻子設計成了橘色,基本沒有什麼實現難度。
注:温馨提示,如果有四肢的卡通形象,如果後面沒有遮擋物,最好把身體畫出來。
熊貓 🐼
熊貓圖形由這以下部分組成:
頭、臉、左眼睛、右眼睛、左腮紅、右腮紅、鼻子、嘴巴、左耳朵
除了嘴巴基本都是用圓和橢圓組成的,整體色調是黑、白色,除了腮紅設計成了粉色,基本沒有什麼實現難度。
説説嘴巴的實現吧。
一些卡通形象或者顏文字中,會有向下的尖括號代表嘴巴,比如(╥╯^╰╥)、(〒︿〒)、╭(╯^╰)╮。一般表示不開心或者傲嬌。而這裏的熊貓整體是有些高冷的,所以嘴巴沒有設計成小羊或者青蛙那樣張開的。
這種類型的嘴巴用CSS實現很簡單,有幾種方式,我一般是用兩個直線,結合定位+旋轉實現。
```js .panda-mouth { width: 3px; height: 5px; background: #000001; border-radius: 2px; position: absolute; top: 19px; z-index: 199; } .panda-mouth-left { left: 16px; transform: rotate(20deg); } .panda-mouth-right { left: 20px; transform: rotate(-30deg); }
```
青蛙 🐸
青蛙圖形由這以下部分組成:
頭、左眼睛、右眼睛、鼻子、嘴巴、舌頭、左手臂
基本都是用圓和橢圓組成的,整體色調是黑、白、綠色,除了舌頭設計成了粉色,基本沒有什麼實現難度。
小羊 🐑
小羊圖形由這以下部分組成:
頭、臉、右眼睛、嘴巴、舌頭、耳朵
基本都是用圓和橢圓組成的,整體色調是黑、白色,舌頭和腮紅是粉色,基本沒有什麼實現難度。
介紹一下耳朵的實現。
一般羊的耳朵尖而長,是耷拉在腦袋兩側的,所以這裏也是這樣設計的,因為小羊是側顏,所以只需要實現一隻耳朵即可。因為耳朵也是白色的,所以要展示一部分顏色深的地方好和頭進行區分。
這樣實現方式就有很多了,加陰影啦,使用兩層元素啦,偽元素啦,都可以,我這裏用了偽元素實現的。
```js .sheep-ear { position: absolute; width: 20px; height: 40px; border-radius: 100%; background: #10140a; top: 8px; right: 5px; transform: rotate(6deg); } .sheep-ear::before { content: ''; width: 20px; height: 39px; border-radius: 100%; background: #fff; position: absolute; top: -1px; left: 1px; z-index: 199; }
```
比啾
這個卡通形象眼熟,但是叫不上來名字,所以我給它起名叫“比啾”。(因為羅小黑裏有一個比丟也很可愛)
比啾圖形由這以下部分組成:
頭、臉、左眼睛、右眼睛、左腮紅、右腮紅、鼻子。左耳朵、右耳朵
基本都是用圓和橢圓組成的,整體色調是黑、粉色,臉是藕色,基本沒有什麼實現難度。
一組背景圖
不同類型羣組的背景圖,除了名字不同,卡通的順序也適當的做了調整,避免看錯羣。
注入靈魂
背景圖是靜態的,但是我們的頁面可以是動起來的。所以我為背景圖注入了一絲靈動。
三個心,有間隔的從第一個玩偶邊上飛出來,飛一段時間消失。
我基本實現心形都是中間一個矩形、兩邊各一個圓形。
飛出來和消失使用animation動畫實現,因為三顆心路徑是一致的,所以需要設置間隔時間,否則就會重疊成一個。
```js .chat-heart { position: absolute; left: 200px; top: 200px; } .heart { position: absolute; width: 20px; height: 20px; background-color: #e64356; opacity: 0; top: 6px; left: 45px; } .heart:before, .heart:after { content: ''; position: absolute; width: 100%; height: 100%; border-radius: 50%; background-color: #e64356; } .heart:after { bottom: 0px; left: -53%; } .heart:before { top: -53%; right: 0px; transform: rotate(45deg); } .heart1 { animation: heartfly 2s ease-out infinite 0.5s; } .heart2 { animation: heartfly 2s ease-out infinite 1s; } .heart3 { animation: heartfly 2s ease-out infinite 1.5s; } @keyframes heartfly { 70% { opacity: 1; } 100% { transform: rotate(35deg) translateY(-100px) translateX(-100px); opacity: 0; } }
```
故事的結尾
故事的結尾就是,有人更換了微信聊天背景,有人寫完了一篇文章,願友誼地久天長。
不會以為這就是結尾吧,哈哈哈。
- await-to-js 源碼分析,體驗一把捕獲異常的優雅
- CSS偽類的第三集,原來偽類也可組CP
- 從:is()説起,開啟CSS偽類第二集
- 一組純CSS開發的聊天背景圖,幫助避免發錯消息的尷尬
- 「CSS特效」我的發呆專屬,反覆解鎖手機屏幕
- 「技術分享」以Antd為例,快速打通UI組件開發的任督二脈
- 「功能實現」我封裝了一個表單組件,感覺離財富自由又近了一步
- 「經驗總結」高效開發,老代碼可以這樣動
- 前端開發提效小技巧之業務功能篇
- 人生有忙忙碌碌,也有詩和遠方 | 2022年中總結
- 【端午節】新奇體驗,我用react實現網頁遊戲的全過程(包括規則設計)
- 【暑假記憶】消暑神器,我用CSS復刻了一個遊戲機
- 突圍?我願稱之為向上的攀登者
- 【孟夏之遇】望孟夏之短夜兮,螢星相伴
- 【技術學習】SVG-邊學邊做
- 【TS實踐】自己動手豐衣足食的TS項目開發
- 【碼上掘金】通過FileReader讀取Excel文件內容
- 【Taro開發】四月芳菲,Taro觀賞指南
- 【Node.js】青梅煮酒,聊聊zlib壓縮
- 【知識點】關於iframe跨域通信