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

等距DIV的流体宽度

李敏学
2023-03-14
问题内容

我有一个宽度可变的容器DIV。

在此我有4个DIV,所有300px x 250px …

<div id="container">
   <div class="box1"> </div>
   <div class="box2"> </div>
   <div class="box3"> </div>
   <div class="box4"> </div>
</div>

我想发生的是框1向左浮动,框4向右浮动,框2和3在它们之间均匀分布。我希望间隔也要流畅,以便将浏览器做得更小,空间也要变小。


问题答案:
  • 可以在IE6 +和所有现代浏览器中使用!
  • 我将您要求的尺寸减半,以使其易于使用。
  • text-align: justify结合在一起.stretch是在处理定位。
  • display:inline-block; *display:inline; zoom:1修复inline-block了IE6 / 7
  • font-size: 0; line-height: 0修复了IE6中的一个小问题。
#container {
  border: 2px dashed #444;
  height: 125px;
  text-align: justify;
  -ms-text-justify: distribute-all-lines;
  text-justify: distribute-all-lines;
  /* just for demo */
  min-width: 612px;
}

.box1,
.box2,
.box3,
.box4 {
  width: 150px;
  height: 125px;
  vertical-align: top;
  display: inline-block;
  *display: inline;
  zoom: 1
}

.stretch {
  width: 100%;
  display: inline-block;
  font-size: 0;
  line-height: 0
}

.box1,
.box3 {
  background: #ccc
}

.box2,
.box4 {
  background: #0ff
}
<div id="container">
  <div class="box1"></div>
  <div class="box2"></div>
  <div class="box3"></div>
  <div class="box4"></div>
  <span class="stretch"></span>
</div>

多余的span(.stretch)可以替换为:after。

这仍然工作在所有的浏览器相同的上述溶液。:after不适用于IE6 / 7,但distribute-all-lines无论如何他们都在使用,所以没关系。

有一个小缺点:after:要使最后一行在Safari中完美工作,您必须注意HTML中的空白。

具体来说,这不起作用:

<div id="container">
    ..
    <div class="box3"></div>
    <div class="box4"></div>
</div>

这样做:

<div id="container">
    ..
    <div class="box3"></div>
    <div class="box4"></div></div>

您可以将其用于任意数量的child,div而无需boxN通过更改将类添加到每个子类中

.box1, .box2, .box3, .box4 { ...

#container > div { ...

这将选择作为div的第一个子元素的任何div #container,并且其下没有其他任何div 。要概括背景色,可以使用CSS3 n阶选择器,尽管仅IE9 +和其他现代浏览器支持它:

.box1, .box3 { ...

变成:

#container > div:nth-child(odd) { ...


 类似资料:
  • 问题内容: 我想显示一个带有边距的可扩展()… 这是我的代码: 这是我的CSS代码: 问题答案: 您可以使用以下CSS达到所需的结果:

  • 问题内容: 我有一个父div,其中将包含2或3个子div。我希望子div自动采用相等的宽度。 谢谢 问题答案: 这不是不可能的。使用甚至还不是特别困难。 该解决方案将在现代浏览器中运行。在IE7中将无法使用。 CSS: HTML:

  • 问题内容: 我的要求很简单: 2列,其中正确的列具有固定的大小 。不幸的是,无论是在stackoverflow上还是在Google中,我都找不到可行的解决方案。如果我在自己的上下文中实现,那么那里描述的每个解决方案都会失败。当前的解决方案是: 我得到以上代码的以下内容: 请指教。非常感谢! 问题答案: 除去左列上的浮子。 在HTML代码处,右列必须位于左列之前。 如果右边有一个浮点数(和宽度),并

  • 问题内容: 是否可以将宽度设置为相同的高度(比率1:1)? 例 CSS 问题答案: 使用jQuery,您可以通过以下方式实现此目的

  • 问题内容: 是否可以将宽度设置为相同的高度(比率1:1)? 例 CSS 问题答案: 使用jQuery,您可以通过以下方式实现此目的

  • 问题内容: 我已经看过一百万个关于如何居中放置块元素的问题,而且似乎有几种流行的方法可以做到,但是它们都依赖于固定的像素宽度。然后,要么使用绝对定位,要么使用绝对/相对定位等等。我们都知道,如果元素的宽度设置为%,则此方法将无效。 真的没有办法真正流畅地执行此操作吗?我说的是使用宽度( 不是 用固定宽度越来越小的设置十二个媒体查询)。 当心:有大量的解决方案使用流行语“响应”,但 没有 回答我的问