我的名片

101 阅读2分钟

当青训营遇上码上掘金

1. 主题:我的名片

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

2. 展示

3. 引言

最近刚入门vue3,目前刚了解了与vue2的不同,报名字节青训营看到了「青训营 X 码上掘金」主题创作活动,就想着用vue3做一个小demo,熟悉一下vue3的代码格式,巩固之前所学过的知识点,毕竟好记性不如烂笔头(小编目前只学了setup()|ref|reactive|computed)

4. 思路

  1. 将名片分为头像区和信息区
  2. 头像区的图片居中
  3. 信息区展示名片信息
    • reactiuve定义了一个对象类型的响应式数据,可以将数据响应式动态渲染于页面
    • 点击头像触发changeInfo()事件,展示第二人格名片内容并修改数据值
    • 通过计算属性自定义类名修改样式
  4. 通过点击头像展示不同数据

5. 代码实现

JS部分核心代码

  • html部分
<h1 style="text-align: center; color: rgb(247, 20, 111);">点击头像,切换熊格</h1>
  <div class="container" :class="{ 'active1': isOne, 'active2': isTwo }">
    <div class="photo" @click="changeInfo">
      <img
        :src="winnie.photo"
        alt=""
      />
    </div>
    <hr />
    <div class="msg">
      <ul>
        <li>
          <span>姓名:</span>
          <p>{{ winnie.name }}</p>
        </li>
        <li>
          <span>早晨第一句话:</span>
          <p>{{ winnie.talk }}</p>
        </li>
        <li>
          <span>口头禅:</span>
          <p>{{ winnie.petPhrase }}</p>
        </li>
        <li>
          <span>最喜欢的食物:</span>
          <p>{{ winnie.food }}</p>
        </li>
      </ul>
    </div>
  </div>
  • css部分
.container {
  width: 300px;
  height: 500px;
  border-radius: 10px;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  background: linear-gradient(rgb(245, 218, 46), rgb(247, 20, 111));
}
.photo {
  text-align: center;
}
.photo img {
  margin: 20px;
  width: 120px;
  height: 120px;
  border-radius: 50%;
}
.msg {
  margin-top: 30px;
}
span {
  font-weight: 800;
}
.active1 {
  background: linear-gradient(rgb(245, 218, 46), rgb(247, 20, 111));
}
.active2 {
  background: linear-gradient(rgb(123, 195, 249), rgb(204, 146, 255));
}
  • JS部分
setup() {
    let winnie = reactive({
      
    });
    function changeInfo() {
    
    }
    let isOne = computed (()=>{
     
    });
    let isTwo = computed(()=>{
        
    });
    return {
      winnie,
      changeInfo,
      isOne,
      isTwo,
    };
}