导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
最新评论
广树管理员
2026-04-19 16:29
@saber酱:非常美
广树管理员
2026-04-19 16:28
@MqyGalaxy:其实也不完美,看角
saber酱
2026-04-19 16:26
真美啊
MqyGalaxy
2026-04-18 23:03
现在AI生成差分的一致性都好高,我当时本地生成老是在服装的细节上出问题😭。
广树管理员
2026-04-18 10:22
@Ringnee:但是不会做
攻略中
告别回忆 双想 ~Not always true~
暂无评分
Steam告别回忆 双想 ~Not always true~
2026年3月10日 22时 ~ 攻略中
已累计游玩1个月9天
“我觅见了生命中的唯一,而后——”
亚路塔:狐狸狐途的面包冒险
暂无评分
Steam亚路塔:狐狸狐途的面包冒险
2026年2月12日 19时 ~ 攻略中
已累计游玩2个月6天
一场席卷全世界的面包革命现在开始! 主人公查雅阴错阳差之下,开始了在荒废的岛屿上经营面包店的生活。 出外冒险搜集食材、研发崭新面包配方、遇见性格各异的伙伴们,建造更丰富的设施,用面包香气使无人问津的广场再次热闹起来!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩9个月27天
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩10个月25天
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

解决并记录因为加载顺序导致flex布局出现画面抖动的笔记

作者:广树时间:2024-07-15 14:35:19分类:博客开发

最近在浏览维基萌的时候发现了一个因为加载顺序导致的flex布局抖动现象,想着挺有意思的就记录一下解决思路和方案。


现象

image-9iu2c3ve.png

有时候在浏览维基萌的时候偶尔会一瞬间出现上图的布局。


image-xh7puj05.png

然后一晃而过恢复成了正常布局。

这个现象只有打包发布到服务器上才会出现,本地调试则复现不出来。


分析原因

起初怀疑右侧侧边栏的内容可能引发BUG。于是清空了右侧侧边栏,只保留一个空框架,但问题依旧存在。

后来思考为什么问题只在发布到服务器上时出现,而且复现问题时右侧侧边栏似乎消失了。这联想到可能与网速有关。

于是,在本地调试环境中通过限制浏览器流量成功复现了问题,这样问题就更容易解决了。

经过一番分析,找到了问题的根源。首先,维基萌的PC界面采用三栏布局,通过flex固定左侧菜单和右侧侧边栏的宽度,中间内容部分则分配剩余空间。HTML的加载是自上而下的,当由于网络原因导致页面加载较慢时,有可能在下载到中间内容部分时,右侧侧边栏尚未下载完毕,中间内容部分就先显示出来了。

基于flex布局的设定,由于右侧侧边栏暂时不存在,中间内容部分会占用所有剩余空间。随后,右侧侧边栏加载进来,就会造成界面短暂的抖动。


解决办法

解决办法也很简单,flex布局还有一个order的属性。

CSS中的order属性用于控制灵活盒子布局(flexbox)中的项目顺序。通过设置order属性,可以改变flex容器中的子元素在布局中的排列顺序,而不需要改变HTML的顺序。

首先将原本的HTML顺序从【菜单->内容->侧边栏】改成【菜单->侧边栏->内容】。

然后再通过order属性,指定三个元素的顺序为【菜单->内容->侧边栏】即可。

具体到CSS为:

.blog-layout-body {
  /* 前略 */
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}
.blog-layout-left-body {
  /* 前略 */
  order: 0;
}
.blog-layout-content-body {
  /* 前略 */
  order: 1;
}
.blog-layout-right-body {
  /* 前略 */
  order: 2;
}

其中【justify-content: space-between】指定两端对齐,可以防止在【内容】没加载时,【菜单】和【侧边栏】出现布局的抖动。

通过以上修改就可以让对应的元素在加载前和加载后都固定在一个位置,从而防止页面的抖动。

donate.png


telegram banner (1).png

相似内容:
推文
周末想升级Nuxt到4.4.2版本,结果困难重重。 首先是 Nuxt 所依赖的 Nitro ,在 2.13.1 升级到 2.13.2 的时候,把依赖项 rollup-plugin-visualizer 从 v6 升级到了 v7 。这项更改直接导致了 Nuxt 的最低 Node.js 要求从 20.x 提升到了 22.x 。 于是我切换 Node.js 的版本到 22.x ,发现程序内因为连接被重置导致Mongodb无法连接。于是我又尝试升级到 24.x 发现仍然连接被重置。 上网一查,原来当前 Node.js 不管是 v22.22.2 还是 v24.14.1 ,在 Windows 下都无法正常连接。 相关 issues 地址:https://github.com/meteor/meteor/issues/14246 当我好不容易把 Node.js 切换到没有这个问题的版本之后, Nuxt 又出问题了。 Nuxt 的 @nuxt/vite-builder 依赖项,在 windows 开发模式中无法正确拼接 CSS 地址。 于是作罢,回退版本。 现在搞不懂到底是 windows 的问题还是 windows 不受待见的问题,难道未来真的要将开发和生活分 2 台电脑来完成了吗?
发表于:2026-04-05 13:26
推文
维基萌博客系统发布了新版本啦!版本号为:v1.0.1 这次主要是增加了 JSON-LD 结构化数据的功能,在这个AI的时代,给搜索引擎更好的待遇。 详见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v1.0.1
发表于:2026-02-08 14:41
博文
维基萌博客系统v1可以公开的开发日志
发表于:2025-12-21 10:58
推文
维基萌博客系统发布了新版本啦!版本号为:v0.32.0 这个版本更新了许多新功能,其中最大的两个大更新就是增加了文章分享功能和地点功能。 详见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.32.0
发表于:2025-09-25 19:21
推文
给博客加了足迹地图功能。 现在能非常直观的看到我这些年玩了哪些地方了。希望有生之年能填满地图吧! 由于不想使用外部API,所以地图就显示了一个简单的世界轮廓。 页面地址:https://www.wikimoe.com/page/map
发表于:2025-09-06 09:46
推文
给360°全景模式增加了鱼眼模式和截图功能,在鱼眼模式下可以做到和insta360同款的地包天和小行星视角,并且通过截图功能直接保存当前视角的截图。
发表于:2025-04-10 19:42
推文
支持投票功能的0.27.1版本的维基萌博客系统发布啦! 这次更新主要是增加了投票功能,并修复了深色模式缺失的一些样式。 详见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.27.1
发表于:2025-03-15 14:54
推文
博客的评论可以撤回啦!在维基萌博客系统0.24.0版本中,如果遇到评论内容有不妥的情况,可以在5分钟内进行撤回操作(当然博主还是会知道你撤回了什么内容🤭),这样就不怕奇怪的评论被发到网上啦! 这评论系统做的越来越像是聊天系统了呢😅。 另外,既然可以撤回了,那么评论者自然也就可以看到自己还在审核中的评论了。对比之前的弹窗提示,这样用户能更直观的确认到自己刚才的评论是否发送成功了,从而防止出现重复发送评论的现象。 维基萌博客系统0.24.0版本现已发布,具体更新内容详见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.24.0
发表于:2025-01-25 14:24