实现 “块标签横向(同一行)显示” 的四种方法
- 浮动(float:left)
- 绝对定位(position:absolute /fixed)
- 弹性布局(dispaly: flex)
- inline-block布局(display:inline-block)
—(>人<;)——个人总结,若有不当或错误,请留言批评指正。
先看下未实现前的简单例子:
<head>
<style>
body {
margin: 0;
padding: 0;
}
.I {
width: 500px;
height: 400px;
background-color: black;
}
.II {
width: 200px;
height: 200px;
background-color: pink;
}
.III {
width: 200px;
height: 200px;
background-color: yellow;
}
</style>
</head>
<body>
<div class="I">
<div class="II"></div>
<div class="III"></div>
</div>
</body>
效果图:
方法一: 浮动(子元素都加上float:left)
缺点:
- 父元素高度坍塌,需清除浮动(父元素加上overflow:hidden)
- 子元素间没有间距(子元素加上margin-right:数值px)
代码:
.II {
float: left; //补充上
}
.III {
float: left; //补充上
}
效果图:
方法二: 绝对定位(变动的子元素加上position:absolute /fixed)
代码:
.III {
position: absolute; //补充上
top: 0;
left: 200px;
}
效果图:
方法三: 弹性布局(父元素加上dispaly: flex)
缺点:
子元素的float、clear和vertical-align属性将失效
优点:
可实现子元素等距分隔 【六大属性了解下】
代码1:
.I {
display:flex; //补充上
}
效果图1:
代码2:
.I {
display:flex;
justify-content: space-between; // 补充上。实现等距分隔
}
效果图2:
方法四: inline-block布局(子元素都加上display:inline-block)
优点:
子元素间自带间距(4px,可通过添加font-size:0解决)
代码:
.II {
display: inline-block; //补充上
}
.III {
display: inline-block; //补充上
}
题外话:
display:flex 与 position:absolute/fixed 共存冲突
解决方式:给外层盒子设置宽度,width:100%
💨