<div class="father">
<!-- 左右div不能调换顺序来写 -->
<div class="left">固定宽度区</div>
<div class="right">自适应区</div>
</div>
一、利用左侧浮动float+右侧margin-left
/* 利用浮动float+margin-left(左侧宽度需固定)*/
/* 左边元素宽度固定(加入设置为300px)向左浮动 */
/* 右边元素margin-left设置为100px,宽度不用设置 */
.father{
height: 300px;
}
.left{
width: 300px;
height: 300px;
background-color: pink;
float:left; /*左侧设置浮动float*/
}
.right{
margin-left: 300px; /*右侧设置左边距margin-left等于左边盒子的宽度*/
height: 300px;
background-color: blue;
}
二、利用左侧浮动float+右侧BFC
/* 利用浮动+BFC */
/* 左边元素宽度固定(假如设置为300px),向左浮动 */
/* 右边元素设置overflow:hidden; */
.father {
height: 300px;
}
.left {
float: left; /*左浮动,固定宽度*/
width: 300px;
height: 300px;
background-color: pink;
}
.right {
overflow:hidden; /*设置 overflow:hidden触发BFC*/
height: 300px;
background-color: blue;
}
三、利用flex布局
/* 利用flex布局 */
/* 父元素设置flex布局 */
/* 左边元素宽度固定 */
/* 右边元素设置flex:1 */
.father {
display:flex; /* 父元素设置flex布局 */
height:300px;
}
.left {
width: 300px;
background-color: pink;
}
.right {
flex:1; /* 右边元素设置flex:1 */
background-color: blue;
}
四、利用grid布局
/* 利用grid布局 */
/* 父元素设置 display:gird; 属性、设置gird-template-columns:300px 1fr 属性*/
/* 表示第一列宽度始终为300px 第二列的宽度自适应 */
.father {
display:grid; /*父元素设置 display:gird; */
height:300px;
grid-template-columns: 300px 1fr; /* 设置gird-template-columns:300px 1fr */
}
.left {
background-color: pink;
}
.right {
background-color: blue;
}
五、利用定位
/* 利用绝对定位 */
/* 父级设置为相对定位,子级设置为绝对定位 */
/* 左边子元素设置left为0,宽度300,右边子元素right设置为0 */
.father {
position: relative; /* 父级设置为相对定位 */
}
.left {
position: absolute; /* 子级设置为绝对定位 */
width: 300px;
height: 300px;
left: 0; /* 左边子元素设置left为0*/
background-color: pink;
}
.right {
position: absolute; /* 子级设置为绝对定位 */
left: 300px;
right: 0; /* 右边子元素right设置为0*/
height: 300px;
background-color: blue;
}
实现效果: