发完 v2.0.0 那天我打开仪表盘,看到公告卡片高度变成了原来的两倍多。
公告内容写得有点多——版本号、亮点、迁移说明,几行都堆在那里。卡片高度撑起来之后,旁边的「关闭」按钮被顶到了边上,看起来很别扭。
最先想到的修法是「截断」——只显示前 N 个字,加省略号。但写多长其实没规律,截字数不漂亮。
后来改成 CSS 三件套:
1 | .dashboard-announcement-message { |
让浏览器自己处理两行省略。卡片高度就被锁住了。
光锁高度还不够。卡片本来 align-items: flex-start——内容顶对齐,关闭按钮跟着顶在右上角。如果消息只有一行,按钮就显得空着掉在上面。改成 align-items: center 之后,无论内容多少,关闭按钮总在卡片垂直中线上:
1 | .dashboard-announcement-card { align-items: center; } |
不过两行省略也不能解决所有情况。有些公告本来就需要展开看全文。所以我顺便给公告结构加了一个 summary 字段——后端从 announcement.json 读出来透传给前端,前端优先展示摘要,回退到原 message:
1 | const display = announcement.summary || announcement.message; |
这样写公告的时候,我可以同时写两个版本:一句话的摘要在仪表盘上展示,完整版在点开后看。
整件事修完才回过头来想——很多前端的”显示问题”,第一反应是动 CSS,结果发现真正的问题是数据形状不对。
CSS 解决「再长也别撑爆」。
数据层多加一个 summary 字段才能解决「我想让它显示啥」。
两边都补一点,问题才算真正闭环。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 咕咚的小站!
评论