学习体会:
1. 浮动 float
元素的浮动会对文档流后面的元素带来影响;当一个元素浮动后,这个一个元素就像飘起来了一样,后面的一个元素会跑到此元素的下面了;后面元素不想受前面元素影响就需要相应的清除这些浮动影响(clear : left / clear : right /clear : both)
子元素浮动后,它的上一级父元素(不设高度值时)就像里面没了东西一样会收缩起来。想要变回原来的样子:
调整父元素的高度值,如果一级级的浮动,需一级级的调整(不合适)
将父元素也浮动起来,和上面一样,也需一级级调整(不合适)
在子元素后面添加一个元素,设置清除浮动clear:both,但不利于后端数据处理与页面渲染(不合适)
在父元素上设置 overflow : hidden 解决问题,so easy !!! 强列推荐!!!
2. 相对定位 position : relative
元素仍在文档流中,只是相对于自己原来的位置进行相对的偏移,通过 left 与 top 的值进行移动
正数值: 代表在左侧 (left)留出数值的空间,元素将右移;
代表在顶部(top)留出数值的空间,元素将下移;
负数值:与上面的正数值相反,元素将向左移和向上移;
3. 绝对定位 postion: absolute
元素将脱离文档流,以相对离它最近的且具有定位属性(什么属性无所谓,但要有)的父级元素进行定位。
子元素采用绝对定位模式,就是以父级元素为做标原点,横轴为left(正值往右),纵轴为top(正值向下),给出子元素的做标(left, top)进行定位。

4. 三列布局
设一个容器,将头部(header)区域--主体(main)区--底部(footer)区包起来
三列的设计:main区划分为三列:left,content,right
4.1 绝对定位实现方法
设置left与right的列宽和最小高度,content设置最小高度与left ,right相同
父元素main设置定位属性position : relative | absolute都可以
left元素设置为absolute定位,坐标(left : 0,top : 0)将left元素放在左侧
right元素设置为absolute定位,坐标(right : 0,top : 0)将right元素放在右侧
left,right元素采用绝对定位后脱离文档流,content元素将向上移动与left,right元素在同一高度, 通过使用content元素的margin属性将内容区content挤出来,margin-left的值应大于left元素的列宽,margin-right的值应大于right元素的列宽。
.container{
width: 1000px;
margin: 0 auto;
}
/*群组选择器,头部和底部共用样式*/
.header, .footer{
height: 60px;
background-color: lightgray;
}
/*主体区*/
.main{
/*min-height: 800px;*/
background-color: lightblue;
margin: 5px auto;
}
/*主体左侧区*/
.left{
width: 200px;
/*设置最小高度,可以确保在没有内容的情况下,仍能显示出高度来*/
min-height: 800px;
background-color: lightseagreen;
}
/*主体内容区*/
.content{
/*内容区宽度自适应*/
min-height: 800px;
background-color: lightyellow;
}
/*主体右侧区*/
.right{
width: 200px;
min-height: 800px;
background-color: lightsalmon;
}
/*绝对定位*/
/*定位父级,相对定位*/
.main{
/*给父级定位属性(相对定位或绝对定位都可以)*/
position: relative;
}
/*参照父级绝对定位左侧区块*/
.left{
position: absolute;
left: 0;
top: 0;
}
/*参照父级绝对定位右侧区*/
.right{
position: absolute;
right: 0;
top: 0;
}
/*使用margin挤出内容区*/
.content{
/*将左侧区的宽度(200px+10px空白)留出*/
margin-left: 210px;
/*将右侧区的宽度(200px+10px空白)留出*/
margin-right: 210px;
}点击 "运行实例" 按钮查看在线实例
4.2 通过元素浮动实现
将left元素向左浮动
将right元素向右浮动
将content元素向左浮动,并计算宽度值为不大于"容器container宽度(总宽度)- left宽度 - right宽度"
最后需将父元素main设置overflow : hidden属性
.container{
width: 1000px;
margin: 0 auto;
}
/*头部与底部共用样式*/
.header, .footer{
height: 60px;
background-color: lightgray;
}
/*主体*/
.main{
/*min-height: 800px;*/
background-color: lightgray;
margin: 5px auto;
overflow: hidden;
}
/*主体左侧区*/
.left{
width: 200px;
/*设置最小高度,可以确保在没有内容的情况下,仍能显示出高度来*/
min-height: 800px;
background-color: lightseagreen;
}
/*主体内容区*/
.content{
/*内容区宽度自适应*/
min-height: 800px;
background-color: lightyellow;
}
/*主体右侧区*/
.right{
width: 200px;
min-height: 800px;
background-color: lightcoral;
}
/*方案2:浮动*/
/*子元素浮动后脱离了水平文档流,
父元素无法包裹住子元素,需设置父元素的overflow:hidden属性*/
.left {
float: left;
/*通过margin-right在左侧区与内容区之间留出间隔*/
margin-right: 10px;
}
.right {
float: right;
}
.content {
float: left;
/*调整内容区宽度到适合值*/
width: 580px;
/*通过margin-right在内容区与右侧区之间留出间隔*/
margin-right: 10px;
}点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号