align-item

by Mo Qiao

HTML

<h2><span>flex-start</span><span>flex-end</span></h2>
<div class="wrap">
  <div class="container flex-start">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
  </div>
  <div class="container flex-end">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
  </div>
</div>
<h2><span>center</span><span>base-line(跟首行文字基准线对其)</span></h2>
<div class="wrap">
  <div class="container center">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
  </div>
  <div class="container baseline">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
  </div>
</div>
<h2>stretch(子元素未设置高度时,会跟父级同高)</h2>
<div class="wrap">
  <div class="container stretch">
    <div class="item">item1</div>
    <div class="item">item2</div>
    <div class="item">item3</div>
  </div>
</div>

SCSS

h2 {
  display: flex;
  justify-content: space-between;
  span {
    width: 50%;
  }
}

.wrap {
  display: flex;
  flex-wrap: wrap;
}

.container {
  box-sizing: border-box;
  display: flex;
  width: 50%;
  background: #FFF;
  height: 200px;
  &:nth-child(odd) {
    border-right: 1px solid #000;
  }
}

.item {
  padding: 14px;
  background: #F384B6;
  &:nth-child(0) {
    height: 50px;
  }
  &:nth-child(1) {
    height: 100px;
  }
  &:nth-child(2) {
    height: 150px;
  }
}

@each $value in flex-start,
flex-end,
center,
baseline,
stretch {
  .#{$value} {
    align-items: #{$value};
  }
}

.baseline .item {
  &:nth-child(1) {
    font-size: 40px;
  }
  &:nth-child(2) {
    font-size: 13px;
  }
  &:nth-child(3) {
    font-size: 23px;
  }
}

.stretch .item {
  height: auto;
}