• Vue3留言墙项目——主体部分静态、mock


    主体头部

    在这里插入图片描述在这里插入图片描述

    主体部分显示的内容,根据头部点击的是留言墙还是照片墙的按钮,显示不同的内容。

    将照片墙和留言墙要渲染的数据抽取到一个js中,在导入的Main.vue(主体页面)中渲染。

    将页面中的文字记录在src/utils/data.js

    // 墙的性质
    // 这样记录后wallType[0]为留言墙内容 wallType[1]为照片墙内容
    export const wallType = [
      {
       
        name: "留言墙",
        slogan: "很多事情值得记录,当然也值得回味。",
      },
      {
       
        name: "照片墙",
        slogan: "很多事情值得记录,当然也值得回味。",
      },
    ];
    
    // 分类标签
    // label[0]为留言墙内容 label[1]为照片墙内容
    export const label = [
      [
        "留言",
        "目标",
        "理想",
        "过去",
        "将来",
        "爱情",
        "亲情",
        "秘密",
        "信条",
        "无题",
      ],
      [
        "我",
        "ta",
        "喜欢的",
        "有意义的",
        "值得纪念的",
        "母校",
        "生活",
        "天空",
        "我在的城市",
        "大海",
      ],
    ];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    根据id渲染照片墙或留言墙& 点击标签样式切换 实现这两个功能的Main.vue代码为:

    <template>
      <div class="main">
        <div class="message">
          <p class="name">{
      { wallType[id].name }}p>
          <p class="slogan">{
      { wallType[id].slogan }}p>
        div>
    
        <div class="labels">
          <ul>
            <li :class="{ liselected: liIndex == -1 }" @click="changeIndex(-1)">
              全部
            li>
            <li
              v-for="(item, index) in label[id]"
              :key="index"
              @click="changeIndex(index)"
              :class="{ liselected: liIndex == index }"
            >
              {
      { item }}
            li>
          ul>
        div>
      div>
    template>
    
    <script>
    import {
          wallType, label } from "@/utils/data";
    import {
          ref } from "vue";
    export default {
         
      setup() {
         
        let id = ref(0); // 留言墙id为0 之后做事件使得id为1
        let liIndex = ref(-1); // 当前选中状态小li的下标
        const changeIndex = (index) => {
         
          liIndex.value = index;
        };
        return {
         
          wallType,
          label,
          id,
          liIndex,
          changeIndex,
        };
      },
    };
    script>
    
    <style lang="scss" scoped>
    .main {
         
      margin-top: 52px;
      .message {
         
        padding-top: 46px;
        .name {
         
          font-size: 56px;
          color: $gray-1;
          font-weight: 600;
        }
        .slogan {
         
          font-size: 14px;
          color: $gray-3;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
  • 相关阅读:
    九方云学堂学员告诉你学习可以掌握哪些内容
    数据分析:微生物组差异丰度方法汇总
    2019史上最全java面试题题库大全800题含答案(面试宝典)
    Cannot read property ‘pickAlgorithm‘ of null
    深度解读ChatGPT:揭开人工智能聊天机器人的神秘面纱
    Kettle循环结果集中的数据并传入SQL组件【或转换】里面
    excel映射xml方法
    【学生管理系统】权限管理
    神经网络 深度神经网络,深度神经网络基本原理
    vue3语法笔记
  • 原文地址:https://blog.csdn.net/weixin_45732235/article/details/127944734