首先,我们都知道div是块级元素,是独占一行的,所以在一般情况下,两个相邻的div是不会处于一行的,我先举个例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.one{
width: 200px;
height: 100px;
background: red;
}
.two{
width:150px;
height: 220px;
background: green;
}
</style>
</head>
<body>
<div class="one">第一个</div>
<div class="two">第二个</div>
</body>
</html>
效果为:
![](https://img.haomeiwen.com/i15250669/533c83f408bcc420.png)
所以我们如何让相邻的div处在同一行呢?
1.使用float:
float 属性:定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
- left 元素向左浮动。
- right 元素向右浮动。
- none 默认值。元素不浮动,并会显示在其在文本中出现的位置。
- inherit 规定应该从父元素继承 float 属性的值。
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.one{
width: 200px;
height: 100px;
background: red;
}
.two{
width:150px;
height: 220px;
background: green;
}
div{
float: left; /*添加了左浮动*/
}
</style>
</head>
<body>
<div class="one">第一个</div>
<div class="two">第二个</div>
</body>
</html>
效果如下:
![](https://img.haomeiwen.com/i15250669/19d582d6b151baf5.png)
2.使用display:inline-block
display 属性规定元素应该生成的框的类型。
说明: 这个属性用于定义建立布局时元素生成的显示框类型。对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定义的显示层次结构。对于 XML,由于 XML 没有内置的这种层次结构,所有 display 是绝对必要的。
- none 此元素不会被显示。
- block 此元素将显示为块级元素,此元素前后会带有换行符。
- inline 默认。此元素会被显示为内联元素,元素前后没有换行符。
- inline-block 行内块元素。
例子:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.one{
width: 200px;
height: 100px;
background: red;
}
.two{
width:150px;
height: 220px;
background: green;
}
div{
display: inline-block;
}
</style>
</head>
<body>
<div class="one">第一个</div>
<div class="two">第二个</div>
</body>
</html>
效果如下:
![](https://img.haomeiwen.com/i15250669/3b18da56158fd83a.png)
为什么两个的效果不同呢,我们可以看看第二种方法的盒子模型:
![](https://img.haomeiwen.com/i15250669/509b65e6dd90118b.png)
为什么第二个div中会有大小为8px的margin,这是从哪里来的呢?
其实是从body继承过来的.
网友评论