单个盒子居中
js实现
(浏览器宽高-盒子宽高)/2
css实现
- [x] 子元素不需知道宽高
- 不兼容IE的低版本浏览器
宽可父子元素可都设置%,但是父元素的高度必须是固定值
123456789101112131415/*父元素*/width:100%;height:500px;position : relative;/*子元素*/width:30%;height:30%;position: absolute;top: 0;left: 0;right: 0;bottom: 0;margin: auto;[x] 子元素需知道宽高
- 兼容所有的浏览器123456789position: absolute;top: 50%;left: 50%;margin: -100px 0 0 -100px;//盒子宽高都200// position: absolute;// bottom: 50%;// right: 50%;// margin: 0 -100px -100px 0; //盒子宽高都200
多个盒子
float+宽度百分比
关键点:
- [ ] 左右(前两个div)浮动(中间文档流)
- [ ] 最后一个div(center)不设宽度,但保证了左右接连
[ ] 左右可设固定宽度也可设百分比(中间都能自适应)
[x] div布局 注意: right是第二个div向右浮动的元素
1234567<div class="outer"><div class="inner"><div class="left">left</div><div class="right">right放到第二个浮动</div><div class="center">center</div></div></div>[x] css样式
[ ] 左浮动第一个div(left)
12float: left;width: 20%;
[ ] 右浮动第二个div(right)
12float: right;width: 30%;[ ] 中间定位:
1margin: 0 30% 0 20%;//分别距离左右的百分比距离,中间不能设宽度源码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364<!DOCTYPE html><html><head><meta charset="utf-8"><!-- <meta charset="utf-8"> --><title>宽度自适应布局</title><style>body,div {margin: 0;padding: 0;}.outer {height: 220px;padding:10px;border: 2px solid black;margin-left: 10%;margin-right: 10%;}.inner {height: 200px;padding:10px;border: 2px solid blue;}.left {height: 200px;border: 1px solid red;float: left;width: 20%;}.right {/*放到第二个*/height: 200px;border: 1px solid red;float: right;width: 30%;}.center {height: 200px;border: 3px solid green;margin: 0 30% 0 20%; //不能设宽度}</style></head><body><div class="outer"><div class="inner"><div class="left">left</div><div class="right">right放到第二个浮动</div><div class="center">center</div></div></div></body></html>
float+position ( 不好 )
关键点:
- [ ] 三个div都浮动(中间的是position)
- [ ] 中间一个div (center)必须设宽度%,左右不能接连
[ ] 左右不可设固定宽度
[x] div布局 注意: center是第二div(position)
1234567<div class="outer"><div class="inner"><div class="left">left</div><div class="center">center</div><div class="right">right</div></div></div>[x] css样式
[ ] 父元素inner 设置相对布局
1position: relative;[ ] 左浮动第一个div(left)
12float: left;width: 20%;[ ] 中间定位:必须设宽度,和绝对定位
123position: absolute; /*相当于也脱离文档流*/width:50%; /*必须定宽度,但是不能忽略边框*/margin-left:20%;[ ] 右浮动第二个div(right)
12float: right;width: 25%;
源码