「青训营 X 码上掘金」主题创作活动——我的名片

160 阅读3分钟

当青训营遇上码上掘金

我正在参加「青训营 X 码上掘金」主题创作活动入营版:juejin.cn/post/718775…

主题选择

我选择的是主题一《名片制作》,在各种社交平台上标识我们每一个人的身份的就是我们的个人名片(bussiness card),一个有趣的名片能让人眼前一亮,心生好奇与憧憬,那就让我们来制作一个简洁大方的名片吧

创作过程

参考了codePen上的代码片段:codepen.io/lauraalpint… 名片是有正反面的,我们需要实现一个鼠标移动上去卡片翻转到反面的效果,首先我们先设计卡片的正面(front)

  • 正面卡片

首先在正面卡片标签中放入一个内容cont的div标签,然后用span标签书写alert 和 hello wordl的内容

div class="card__side card__side--front">
     <div class="card__cont">
       <span class="blue">alert</span>
       <span>(<span class="green">'Hello World!'</span>)</span>
     </div>
   </div>

设定背景颜色

&--front {
      background-color: #1c1c1c;
    }
  • 背面卡片

内容结构是一样的,加入了名称、邮件地址和职位与个人网站的字段。

<div class="card__side card__side--back">
      <!-- Back Content -->
      <div class="card__cta">
        <p><span class="purple">const</span> aboutMe <span class="cyan">=</span> {
          <br />
          <span class="space red">name</span>
          <span class="cyan">:</span> <span class="green">'julien'</span>,
          <br/>
          <span class="space red">email</span>
          <span class="cyan">:</span> <span class="green">'sehjli@mail.scut.edu.cn</span>',
          <br/>
          <span class="space red">position</span>
          <span class="cyan">:</span>
          <span class="green">'front-end developer'</span>,
          <br/>
          <span class="space red">website</span><span class="cyan">:</span> <span class="green">'https://github.com/julien0220'</span>
          <br/> 
          };
        </p>
      </div>

背面背景颜色一样保持黑色,添加transform属性

&--back {
      transform: rotateY(180deg);

      background-color: #1c1c1c;
    }
  • 翻转效果

翻转效果的实现主要是添加css的样式,鼠标停留时判断当前状态并进行对应的旋转,只需分别写上side--front和side--back的属性

  &:hover &__side--front {
    transform: rotateY(-180deg);
  }

  &:hover &__side--back {
    transform: rotateY(0deg);
  }
  • 文字颜色与布局

这部分的内容相对简单,在css中编写font-family与使用的几种颜色

* {
  font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console",
    "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono",
    "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier,
    monospace;
}

$blue: #29b6f6;
$green: #9ccc65;
$purple: #ba68c8;
$orange: #f57c00;
$red: #ef5350;
$cyan: #4dd0e1;
$background-light: #ffa726;
$background-dark: #ff9800;

crad的样式

 height: 15rem;
    transition: all 0.8s ease;

    position: absolute;
    top: 0;
    left: 0;
    margin: auto;
    width: 30rem;

    backface-visibility: hidden;
    border-radius: 3px;
    overflow: hidden;
    box-shadow: 0 1.5rem 4rem rgba(black, 0.4);

成果展示

image.png

image.png

image.png

完整代码

<div class="content">
  <div class="card">
    <div class="card__side card__side--front">
      <!-- Front Content -->
      <div class="card__cont">
        <span class="blue">alert</span>
        <span>(<span class="green">'Hello World!'</span>)</span>
      </div>
    </div>
    <div class="card__side card__side--back">
      <!-- Back Content -->
      <div class="card__cta">
        <p><span class="purple">const</span> aboutMe <span class="cyan">=</span> {
          <br />
          <span class="space red">name</span>
          <span class="cyan">:</span> <span class="green">'julien'</span>,
          <br/>
          <span class="space red">email</span>
          <span class="cyan">:</span> <span class="green">'sehjli@mail.scut.edu.cn</span>',
          <br/>
          <span class="space red">position</span>
          <span class="cyan">:</span>
          <span class="green">'front-end developer'</span>,
          <br/>
          <span class="space red">website</span><span class="cyan">:</span> <span class="green">'https://github.com/julien0220'</span>
          <br/> 
          };
        </p>
      </div>
    </div>
  </div>

scss

* {
  font-family: Consolas, "Andale Mono WT", "Andale Mono", "Lucida Console",
    "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono",
    "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier,
    monospace;
}

$blue: #29b6f6;
$green: #9ccc65;
$purple: #ba68c8;
$orange: #f57c00;
$red: #ef5350;
$cyan: #4dd0e1;
$background-light: #ffa726;
$background-dark: #ff9800;

body {
  background-image: linear-gradient(
    to bottom right,
    $background-dark,
    $background-light
  );
}

@mixin text-color($color) {
  color: $color;
}

.blue {
  @include text-color($blue);
}

.green {
  @include text-color($green);
}

.purple {
  @include text-color($purple);
}

.cyan {
  @include text-color($cyan);
}

.red {
  @include text-color($red);
}

.content {
  height: 100vh;
  @include text-color(white);

  display: flex;
  justify-content: center;
  align-items: center;
}

.card {
  //FUNCTIONALITY
  perspective: 150rem;
  height: 20rem;
  width: 30rem;

  position: relative;

  &__side {
    height: 15rem;
    transition: all 0.8s ease;

    position: absolute;
    top: 0;
    left: 0;
    margin: auto;
    width: 30rem;

    backface-visibility: hidden;
    border-radius: 3px;
    overflow: hidden;
    box-shadow: 0 1.5rem 4rem rgba(black, 0.4);

    &--front {
      background-color: #1c1c1c;
    }

    &--back {
      transform: rotateY(180deg);

      background-color: #1c1c1c;
    }
  }

  &:hover &__side--front {
    transform: rotateY(-180deg);
  }

  &:hover &__side--back {
    transform: rotateY(0deg);
  }

  //FRONT SIDE STYLING
  &__cont {
    height: 15rem;
    background-color: #1c1c1c;

    display: flex;
    align-items: center;
    justify-content: center;
  }

  &__cta {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
    @include text-color(white);

    p {
      margin-left: 1rem;

      & > .space {
        margin-left: 2rem;
      }
    }
  }
}

感悟

通过这次“码上掘金”的活动,锻炼到了自己的动手能力,在实际开发中学到了很多东西,也发现了自己的不足之处。实践出真知,一些东西只有你真正去做,去动手,才能真正掌握。最后呢,希望自己在这届青训营里能够充分锻炼自己,收获到更多的coding经验,学到更多知识,加油!