DEMOs

导航页

Holy Grail Layout

header, footer和left, right是两个不同主轴方向的flex布局的两端固定大小item,body和center通过flex: 1;实现剩余部分填充

.dice {
  @include flexbox(row, wrap, flex-start, flex-start);

  align-content: flex-start;

  .box {
    flex: 0 0 auto;
    width: torem(120px);
    height: torem(120px);
    border: 1px solid color(black);
    margin: torem(5px);
    box-sizing: content-box;
    display: flex;

    .item {
      flex: 0 0 auto;
      width: torem(36px);
      height: torem(36px);
      background-color: color(black);
      border-radius: 100%;
      margin: torem(2px);
    }
  }
}

.dice--single {
  .top-left {
    justify-content: flex-start;
  }

  .top-center {
    justify-content: center;
  }

  .top-right {
    justify-content: flex-end;
  }

  .mid-left {
    align-items: center;
  }

  .mid-center {
    justify-content: center;
    align-items: center;
  }

  .bottom-right {
    justify-content: flex-end;
    align-items: flex-end;
  }
}

.dice--double {
  .d-top {
    justify-content: space-between;
  }

  .d-left {
    flex-direction: column;
    justify-content: space-between;
  }

  .d-center {
    flex-direction: column;
    justify-content: space-between;
    align-items: center;
  }

  .d-right {
    flex-direction: column;
    justify-content: space-between;
    align-items: flex-end;
  }

  .d-cross {
    .item:nth-child(2) {
      align-self: center;
    }
  }

  .d-cross-big {
    justify-content: space-between;

    .item:nth-child(2) {
      align-self: flex-end;
    }
  }
}

.dice--multi {
  .m-cross {
    .item { // stylelint-disable-line no-descending-specificity
      &:nth-child(2) {
        align-self: center;
      }

      &:nth-child(3) {
        align-self: flex-end;
      }
    }
  }

  .m-quarter {
    flex-wrap: wrap;
    justify-content: flex-end;
    align-content: space-between;
  }

  .m-quarter-b {
    flex-wrap: wrap;
    align-content: space-between;

    .row {
      flex-basis: 100%;
      display: flex;
      justify-content: space-between;
    }
  }

  .m-six-a {
    flex-wrap: wrap;
    align-content: space-between;
  }

  .m-six-b {
    flex-flow: column wrap;
    align-content: space-between;
  }

  .m-six-c {
    flex-wrap: wrap;

    .row {
      flex-basis: 100%;
      display: flex;

      &:nth-child(2) {
        justify-content: center;
      }

      &:nth-child(3) {
        justify-content: space-between;
      }
    }
  }
}

#holy-grail-layout {
  width: 100%;
  height: torem(500px);
  display: flex;
  flex-flow: column nowrap;

  .header,
  .footer {
    flex: 0 0 torem(50px);
    background-color: color(green);
  }

  .body {
    flex: 1;
    display: flex;

    .center {
      flex: 1;
      background-color: color(blue);
    }

    .left,
    .right {
      flex: 0 0 torem(120px);
      background-color: color(gray);
    }

    .left {
      order: -1;
    }
  }
}