【问题标题】:How to make expandable div with min-height如何使用最小高度制作可扩展的 div
【发布时间】:2013-07-29 12:13:23
【问题描述】:

如果我有一个高度:100% 和宽度:100% 的 div,它的背景颜色将主要取决于浏览器的高度和宽度。但是如果那个div里面的内容是动态增长的,那么这个div就不会根据内容展开,文本会重叠流过那个div。 另一方面,如果我将 min-height 和 min-width 设置为 100%,那么如果内容长度小于浏览器的窗口,背景颜色将不会拉伸到浏览器的高度和宽度。

html, body{
 height: 100%;
 margin: 0;
 padding: 0;
}
#container{
 height: 100%;
 width: 100%;
 background-color: red;
}

如何制作这样的div,它的背景色主要会覆盖浏览器的窗口大小,但如果内容动态增长,它可以同时随着内容扩展。

问候。

【问题讨论】:

  • 在内容“动态增长”超出窗口边界的情况下如何处理?因为如果你有 100% 的高度和宽度,它会填满整个东西
  • 抱歉,无法理解您所说的内容。
  • 为什么不在body元素上设置背景颜色呢?在这种情况下,无论div 的实际大小如何,整个浏览器窗口始终设置背景颜色。
  • 因为是我的网页布局,主要内容区域会与正文颜色不同。
  • 但是你说div 应该填满整个浏览器窗口,那么你怎么会看到body 标签的背景颜色呢?您自己说过:“如果我将 min-height 和 min-width 设置为 100%,那么如果内容长度小于浏览器的窗口,背景颜色将不会拉伸到浏览器的高度和宽度。”所以对我来说,听起来你希望div 伸展以填充所有内容 - 但如果它填充了所有内容,那么你将看不到任何身体背景颜色。

标签: html css


【解决方案1】:

我仍然不知道您实际上想要实现什么。通过您的fiddle sample,在内部潜水员周围使用实心边框来获得红色周围(而不是另一个具有背景颜色和填充的div)会容易得多。但是,如果您只是不希望文本超出 div,则必须允许 div 调整大小:

http://jsfiddle.net/JQ7fr/1/


更新

我想现在看到你的问题了。您尝试做的事情不可能像您尝试做的那样。您对 CSS 盒模型的基本误解而堕落。盒子的min-height 总是指其父级的高度。如果未设置父级的高度,则height 默认为auto,这意味着高度由浏览器计算为适合框内容所需的大小。如果你设置min-height!

假设你给body一个高度100%,body和你的浏览器窗口一样高。如果给您的外部 div 一个 min-height100%,它也将与您的浏览器窗口一样高,但是由于您没有设置 height(设置 min-height 确实 NOT 影响@ 987654337@ 属性!),此框的高度为auto。所以事实上,真实高度(CSS 标准称之为“暂定高度”)只和你的外部 div 的内容一样大(不一定是 100%),但因为 min-height 这么说必须是 100% 它将以 100% 的高度渲染,而不管它的 真实高度 是多少。如果您现在将内部 div 的 min-height 设置为 100%,则那些 100% 表示 “我的父框高度的 100% 高度” 并且父框高度为 auto,它不是 100%!这就是为什么内部 div 不会填满整个屏幕的原因。

当然你可以给你的外层 div 一个 height100%,在这种情况下,将你的内层 div 的 min-height 设置为 100% 将使它填满整个屏幕,但现在外层 div 是真的只有 100% 的高度,它不会扩展超过 100%(它有一个 FIXED HEIGHT),即使内部 div 比那个大,这就是为什么红色不会超出屏幕的原因高度,即使黄色超出屏幕高度。

要么你的外部 div 有一个固定的高度,在这种情况下高度将是固定的(这是固定高度的全部点,不是吗?)或者它有一个灵活的高度,但如果它有一个灵活的高度,它永远不会“高于”其内容(内部 div)所需的值,因此在内部 div 处使用100%,无论您设置min-height 还是height 都没有关系,始终指的是 100%外部 div 的高度,并且该高度将与内部 div 所需的一样大。我希望你能明白我在说什么。

只需将 min-height 设置为 100%,您就可以让外部 div 以您想要的方式运行(始终填充至少 100% 的屏幕,但如果内容需要,可以扩展超出此范围),因为这里min-height 指的是身体高度,你的身体有一个固定的高度,但内部 div 永远不会那样做。好吧,如果您的外部 div 具有固定宽度,那么它可以表现得这样,但是外部 div 不会扩展,即使内部 div 需要它也不会扩展,而是内部 div 将 溢出 超出外部的边界。

我很确定有些人创建一个与您希望的外观完全一样的网页是没有问题的,但问题是,我们(或我)不知道它应该是什么样子.我怀疑你想要一个丑陋的黄色页面,周围有红色和蓝色边框,是吗?然而到目前为止,这是我们从您那里看到的唯一一页。我不知道你想要达到什么样的色彩效果,是使用图像(或者是否应该使用图像),或者页面最终会是什么样子。

【讨论】:

  • 非常感谢。您的解决方案按我的意愿工作。我不想使用实心边框,因为我必须在内部 div 外部创建多个边框(例如,outer1、outer2、innerdiv 外部的最外 div),每个边框都具有不同的颜色。但是如果我想使用边框而不是单独的 div,我只能使用一种颜色边框(在 css2 中)。
  • Mecki,请再看看你的小提琴:(jsfiddle.net/JQ7fr/1)。在那里,外部 div(背景颜色:红色)没有扩展到内部 div(背景颜色:黄色)的底部,因为您将其高度指定为 100%。如果将高度更改为最小高度,则外部 div 将与内部 div 一起扩展。但是,如果您从内部 div 中删除所有内容(文本),则内部 div 的高度将为零(可能是由于 max-height: auto)。如何克服这个问题,即innerdiv中没有​​内容和outerdiv的最小宽度,如何保持inner div的高度为outer div的100%?
  • @stockBoi 问题是我仍然不知道它应该是什么样子。我希望您可以发布一张图片,例如“这里,这就是它的外观,不管内部 DIV 中有多少文字”。
  • Mecki 在这个小提琴中你可以看到它应该是什么样子:jsfiddle.net/stockboi/VNKYm
  • 亲爱的 Mecki,请看最后一个答案(我无法在这里回复,因为评论的字符数超过了回复评论允许的最大字符数)。
【解决方案2】:

我不太清楚你的问题,我认为你应该为你的div设置一个正确的溢出属性,

尝试给它overflow: auto; 或任何其他合适的

The CSS Overflow Property

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 2018-11-17
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 2014-03-29
相关资源
最近更新 更多