gpt4 book ai didi

css-float - 使用 CSS 显示 :inline-block or float:left with mixed amounts of text

转载 作者:太空宇宙 更新时间:2023-11-04 15:31:06 25 4
gpt4 key购买 nike

在这里寻找一些关于如何最好地设置以下 HTML 样式的专家建议:

<body>
-Some content-
<div class="parent" style="height:50%;">
<div class="child" style="background-color:#FF9999;">An image</div>
<div class="child" style="background-color:#9999FF;">Some text</div>
</div>
</body>

要获得这样的结果:

enter image description here

我正在使用的标准如下:

  • 容器 div,.parent,是一个 block 元素,填充浏览器窗口的整个宽度。
  • 我知道第一个/左侧内部 div 的宽度,以像素为单位,但不是百分比,具体取决于将到达那里的图像的规律性。
  • 我不知道第二个/右侧内部 div 的宽度 - 因为它包含可变数量的文本,应该自动填充右侧的整个空间,无论浏览器窗口宽度如何
  • 第一个/左边的 div 的高度,当比第二个/右边的 div 短时,应该拉伸(stretch)到相同的高度(原因是:第一个/左边的 div 将有一个右边框将其与第二个分开/right div,此边框应为 .parent div 的高度;但是,第一个/左侧 div 并不总是出现在标记中,在这种情况下不应出现边框)。
  • 我不会使用 JavaScript 技巧。

根据我的经验和网络资源的帮助,我尝试过的解决方案:

  1. float :使用 float:left 的传统方法显然无法将第一个/左侧 div 拉伸(stretch)到其兄弟或 .parent 的(可变)高度。

  2. 行内 block :.parent {背景颜色:#999999;}.parent > .child {display:inline-block;vertical-align:top;height:100%;}

当第二个/右边的 div 中的文本不足以填满整行时,使用 display:inline-block 似乎很有用。然而,当有更多文本时,第二个/右边的 div 会增长到外部容器允许的宽度,迫使它包裹在第一个/右边的 div 下。

如有任何见解,我们将不胜感激!

最佳答案

使用基于表格的标记不是答案。但是,如果您不需要支持 IE7 或更低版本,则可以使用 display:table 来解决这个问题。看看我放在一起的这个演示。编辑第二个子div中的内容量,看看效果。

jsfiddle demonstrating display:table

.parent {
display:table;
}

.child {
display:table-cell;
}

基本上,您告诉 parent 元素充当表格,两个 child 元素充当表格单元格。这为您提供了表格布局的好处,而没有可访问性问题和 html 表格的额外标记。不过正如我所提到的,这在 IE7 中不起作用。如果你需要旧的 IE 支持,你将不得不求助于不太优雅的解决方法:(

关于css-float - 使用 CSS 显示 :inline-block or float:left with mixed amounts of text,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13372184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com