这篇文章,咱们来整理一下 CSS 布局相关内容css
布局是把页面分红一块一块,按左中右、上中下等排列。浏览器
注意: 使用 float 布局 和 flex 布局时,必要时采用负 margin 。ide
float: left
和 width
.clearfix
.clearfix{
content: '';
display:block;
clear: both;
}
复制代码
使用 float 布局,通常会留一些空间或者最后一个不设 width。布局
注意: IE 6/7 存在双倍 margin 的bug,经过以下办法解决flex
display: inline-block
tips:优化
margin: 0 auto;
能够设置居中。能够优化为 margin-left: auto; margin-right: auto;
。若是是一个块级元素,左右外边距 auto 能够直接让元素居中关于 flex 布局,咱们经过两部分样式来介绍ui
.container{/* 让元素变成一个 flex 容器 */
display: flex | inline-block;
}
复制代码
.container{/* 改变 item 流动方向(主轴),默认 row */
flex-direction: row | row-reverse | column | column-reverse;
}
复制代码
.container{/* 改变折行,默认 nowrap 。折行不会把元素断开 */
flex-wrap: nowrap | wrap | wrap-reverse;
}
复制代码
.container{/* 主轴对齐方式,默认 flex-start */
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
}
复制代码
.container{/* 次轴对齐方式,默认 stretch ,子元素拉到最长的元素同样高 */
align-items: stretch | flex-start | flex-end | center | baseline;
}
复制代码
.container{/*多行内容,决定了行之间的间隔*/
align-content: flex-start | flex-end | center | stretch | space-between | space-around;
}
复制代码
补充:flex-flow 能够合并 flex-direction 和 flex-wrap 使用spa
flex-grow: 1
,宽度剩余全给导航栏flex-shrink: 0
防止变瘦,默认是 1flex: flex-grow flex-shrink flex-basis
items 设置 margin-left: auto
,效果和 justify-content: space-between
同样,可使 items 靠右,推荐使用 margin-leftcode
注意:永远不要把高度和宽度写死ip
Grid 也分为 container 和 items
.container{
display: grid | inline-grid;
}
复制代码
.container{/*行和列*/
grid-template-columns: 40px 50px auto 50px 40px;
gird-template-rows: 25% 100px auto;
}
复制代码
.container{/*等比分布局*/
grid-template-columns: 1fr 1fr 1fr;
}
复制代码
.container{/*固定一块布局列宽,其他等比分配剩余宽度*/
grid-template-columns: 1fr 50px 1fr 1fr;
}
复制代码
.container{/*还能够给每条线设置名字*/
grid-template-columns:[first] 40px [line2] 50px [line3] auto [col4-start] 50px [five] 40px [end];
grid-template-rows:[row1-start] 25% [row1-end] 100px [third-line] auto [last-line];
}
复制代码
.item-a{/*针对上述设置,item能够设置范围*/
grid-column-start: line2;
grid-column-end: five;
grid-row-start: row1-start;
}
复制代码
经过 grid-template-areas
设置分区
.container{
display: grid;
grid-template-columns: repeat(4, 50);/*重复设置*/
gird-template-rows: auto;
grid-template-areas:
"header header header header"
"main main sider"
". footer footer footer";/*不但愿出现内容的区域,一般用 . 命名*/
}
.item-a{
grid-area: header;
}
.item-b{
grid-area: main;
}
.item-c{
grid-area: sider;
}
复制代码
空隙 gap
.container{
grid-template-columns: 100px 50px 100px;
grid-template-rows: 80px auto 80px;
grid-column-gap: 10px;
grid-row-gap: 15px;
}
复制代码
结语:一维布局选 Flex ,二维布局选Grid,Grid 尤为适合不规则的布局。