波奇酱的名片|「青训营 X 码上掘金」主题创作

3,590 阅读2分钟

当青训营遇上码上掘金。

前言

波奇-正面.jpg

最近沉迷《孤独摇滚!》,主人公后藤一里是个社交恐惧症患者,但其实在另一面她是吉他技术超群的“Guitar Hero”。刚好这次「青训营 X 码上掘金」主题创作活动的其中一个主题就是“我的名片”。每个人应该都有自己的理想与现实的正反两面,于是我想做一个卡片点击翻转的效果。原理很简单,经典的登陆注册卡片翻转的实现也类似。

《孤独摇滚!》简介如下。

作为网络吉他手“Guitar Hero”而广受好评的后藤一里,在现实中却是个什么都不会的沟通障碍者。一里有着组建乐队的梦想,但因为不敢向人主动搭话而一直没有成功,直到一天在公园中被伊地知虹夏发现并邀请进入缺少吉他手的“结束乐队”。可是,完全没有和他人合作经历的一里,在人前完全发挥不出原本的实力。为了努力克服沟通障碍,一里与“结束乐队”的成员们一同开始努力……(摘自萌娘百科

主题:我的名片

名片是向人介绍自我的重要工具,作为一名程序员用代码做自我介绍是一件非常酷炫的事情。请大家围绕“我的名片”这个主题进行代码创作。

演示

点击头像即可将卡片翻转。

思路

  • 单独写两个盒子(卡片反面和卡片正面),使用绝对定位将两个盒子重叠。卡片正面盒子应当写在卡片反面的下面,这样重叠时卡片正面会在上面。
  • 使用rotateY(-180deg)将卡片反面先翻面,使用backface-visibility: hidden;可以使卡片反面背面朝向用户时不可见。
  • 为图片添加点击事件,点击图片时,两个盒子各翻转(180deg),卡片正面翻到反面,卡片反面翻到正面。

代码实现

代码实现部分省去了部分内容与样式,只保留主要结构,方便理解。

HTML部分:

<div class="container">
    <!-- 卡片反面 -->
    <div class="card reverse">
        <div class="avatar">
            <img src=""/>
        </div>
    </div><!-- 卡片正面 -->
    <div class="card front">
        <div class="avatar">
            <img src=""/>
        </div>
    </div>
</div>

CSS部分:

.card{
    position: absolute;
    backface-visibility: hidden;
    transition: all 1s;
}
​
.reverse{
    transform: rotateY(-180deg);
}

JS部分:

const front = document.querySelector(".front");
const reverse = document.querySelector(".reverse");
const frontButton = front.querySelector(".avatar");
const reverseButton = reverse.querySelector(".avatar");
​
// 卡片正面翻转
frontButton.addEventListener("click", () => {
  front.style.transform="rotateY(180deg)"
  reverse.style.transform="rotateY(0deg)"
})
​
// 卡片反面翻转
reverseButton.addEventListener("click", () => {
  reverse.style.transform="rotateY(-180deg)"
  front.style.transform="rotateY(0deg)"
})

波奇-反面.jpg