card_01

  • カード型コンポーネント
  • 最大列数をSass変数で設定可能(4 or 3)
<div class="card_01--container">

  <a class="card_01" href="{{url}}">
    <figure class="card_01--image">
      <img src="{{image}}" alt="">
    </figure>
    <div class="card_01--body">
      <p class="card_01--sub">{{sub}}</p>
      <p class="card_01--text">
        {{text}}
      </p>
      <div class="card_01--btn_box">
        <span class="btn btn-s">{{label}}</span>
      </div>
    </div>
  </a>

  <a class="card_01" href="{{url}}">
    <figure class="card_01--image">
      <img src="{{image}}" alt="">
    </figure>
    <div class="card_01--body">
      <p class="card_01--sub">{{sub}}</p>
      <p class="card_01--text">
        {{text}}
      </p>
      <div class="card_01--btn_box">
        <span class="btn btn-s">{{label}}</span>
      </div>
    </div>
  </a>

  <a class="card_01" href="{{url}}">
    <figure class="card_01--image">
      <img src="{{image}}" alt="">
    </figure>
    <div class="card_01--body">
      <p class="card_01--sub">{{sub}}</p>
      <p class="card_01--text">
        {{text}}
      </p>
      <div class="card_01--btn_box">
        <span class="btn btn-s">{{label}}</span>
      </div>
    </div>
  </a>

  <a class="card_01" href="{{url}}">
    <figure class="card_01--image">
      <img src="{{image}}" alt="">
    </figure>
    <div class="card_01--body">
      <p class="card_01--sub">{{sub}}</p>
      <p class="card_01--text">
        {{text}}
      </p>
      <div class="card_01--btn_box">
        <span class="btn btn-s">{{label}}</span>
      </div>
    </div>
  </a>

</div>
{
  "url": null,
  "sub": "2021.00.00",
  "text": "カードサンプル",
  "image": "/assets/images/dummy_260_260.png",
  "label": "ボタン"
}
  • Content:
    // =====================================================================================
    //
    // card_01
    //
    // =====================================================================================
    
    @use 'sass:math';
    @use 'scss/global' as g;
    
    // -------------------------------------------------------------------------------------
    // 変数
    // -------------------------------------------------------------------------------------
    
    // 最大4列でレイアウトするか(0=PC3列、Tablet2列、SP1列 / 1=PC4列、Tablet3列、SP2列)
    $four_columns: 1;
    
    // カード単体のボーダースタイル(なしの場合はnoneに設定)
    $border: 1px solid g.$color_border;
    
    // カード間の余白
    $gutter_sp: math.div(16, g.strip_unit(g.$width_base_sp)) * 100%;
    $gutter_tablet: math.div(32, g.strip_unit(g.$width_base_tablet)) * 100%;
    $gutter_pc: math.div(40, g.strip_unit(g.$width_max)) * 100%;
    
    // -------------------------------------------------------------------------------------
    // コンテナ
    // -------------------------------------------------------------------------------------
    .card_01--container {
      @include g.holder();
    
      display: flex;
      flex-wrap: wrap;
    }
    
    // -------------------------------------------------------------------------------------
    // カード単体
    // -------------------------------------------------------------------------------------
    .card_01 {
      display: flex;
      flex-direction: column;
      background: #fff;
    
      @if $four_columns == 1 {
        @include g.mq(sp) {
          width: calc((100% - #{g.floor_decimal($gutter_sp)}) / 2);
          margin: 0 #{g.floor_decimal($gutter_sp)} #{g.floor_decimal($gutter_sp)} 0;
    
          &:nth-child(2n) {
            margin-right: 0;
          }
        }
    
        @include g.mq(tablet) {
          width: calc((100% - #{g.floor_decimal($gutter_tablet * 2)}) / 3);
          margin: 0 #{g.floor_decimal($gutter_tablet)} #{g.floor_decimal(
              $gutter_tablet
            )} 0;
    
          &:nth-child(3n) {
            margin-right: 0;
          }
        }
    
        @include g.mq(pc) {
          width: calc((100% - #{g.floor_decimal($gutter_pc * 3)}) / 4);
          margin: 0 #{g.floor_decimal($gutter_pc)} #{g.floor_decimal($gutter_pc)} 0;
    
          &:nth-child(4n) {
            margin-right: 0;
          }
        }
      } @else {
        @include g.mq(sp) {
          width: 100%;
          margin: 0 0 #{g.floor_decimal($gutter_sp)};
        }
    
        @include g.mq(tablet) {
          width: calc((100% - #{g.floor_decimal($gutter_tablet)}) / 2);
          margin: 0 #{g.floor_decimal($gutter_tablet)} #{g.floor_decimal(
              $gutter_tablet
            )} 0;
    
          &:nth-child(2n) {
            margin-right: 0;
          }
        }
    
        @include g.mq(pc) {
          width: calc((100% - #{g.floor_decimal($gutter_pc * 2)}) / 3);
          margin: 0 #{g.floor_decimal($gutter_pc)} #{g.floor_decimal($gutter_pc)} 0;
    
          &:nth-child(3n) {
            margin-right: 0;
          }
        }
      }
    }
    
    // -------------------------------------------------------------------------------------
    // 画像の外枠
    // -------------------------------------------------------------------------------------
    .card_01--image {
      img {
        display: block;
        width: 100%;
      }
    }
    
    // -------------------------------------------------------------------------------------
    // テキストの外枠(並列するカードに合わせて高さが可変する)
    // -------------------------------------------------------------------------------------
    .card_01--body {
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      padding: 16px 16px 24px;
      border: $border;
      border-top: none;
    }
    
    // -------------------------------------------------------------------------------------
    // サブ情報(投稿日時などが入る想定)
    // -------------------------------------------------------------------------------------
    .card_01--sub {
      margin: 0 0 8px;
      font-size: g.$font_size_s;
      color: #999;
    }
    
    // -------------------------------------------------------------------------------------
    // メイン情報(記事タイトルや説明文などが入る想定。並列するカードに合わせて高さが可変する)
    // -------------------------------------------------------------------------------------
    .card_01--text {
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      margin: 0 0 16px;
    }
    
    // -------------------------------------------------------------------------------------
    // ボタンの外枠
    // -------------------------------------------------------------------------------------
    .card_01--btn_box {
      text-align: center;
    }
    
  • URL: /components/raw/card_01/_card_01.scss
  • Filesystem Path: src/assets/_parts/components/card/card_01/_card_01.scss
  • Size: 4.5 KB