当前位置: 首页 > 面试题库 >

防止内容扩展网格项目

田嘉澍
2023-03-14
问题内容

TL; DR:table-layout: fixed CSS网格有什么类似的东西吗?

我试图用几个月的大4x3网格创建年视图日历,而白天则嵌套7x6网格。

日历应填满页面,因此Year网格容器的宽度和高度分别为100%。

.year-grid {
  width: 100%;
  height: 100%;

  display: grid;
  grid-template: repeat(3, 1fr) / repeat(4, 1fr);
}

.month-grid {
  display: grid;
  grid-template: repeat(6, 1fr) / repeat(7, 1fr);
}

为简单起见,该笔中的每个月都有31天,从星期一开始。

我还选择了一个小得离谱的字体来演示该问题:

网格项(=日单元格)非常简洁,因为页面上有数百个。当日期数字标签过大(使用左上角的按钮随意使用笔中的字体大小)时,网格将逐渐变大并超过页面的正文大小。

有什么办法可以防止这种行为?

我最初宣布年份网格的宽度和高度为100%,所以这可能是起点,但是我找不到任何与网格相关的CSS属性都可以满足这一需求。

免责声明: 我知道有很简单的方法可以设置日历的样式,而无需使用CSS网格布局。但是,这个问题更多地是关于该主题的常识而不是解决具体示例。


问题答案:

默认情况下,网格项目不能小于其内容的大小。

网格项目的初始大小为min-width: automin-height: auto

你可以通过设置网格项目覆盖这种行为min-width: 0min-height: 0overflow比其它任何值visible

从规格:

6.6。 网格项目的自动最小大小

为网格项目,该规范定义了提供更合理的默认最小大小auto的值min-width/ min- height在指定的轴的自动最小尺寸也适用于它的网格项目overflowvisible。(效果类似于对弹性物品施加的自动最小尺寸。)

这是有关弹性项目的更详细说明,但它也适用于网格项目:

  • 为什么弹性项目不能缩小到超过内容大小?

这篇文章还介绍了 嵌套容器的 潜在问题 以及主要浏览器之间 已知的 渲染差异

要修复您的布局,请对您的代码进行以下调整:

.month-grid {
  display: grid;
  grid-template: repeat(6, 1fr) / repeat(7, 1fr);
  background: #fff;
  grid-gap: 2px;
  min-height: 0;  /* NEW */
  min-width: 0;   /* NEW; needed for Firefox */
}

.day-item {
  padding: 10px;
  background: #DFE7E7;
  overflow: hidden;  /* NEW */
  min-width: 0;      /* NEW; needed for Firefox */
}


 类似资料:
  • 我得到了一个两列五行的CSS网格(在768px以上的显示器上)。所有行都被设置为“min-content”,最后一行被设置为“auto”。 我定义了模板网格区域,每个“单元格”一个,但第二列的第3到第5行除外--名为a6(在示例代码中) 当a6中很少或没有内容时,网格的行为完全符合我的要求。然而,如果在a6中添加了更多的内容,则a5和a7区域的高度会扩大,尽管它们的内容没有改变。 CSS: HTM

  • 我正在使用flexbox布局将三个div定位在一列中,以便每个div具有相同的高度。如果每个div的内容太大,则会显示滚动条。我希望每一节只扩展到其内容的高度,但目前发生的情况是,每一节总是相同的高度,而不管其中的内容如何。 如果容器是900px,则每个节应该是300px,如果一个节的内容超过300px高,则应该出现滚动条。但是,如果lets的内容说中间的部分只有100px高,那部分应该只有100

  • ① python中yield关键字的使用: yield 是一个类似 return 的关键字,只是这个函数返回的是个生成器 当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象 当你使用for进行迭代的时候,函数中的代码才会执行 生成器特点:可迭代;只能读取一次;实时生成数据,不全存在内存中。 def fun(): yield "aaa" yield

  • 问题内容: Linux bash脚本: 执行结果: 扩展到文件列表,它实际上是脚本本身。如何防止这种情况并查看实际变量值?在一般情况下,可能会比复杂,例如:。 问题答案: 您还需要转义变量: 并在您的职能:

  • 我曾多次尝试安装Kartik Grid Extension,但都因以下错误而失败: 设置未知属性:yii\bootstrap\ButtonDropdown::containerOptions 错误位于/Applications/MAMP/htdocs/business/vendor/yiisoft/yii2/base/Component中。php 第197行 我的看法是: 并在web中配置模块。p

  • 问题内容: 有关CSS网格的所有指南似乎都暗示着一种结构,其中放置在网格中的元素是网格本身的子级。 其中具有和网格属性的定义。 如果我想将作为网格“孙代”的元素放置在网格本身上(而不是依赖于其父元素),是否有意义? 在这里,我希望能够将A,B和C分别放在自己的网格行中;那有道理吗? 问题答案: 从 CSS Grid Level 2草案规范开始: 2.网格容器 子网格提供了通过嵌套元素向下传递网格参