1.float
1.1脱离文档流
1.2挤压(向左向上)
1.3清除浮动
.clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
content: "";
display: block;
height: 0;
clear:both;
visibility: hidden;
}
.clearfix{
*zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
}
2.flex
2.1父元素定义好布局方式为flex
.box{
display:-webkit-flex;
display:flex;
}
2.2 6个属性设置在容器上。
- flex-direction
- flex-wrap
- flex-flow
- justify-content
- align-items
- align-content
flex-direction属性决定主轴的方向(即项目的排列方向)。
flex-wrap 是否换行
flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认 row nowrap
justify-content属性定义了项目在主轴上的对齐方式
align-items属性定义项目在交叉轴上如何对齐
align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用
.box{
flex-direction:row | row-reverse | column | column-reverse;
flex-wrap: nowrap | wrap | wrap-reverse;
justify-content:flex-start | flex-end | center | space-between |space-around;
align-items:flex-start | flex-end | center |baseline | stretch;
.box{
align-content:flex-start | flex-end | center | spance-between | space-around |stretch;
}
}
2.3 6个属性设置在项目上。
- order
- flex-grow
- flex-shrink
- flex-basis
- flex
- align-self
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0.
flex-grow属性定义项目的放大比例,默认值为0,即如果存在剩余空间,也不放大。
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,改项目将缩小。
flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小
flex属性是flex-grow,flex-shrink和flex-basis的简写,默认值为0 1 auto。后面两个属性可选
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,等同于stretch
.item{
order:<integer>;
flex-grow:<number>;/* default 0*/
flex-shrink:<number>;/* default 1 */
flex-basis:<length> | auto ; /*default auto*/
flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
3.grid
3.1 容器属性
.wrapper{
width:450px;
background: #f3f3f3;
text-align:center;
display: grid;
grid-template-rows: 150px 150px 150px
grid-template-columns: 1fr 1fr 1fr;//比例关系
//或者repeat(3, 33.33%);也是ok的
// grid-template-columns: repeat(auto-fill, 100px) 自动填充
//minmax(100px,1fr) 最大最小范围
//行间距
grid-row-gap: 10px;
grid-column-gap: 10px;
grid-auto-flow:colunm;
//justify-items属性设置单元格内容的水平位置,align-items设置单元格内容的垂直位置
justify-items: start | end | center | stretch;
align-items: start | end | center | stretch;
//合并写法
place-items: start end;
//justify-content属性是整个内容区域在容器里面的水平位置,align-content属性是整个内容区域在容器里面的垂直位置
justify-content: start | end | center | stretch | space-around | space-between | space-evenly;
align-content: start | end | center | stretch | space-around | space-between | space-evenly;
}
.item:nth-of-type(3){//这个是子项属性
background:#a0a0ff;
}
3.2 子项属性
grid-column-start属性:左边框所在的垂直网格线
grid-column-end属性:右边框所在的垂直网格线
grid-row-start属性:上边框所在的水平网格线
grid-row-end属性:下边框所在的水平网格线
.item-1 {
grid-column-start: 2;
grid-column-end: 4;
}
.item-1 {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 2;
grid-row-end: 4;
}
.item-1 {
grid-column-start: span 2;//占据位置
}
.item-1 {//合并写法
grid-column: 1 / 3;
grid-row: 1 / 2;
}
/* 等同于 */
.item-1 {
grid-column-start: 1;
grid-column-end: 3;
grid-row-start: 1;
grid-row-end: 2;
}