<a class="card-18" href="#">
    <div class="card-18__text">
        <div class="card-18__num">01</div>
        <div class="card-18__title"><span>タイトルが入ります</span></div>
        <div class="card-18__title-en"><span>English title</span></div>
    </div>
    <div class="card-18__img"><img src="https://picsum.photos/id/1000/600/200" /></div>
</a>
a.card-18(href=link)
  .card-18__text
    .card-18__num #{ num }
    .card-18__title
      span #{ title }
    .card-18__title-en
      span #{ titleEn }
  .card-18__img
    img(src=img)
{
  "link": "#",
  "num": "01",
  "title": "タイトルが入ります",
  "titleEn": "English title",
  "img": "https://picsum.photos/id/1000/600/200"
}
  • Content:
    $BLOCK_NAME: '.card-18';
    
    // 変数
    $color_primary: #1a2e45;
    $color_white: #fff;
    $easing_default: cubic-bezier(0.075, 0.82, 0.165, 1);
    
    #{ $BLOCK_NAME } {
      position: relative;
      display: block;
    
      &__text {
        position: relative;
        z-index: 1;
        padding: 32px 0;
        font-family: '游ゴシック', YuGothic, sans-serif;
        color: $color_primary;
      }
    
      &__num {
        font-family: 'Oswald', sans-serif;
        font-size: 74px;
        font-weight: 700;
      }
    
      &__title {
        margin-top: 24px;
        & > span {
          position: relative;
          display: inline-block;
          padding-right: 30px;
          overflow: hidden;
          font-size: 26px;
          font-weight: bold;
          line-height: 34px;
          letter-spacing: 0.2em;
          background: $color_white;
          &::after {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            z-index: 1;
            content: '';
            background: $color_primary;
            transform: scaleX(0);
            @at-root #{ $BLOCK_NAME }:hover & {
              animation: card18TextMaskIn 0.3s $easing_default forwards alternate,
                card18TextMaskOut 0.4s $easing_default 0.5s forwards alternate;
            }
          }
        }
      }
    
      &__title-en {
        margin-top: 4px;
        & > span {
          position: relative;
          display: inline-block;
          padding-right: 30px;
          overflow: hidden;
          font-size: 18px;
          line-height: 24px;
          letter-spacing: 0.26em;
          background: $color_white;
          &::after {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            left: 0;
            z-index: 1;
            content: '';
            background: $color_primary;
            transform: scaleX(0);
            @at-root #{ $BLOCK_NAME }:hover & {
              animation: card18TextMaskIn 0.3s $easing_default 0.1s forwards
                  alternate,
                card18TextMaskOut 0.4s $easing_default 0.5s forwards alternate;
            }
          }
        }
      }
    
      &__img {
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 200px;
        & > img {
          width: 100%;
          height: 100%;
          object-fit: cover;
          object-position: center;
        }
      }
    }
    
    @keyframes card18TextMaskIn {
      0% {
        transform: scaleX(0);
        transform-origin: top left;
      }
      100% {
        transform: scaleX(1);
        transform-origin: top left;
      }
    }
    
    @keyframes card18TextMaskOut {
      0% {
        transform: scaleX(1);
        transform-origin: top right;
      }
      100% {
        transform: scaleX(0);
        transform-origin: top right;
      }
    }
    
  • URL: /components/raw/card18/card18.scss
  • Filesystem Path: src/components/cards/1_20/card18/card18.scss
  • Size: 2.5 KB