Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 为什么显示内联块不工作?_Html_Css - Fatal编程技术网

Html 为什么显示内联块不工作?

Html 为什么显示内联块不工作?,html,css,Html,Css,对不起,这个非常基本的问题 我有这两个盒子,宽度均匀- .box1 { width:50%; height:200px; } .box2 { width:50%; height:200px; } 这是这些箱子的集装箱分类- .container { border:1px solid green; display:inl

对不起,这个非常基本的问题

我有这两个盒子,宽度均匀-

        .box1
        {
        width:50%;
        height:200px;
        }

        .box2
        {
        width:50%;
        height:200px;
        }
这是这些箱子的集装箱分类-

.container
{
    border:1px solid green;
    display:inline-block;
    width:100%;
  }
我想知道当容器
div
的宽度为100%时,它的容器
div
被等分为宽度的50%。 那么在对齐它们之后,为什么不对齐呢? 但是,将宽度减小到50%以下会使它们对齐

虽然如果我将它们与float属性对齐,它会以内联方式显示-

.container
{
    border:1px solid green;
    display:inline-block;
    width:100%;
  }
.box1
{
   float:right;
    width:50%;
       height:200px;
    background:red;
}
.box2
{
    float:right;
    background:red;

    width:50%;
    height:200px;

}

我想知道为什么它不显示它们的内联宽度是否等分?

它们是内联块,但通常在使用50%时,不计算像素舍入边距/填充。因此,在现实中,50%将是50%+10px,这将导致下一个div不适合在同一条线中,打破该线,并将其放在第一个div下方,而不是旁边。如果您使用Chrome的inspector或Firefox的Firebug检查元素,您会注意到它并没有占据整个宽度,只是略高于一半。

它们是内联块,但通常使用50%时,您不计算像素舍入边距/填充。因此,在现实中,50%将是50%+10px,这将导致下一个div不适合在同一条线中,打破该线,并将其放在第一个div下方,而不是旁边。如果您使用Chrome的inspector或Firefox的Firebug检查元素,您会注意到它不占整个宽度,只占其一半以上。

您的边框作为元素大小的一部分计算,它是一个附加值,而不是100%宽度中的一个包含项。这将导致内联元素移动到下一行

长方体模型将其所有零件添加到一起,以获得最终尺寸,包括填充和边距:


一个常见的问题是,当您指定边框1px时,实际上是在向最终计算的大小添加两个像素,一个在左侧,一个在右侧。

您的边框作为元素大小的一部分计算,它是一个添加,而不是100%宽度中的包含。这将导致内联元素移动到下一行

长方体模型将其所有零件添加到一起,以获得最终尺寸,包括填充和边距:


一个常见的问题是,当您指定边框1px时,实际上是在向最终计算的大小添加两个像素,一个在左侧,一个在右侧。

首先,我将设置填充:0;利润率:0;对于任何浏览器分配的填充(用户代理样式表-可以使用chrome中的inspect元素或Mozilla的firebug等查看),如果要浮动它们,请将它们向左浮动,然后清除浮动。所以你有这样的东西:

.container{
    border: 1px solid green;
    width:100%;
}

.box1{
  margin: 0;
  padding: 0;
  float:left;
  width:50%;
  height:200px;
  background:red;
}

.box2{
  margin: 0;
  padding: 0;
  float:left;
  background:red;
  width:50%;
  height:200px;
}

我应该做到这一点。

首先,我将设置填充:0;利润率:0;对于任何浏览器分配的填充(用户代理样式表-可以使用chrome中的inspect元素或Mozilla的firebug等查看),如果要浮动它们,请将它们向左浮动,然后清除浮动。所以你有这样的东西:

.container{
    border: 1px solid green;
    width:100%;
}

.box1{
  margin: 0;
  padding: 0;
  float:left;
  width:50%;
  height:200px;
  background:red;
}

.box2{
  margin: 0;
  padding: 0;
  float:left;
  background:red;
  width:50%;
  height:200px;
}

应该这样做。

好的,这意味着它会自动添加空间来设置它们对齐?这就是为什么它在下一行显示它。有没有办法保持
50%
width并将它们对齐?这意味着计算的不仅仅是宽度。还有边距和填充,这可能使div的宽度超过50%,导致下一个div下降到下一行。这不是边距/填充/边框。由于内联块位于内联格式上下文(如文本中的单词)中,因此(例如换行符)会导致浏览器在内联块之间显示空白。好的,这意味着它会自动添加空间以设置它们对齐吗?这就是为什么它在下一行显示它。有没有办法保持
50%
width并将它们对齐?这意味着计算的不仅仅是宽度。还有边距和填充,这可能使div的宽度超过50%,导致下一个div下降到下一行。这不是边距/填充/边框。它(例如换行符)导致浏览器在内联块之间显示空白,因为它们位于内联格式上下文中(如文本中的单词)。非常有用的链接,谢谢。如果这充分回答了您的问题,请将其标记为已接受。非常有用的链接,谢谢。如果这充分回答了您的问题,请将其标记为已接受。