导航

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

侧边栏
最新评论
广树管理员
2025-02-19 22:04
@老张博客:大佬呀,这第几次问这个问题了呀
老张博客
2025-02-19 21:18
我在想博主是不是一位女生呀
广树管理员
2025-02-19 20:46
@菲兹克斯喵:是呀,学生时代最喜欢的小说
菲兹克斯喵
2025-02-19 20:04
前段时间刚看完文学少女第九卷,后面没什么时间了 确实好看,快 20 年的小说了
广树管理员
2025-02-19 08:23
@某科学的贝壳:哈哈哈,确实属于有生之年了
正在攻略

logo_kai.jpg


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

1210 x 50(蓝底).png

cloudcone

相似内容:
推文
维基萌博客系统发布了0.22.2版本啦! 这个版本的主要两点有: 1.重构了谷歌广告组件,不再依赖环境变量,在管理后台就可以对谷歌广告进行管理。 2.通过timochan 大佬(https://www.timochan.cn)的协助,维基萌博客系统现在可以在docker上一键部署lite版本了!日后会更新关于docker版的部署教程,敬请期待。 3.升级了nuxt的版本。 具体更新内容请见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.22.2
发表于:2025-01-11 21:10
推文
维基萌博客系统发布了0.21.0版本啦! 这次更新主要增加了文章的批量处理以及大量细致化的设置。 具体更新内容请见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.21.0
发表于:2024-11-28 18:12
推文
给博客侧边栏增加了【随机标签】的功能。快看看有没有感兴趣的标签吧!
发表于:2024-07-13 11:20
推文
应大佬们的要求给博客加上了“自定义HTML”的功能,可以在侧边栏加上各种奇奇怪怪的HTML小组件了。 应我自己的要求给博客加上了“今日热门文章”的功能,可以直观的展现哪些是维基萌当前热门的内容。
发表于:2024-07-06 10:24
推文
博客系统积攒了一波更新,推了一个新版本,具体更新内容可以在github上查看:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.18.1 话说我最近才知道原来loli.net这个用来镜像的域名已经不大好使了,反而谷歌的fonts.googleapis.com域名好使了?
发表于:2024-06-30 11:27
推文
博客增加了可以在后台自定义添加CSS样式的功能,这样一些小的自定义样式就可以不用编译实现,增加了拓展性。 于是就小改了博客样式,PC版左下角加了会动的砂糖❤,有谜之立体感🕶️。 动图是由AI生成的,感觉挺有意思的,也一起分享了吧。 https://www.leiapix.com/
发表于:2024-04-09 18:19
推文
博客新功能,游戏记录页面公开! https://www.wikimoe.com/page/games
发表于:2024-03-14 18:11
博文
现在可以公开的维基萌博客重构记录其①
发表于:2023-11-18 12:18