2016-08-02 115 views
1

我有一个关于HTML的一般的,可能是初学者的问题。在容器内部定位div

#container { 
 
    height: 200px; 
 
    max-width: 600px; 
 
    border: 1px solid black; 
 
    margin: auto; 
 
    margin-top: 10px; 
 
} 
 
#item1 { 
 
    height: 100px; 
 
    max-width: 200px; 
 
    border: 1px solid red; 
 
} 
 
#item2 { 
 
    height: 100px; 
 
    max-width: 200px; 
 
    border: 1px solid blue; 
 
}
<div id="container"> 
 
    <div id="item1"></div> 
 
    <div id="item2"></div> 
 
</div>

我的问题是,为什么#item1#item2的div去对方的下方,而不是彼此相邻的?是不是他们不再是块级别的元素,因为我已经为它们指定了一个设置宽度?为什么他们不在#container里面并排排列? #container有足够的宽度来容纳这两个项目。

注意:这是严格的学习/好奇心。我知道我可以使用利润率和定位将它们放在我想要的位置。不过,我只是好奇它为什么这样表现。

谢谢。

+1

即使您已设置他们的宽度,他们的财产保持相同的块。你需要做的就是让它们显示出来:inline-block,然后它们将会像你想要的那样彼此相邻。 –

+0

[display:inline和display:inline-block?之间的区别是什么?](http:/ /stackoverflow.com/questions/8969381/what-is-the-difference-between-display-inline-and-display-inline-block) – Vucko

回答

1

Div元素是块元素,除非您将display属性指定为内联或内联块,否则它将不像其他内联元素那样对齐到右侧。

添加显示:内联块的div的CSS会给你你想要的。

0

<div>如果你不使用bootstrap或其他框架,标签总是以新行开头。如果你想看到单行中的多个项目,然后添加CSS像display: inline-block

0

请替换您的类如下所示。

#item1{ 
    height:100px; 
    max-width:200px; 
    border:1px solid red; 
    display:inline-block; 
} 
#item2{ 
    height:100px; 
    max-width:200px; 
    border:1px solid blue; 
    display:inline-block; 
} 
+0

谢谢,我明白了。当我这样做的时候,我在每个div(#item1,#item2)之间获得了一些空间,为什么会这样呢? – Zzgooloo

+0

你能告诉我任何快照吗? –

+0

它被解决了,这是因为div之间的HTML代码存在差距。我不知道这实际上会影响结果。 – Zzgooloo

0

#container即你div有块的显示属性。如果您不将其设置为其他任何属性,则这是一个默认属性。在你的情况下,div采用这个默认的显示属性。

要并排查看#item1和#item2,只需在#container中使用display:inline-block即可。

0

div是标准的块级元素。块级元素从新行开始,并尽可能向左和向右伸出。其他常见的块级元素是p和form,而HTML5中的新元素是header,footer,section等等。

即使您指定宽度,它也不会允许旁边的其他元素。这是块级元素的属性。

使用css inline-block它将占用指定的宽度或内容宽度。

https://developer.mozilla.org/en-US/docs/CSS/display

0

容器的height应该是孩子的div高度的之和孩子

即边界的高度。,height of parent container = 100+ 100+ 1+ 1+ 1+ 1 = 204px

#container { 
height: 204px; 
} 
+0

即使使用框大小:边框? – Zzgooloo

1

你有两种方式水平放置你块:显示财产或浮动财产。

这并不重要,你已经为你的元素设置宽度。它们仍然是块并垂直显示。 要改变这种行为,使用样式表(注意,在这两种情况下宽度,不最大宽度应设置):

#container { 
    height: 200px; 
    max-width: 600px; 
    border: 1px solid black; 
    margin: auto; 
    margin-top: 10px; 
} 
#item1 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid red; 
    display: inline-block; 
} 
#item2 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid blue; 
    display: inline-block; 
} 

或本:

#container { 
    height: 200px; 
    max-width: 600px; 
    border: 1px solid black; 
    margin: auto; 
    margin-top: 10px; 
} 
#item1 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid red; 
    float: left; 
} 
#item2 { 
    height: 100px; 
    width: 200px; 
    border: 1px solid blue; 
    float: left; 
} 
+0

当使用浮动它完美的作品。我只是好奇,为什么使用内联块时,每个div之间有一个小的差距? – Zzgooloo

+0

这是因为在div之间的html代码中的换行符。删除换行符,你会看到没有差距。 另外你可以使用负**余量左**。 你也可以找到几种方法来避免谷歌的这种差距。我不记得他们全部:-) –

+0

对,是的,我只是好奇它的原因,因为我没有设置利润。谢谢。 – Zzgooloo