网页布局

154 阅读2分钟

1. float布局

float CSS属性指定一个元素应沿其容器的左侧或右侧放置,允许文本和内联元素环绕它。该元素从网页的正常流动(文档流)中移除,尽管仍然保持部分的流动性(与绝对定位相反)。 —— MDN

步骤

  • 子元素上加float:width
  • 父元素上加.chearfix
.clearfix::after{
  content: '';
  display: block;
  clear: both;
 }

注意:IE6/7存在双倍margin bug,有两种解决办法

  1. 针对 IE6/7 把margin减半;
  2. 加一个display: inline-block;

2. flex布局

采用 Flex 布局的元素,称为 Flex 容器(flex container),简称"容器"。它的所有子元素自动成为容器成员,称为 Flex 项目(flex item),简称"项目"。

flex container的样式

  • 让一个元素变成flex容器
.container {
  display: flex; /* or inline-flex */
}
  • 改变items流动方向(主轴)
.container {
  flex-direction: row | row-reverse | column | column-reverse;
}
  • 改变折行
.container{
  flex-wrap: nowrap | wrap | wrap-reverse;
}
  • 主轴对齐方式 默认主轴是横轴,除非你改变了flex-direction方向
.container {
  justify-content: flex-start | flex-end;
}

  • 次轴对齐 默认次轴是纵轴
.container {
  align-items: stretch | flex-start;
}

  • 多行任务
.container {
  align-content: flex-start | flex-end;
}

flex item的样式

  • order属性:子容器排列顺序
.item {
  order: 0; /* default 0 */
}

  • flex-grow属性:扩展比例
.item {
  flex-grow: 0; /* default 0 */
}

  • flex-shrink属性:收缩比例
.item {
  flex-shrink: 0; /* default 1 */
}

防止缩小

  • flex-basis属性:控制基准宽度。
.item {
  flex-basis: auto; /* default auto */
}
  • flex属性
.item {
  flex: flex-grow flex-shrink flex-basis;
}

缩写,空格隔开

  • align-self属性 align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch
.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

注意:多用 min-width / max-width / min-height / max-height,不要把 width 和 height 写死。

3. grid布局

二维布局用grid,一维布局用flex。

grid也分 container 和 items

  • 成为container
.container {
  display: grid | inline-grid;
}
  • 成为行和列
  • 还可以给每条线取名 结果如下:
  • item可以设置范围
.item-a {
  grid-column-start: 2;
  grid-column-end: five;
  grid-row-start: row1-start;
  grid-row-end: 3;
}
  • fr-free space
.container {
  grid-template-columns: 1fr 1fr 1fr;
}

平均分成三份。

其余属性先不说了。