当前位置: 首页 > news >正文

【Godot4.4】模拟类似网页的布局

概述

最近瞎搞一些布局的事情,其中需要实现类似网页的布局,也就是水平居中,且中间内容区域固定宽度的形式。最终通过容器的嵌套,实现了效果,想着记录一下思路。

实现

单独用MarginContainerCenterContainer,以及两者配合都无法完成要求的布局。

CenterContainer

页面内容居中肯定要用到CenterContainer,但是它的效果是在整个容器内居中其子元素。也就是水平和垂直都居中。垂直方向的居中是我们不想要的。

CenterContainer是水平和垂直都居中

抵消垂直居中

好在通过实验发现,只需要在CenterContainer外添加一个VBoxContainer就可以让其在顶部排列,实现抵消其垂直方向居中的效果。

通过在CenterContainer外添加一个VBoxContainer抵消其垂直方向的居中

页面内容排布

页面实际内容区域

CenterContainer内添加加一个VBoxContainer,用于从上到下,排布实际的页面内容。

背景色或图片设置

通过在最外层的PanelContainer上添加StyleBox,可以实现为页面添加背景色或背景图片。

为页面添加边距

通过在外层VBoxContainer外包裹一个MarginContainer可以设置额外的边距。

当然在最外层PanelContainer上设置StyleBox后设定内容边距也是可以的。

此时,容器的嵌套结构以及其作用如下:

PanelContainer          // 页面背景颜色或图片
  MarginContainer       // 模拟body的margin
    VBoxContainer       // 抵消CenterContainer在垂直方向的居中
      CenterContainer   // 内容的居中
        VBoxContainer   // 内容的上下排布 设定最小宽度

实现啊背景颜色+背景图

因为单个PanelContainer要么通过StyleBoxFlat设定背景色,要么通过StyleBoxTexture设定背景图,两者无法兼得。解决办法也很简单,如果要同时实现背景颜色和半透明背景图片,可以再PanelContainer外再套PanelContainer,也就是:

PanelContainer            // 页面背景颜色
  PanelContainer          // 页面背景图片
    MarginContainer       // 模拟body的margin
      VBoxContainer       // 抵消CenterContainer在垂直方向的居中
        CenterContainer   // 内容的居中
          VBoxContainer   // 内容的上下排布 设定最小宽度

实际效果就是:

滚动条

页面内容的实际显示,需要加载再一个ScrollContainer中以显示滚动条。

此时的页面背景是随着页面而滚动的。

固定背景

如果要实验固定背景,则需要将ScrollContainer移动到如下的位置:

总结

Godot的容器就是为了UI布局存在的,很强大,但是对于某些特殊布局还是有些设置繁琐和力不从心。

另外Godot不支持WebBrowser,无法内嵌网页。

有时候又需要类似网页的显示和布局,所以只能自己搞。

此文所述的容器嵌套版本只是记录一下思路,后续会创建自定义容器简化和特化类网页排版的需求,敬请期待。

相关文章:

  • DEV-C++ 为什么不能调试?(正确解决方案)
  • 现代优雅品牌包装徽标设计衬线英文字体安装包 Halone Modern Serif Typeface
  • 爬蟲動態IP代理與數據採集穩定性
  • 如何在 NocoBase 中实现 CRM 的线索转化
  • Linux : 环境变量
  • 汇票,银票,纸票,本票,支票,商票的关系和分类?
  • 基于编程语言的建筑行业施工图设计系统开发可行性研究————从参数化建模到全流程自动化的技术路径分析
  • 机器学习笔记:初识图神经网络
  • 测试工程师的DeepSeek提效3:质保中的应用
  • AI数字人口播源码开发全解析
  • servlet tomcat
  • C++发展
  • 力扣刷题——4.寻找两个正序数组的中位数
  • Linux基础开发工具—软件安装器yum。人类世界软件安装器一夜消失,而我却会用yum
  • CentOS 7中安装Dify
  • axios启动!
  • 【技海登峰】Kafka漫谈系列(四)基于Kraft模式实现Kafka集群部署与配置
  • LLM 大模型基础认知篇
  • python-leetcode-不同的二叉搜索树 II
  • 2606. 找到最大开销的子字符串
  • 网站域名查询/新产品上市推广策划方案
  • 一个网站空间可以做多少个网站/做企业推广的公司
  • 怎么做网站导航外链/10000个免费货源网站
  • 做一个舌尖上的中国网站怎么做/友情链接作用
  • 南京网站设计个人/帮平台做推广怎么赚钱
  • ih5制作平台官网免费/哈尔滨网络优化公司有哪些