当前位置: 首页 > 知识库问答 >
问题:

如何创建此布局?子项比父项/填充项/flexbox宽?

谢豪
2023-03-14

我肯定这很简单,但我很难理解。

我有两个div。标题div最大宽度为500px。主分区最大宽度为400px。主div应在浏览器窗口中水平居中。标题div的左边缘需要与主div的左边缘对齐。请参见下文。红线是浏览器窗口的中心:

为此,我添加了一个最大宽度为500px(粉红色)的包装div,并在左侧使用了额外的填充。这在一定程度上有效。但在较小的屏幕尺寸下,左侧的额外填充会使布局偏离中心。

那么我如何创建这个布局呢?我假设我不能将heading div添加为main div的子级,因为子级不能比其父级宽。我想flexbox可能是答案,但我从未使用过flexbox。

这是我目前掌握的代码:https://jsfiddlehtml" target="_blank">.net/aqpyzogc/

 <div class="wrapper">
    <div class="heading"></div>
    <main></main>   
</div>


.wrapper {
    max-width:500px;
    margin:0 auto; 
    padding:0 0 0 100px;
    background-color:lightpink;
    }

.heading {
    max-width:500px;
    background-color:cyan;
    height:100px;
    }


main {
    max-width:400px;
    background-color:grey;
    height:500px;
    }

共有1个答案

华善
2023-03-14

但在较小的屏幕尺寸下,左侧的额外填充会使布局偏离中心。

可以使用calc()函数计算这些视口大小的正确填充量。

低于600px的视口宽度,剩余空间为100%减去400px,我们需要其中的一半用于左侧填充,因此:

body {
  margin: 0;
}

.wrapper {
  max-width: 500px;
  margin: 0 auto;
  padding: 0 0 0 100px;
  background-color: lightpink;
}

@media (max-width: 600px) {
  .wrapper {
    padding-left: calc((100% - 400px) / 2);
  }
}

.heading {
  max-width: 500px;
  background-color: cyan;
  height: 100px;
}

main {
  max-width: 400px;
  background-color: grey;
  height: 500px;
}
html lang-html prettyprint-override"><div class="wrapper">
  <div class="heading"></div>
  <main></main>
</div>
 类似资料:
  • 我正在玩flexbox,我的flex项似乎溢出了它的父容器。我能做些什么来确保它能呆在它的范围内? 抱歉,它有点长:) 但我正试图垂直列出一些控件,我想在一行上订购两个控件<因此,UL以一个灵活的方向(柱)和LI的方向(水平)保存所有内容 但是,即使控件嵌套在具有设置宽度的div中,它们仍然在其边缘上运行。有谁能给我一些建议,说明我应该做些什么:)<谢谢!

  • JSFIDLE 如何阻止flexbox的子项溢出容器? 我不希望溢出设置为隐藏 超文本标记语言: CSS:

  • 我有一个带有listview的片段,它的适配器包含两种类型的单元格(取决于位置)。 列表中的第一个单元格应该是自定义视图(按钮,ViewPager,CirclePageSignator),第一个单元格宽度match_parent 第二个单元格也是自定义视图,其中包含按钮和图像视图。 我的问题是,当我放置ViewPager时,在第一个单元格中看不到ViewPager。宽度以包装内容或填充父对象或匹配

  • 我的应用程序使用一个库项目“核心项目”和应用程序核心,然后针对每个支持的设备的特殊性进行小项目“子项目”,即。亚马逊Fire TV、Kindle平板电脑、普通谷歌平板电脑、手机等。 比方说,我有一个自定义视图类,它以编程方式扩展布局。两者都在核心项目上: 然而,自定义视图在核心项目res/layout下不断膨胀另一个视图(毕竟听起来合乎逻辑,因为它们都位于同一个项目中)。 有没有办法改变这种行为?

  • 我正在使用flexbox搭建一个网站的基本用户界面。与通常的电子邮件布局非常相似。 出于某种原因,列布局flexbox容器(,梅花色)的第二个子项(class,lightseagreen color)比其父项的高度更高,我不希望它这样做。 我制作了一个代码笔片段来显示这种行为。 我怎样才能防止绿色的孩子比它的李子父母有更高的身高?我希望孩子只是可以滚动,但不能比父母高。

  • Standard project layout(标准的项目布局) 在 Loopback 根目录下有三个 子目录: server - Node 应用脚本和配置文件 client - 客户端 JavaScript, HTML, 和 CSS 文件. common - 文件共用客户端和服务器. 子目录 common/models 目录 包含所有模型JSON和JavaScript文件 definitions