国庆更文-每日前端三(用户主页显示与网页Haru)

66 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

前言

又到了检验今日成果的时候了,今天可是写了不少页面,后面咱们很快就会更新有关于后端的内容了。 咱们的每日前端其实就是咱们WhiteHole的预览相关。

那么我们今天做的事情主要就是这样的: 在这里插入图片描述

首先是个人的主页展示,之后是咱们的一个萌娘。

这个的话我这边展示萌娘是很简陋的,后面等咱们有机会聊天机器人做好之后的话,那么咱们的这个就将具备交互功能了。现在只能跟着鼠标转动方向。

主页

我们先来看看这个主页怎么做的,首先的话是咱们的大头像,之后的话是咱们的一些文章,提问之类的显示。这个咱们做的多了,我就举一两个例子就好了。

个人主页

首先里面还有背景,但是这个背景的话,咱们昨天已经说了是咱做的,这里就不复述了。

<template>
  <div style="width: 90%;margin: 0 auto">
    <vue-particles
      class="login-background"
      color="#97D0F2"
      :particleOpacity="0.7"
      :particlesNumber="200"
      shapeType="circle"
      :particleSize="4"
      linesColor="#97D0F2"
      :linesWidth="1"
      :lineLinked="true"
      :lineOpacity="0.8"
      :linesDistance="150"
      :moveSpeed="3"
      :hoverEffect="true"
      hoverMode="grab"
      :clickEffect="true"
      clickMode="push">
    </vue-particles>
    <el-container style="text-align: center;width: 80%;margin: 0 auto" >

        <div  style="z-index: 1" >
          <div class="show" style="width: 900px">
            <div >
              <div style="width:200px;height: 100%;border-radius: 100px;margin: 0 auto">
                <img
                  style="width: 150px;height: 150px;border-radius: 100px;"
                  src="/static/temporary/headpic.jpg"
                  class="image"
                >
              </div>
              <div>
                <br>
                <p>
                  <el-button @click="focusOn"  v-if="focusOnFlag===false" icon="el-icon-plus" type="primary" plain >
                    <span>关注</span>
                  </el-button>
                  <el-button @click="focusOn"  v-else icon="el-icon-check" type="primary" plain >
                    <span>已关注</span>
                  </el-button>
                </p>
              </div>
            </div>
            <div>
              <p style="font-size: larger;font-family: 楷体;text-align: center">简介</p>
              <p style="font-size: smaller;width: 65%;margin: 0 auto">
                凭寄狂夫书一纸,
                篇什纵横文案少。
                世人见我轻鸿毛。
                黄花冷落不成艳,
                尔亦今年赐服章。
              </p>
              <br><br>
            </div>
          </div>
          <div style="width: 30%;margin: 0 auto">
            <el-breadcrumb separator-class="el-icon-arrow-right">
              <el-breadcrumb-item :to="{ path: '/userinfo'}">文章</el-breadcrumb-item>
              <el-breadcrumb-item :to="{ path: '/userinfo/userquizList'}">提问</el-breadcrumb-item>
              <el-breadcrumb-item :to="{ path: '/userinfo/useransList'}">回答</el-breadcrumb-item>
              <el-breadcrumb-item :to="{ path: '/userinfo/userunityList'}">TA的社区</el-breadcrumb-item>
              <el-breadcrumb-item ></el-breadcrumb-item>
            </el-breadcrumb>
          </div>
          <div style="width: 100%;margin: 0 auto">
            <router-view></router-view>
          </div>
        </div>
    </el-container>
  </div>
</template>
<script>
export default {
  name: "userinfo",
  data(){
    return{
      focusOnFlag:false,
    }
  },
  methods:{
    focusOn(){
      this.focusOnFlag=!this.focusOnFlag;
      if(this.focusOnFlag){
        alert("关注成功")
      }else {
        alert("取关成功")
      }

    },
  },
}
</script>

<style scoped>

.login-background {
  width: 80%;
  margin: 0 auto;
  height: 1200px; /**宽高100%是为了图片铺满屏幕 */
  z-index: 0;
  position: absolute;
}
.show{
  margin: 20px auto;
  width: 100%;

  border: 0px solid #81badc;
  transition: all 0.9s;
  border-radius: 10px;

}
.show:hover{
  box-shadow: 0px 10px 30px rgb(12, 132, 224);
  margin-top: 10px;

}
</style>

列表页面

之后是咱们的列表页面,在这里的话是这样的: 在这里插入图片描述


    {

      path: "/userinfo",
      name: userinfo,
      component: userinfo,
      children:[
        {
          path: "",
          name: "userblogList",
          component: userblogList,
        },
        {
          path: "useransList",
          name: "useransList",
          component: useransList,
        },
        {
          path: "userquizList",
          name: "userquizList",
          component: userquizList,
        },
        {
          path: "userunityList",
          name: "userunityList",
          component: userunityList,
        }
      ]

    },

他们的显示都是一样的,所以我这里就不复述了。 我们拿其中一个页面的编写拿过来就好了,这里的话也是我没有单独封装成一个组件,因为后面还有很多个性化之类的修改。当然也方便以后去copy页面,万一封装成组件然后忘记了里面的参数又是麻烦事。

<template>
  <div style="background-color: rgba(239,250,246,0.53)">
    <br>

    <br>
    <div style="width: 100%;margin-left: 1%" class="main">
      <el-card shadow="hover" v-for="(message,index) in Messages" :key="index">

        <div style="height:100px">
          <div  style="width:12%;height: 100%;border-radius: 100px;display:inline-block;">
            <img
              style="width:100%;height: 100%;border-radius: 100px"
              src="/static/temporary/headpic.jpg"
              class="image"
            >
          </div>
          <div style="display:inline-block;margin-left: 5%;width: 60%">
            <p class="message" style="font-weight:bold">

              <router-link class="alink" to="/blogshow">
                {{message.name}}
              </router-link>

            </p>
            <p style="font-weight: lighter" class="message"

            >
              {{message.info}}

            </p>
            <p class="message">
              阅读:
              <i class="el-icon-view"></i>
              {{message.number}}
              &nbsp;&nbsp;
              收藏:
              <i class="el-icon-star-off"></i>
              {{message.favorite}}
              &nbsp;&nbsp;
              <i>fork:{{message.fork}}</i>
            </p>

          </div>

          <div  style="width:18%;height: 100%;
          display:inline-block;
          "
          >
            <span style="text-align: center">{{message.data}}</span>
          </div>

        </div>
        <br>
      </el-card>
    </div>
    <br>
    <div class="footer" style="margin: 0 auto;width: 100%;">
      <div class="block" >
        <el-pagination
          background
          layout="total, prev, pager, next, jumper"
          :total=total>
        </el-pagination>
      </div>
    </div>

  </div>

</template>

<script>
export default {
  name: "userblogList",
  data(){
    return{
      total: 999,
      Messages:[
        {"info":"Spring 是一个轻量级的开发框架",
          "name":"Spring 5 核心原理解析",
          "number": 999,"data":"2022-3-27",favorite: 999,
          "fork": 2
        },
        {"info":"Spring 是一个轻量级的开发框架",
          "name":"Spring 5 核心原理解析",
          "number": 999,"data":"2022-3-27",favorite: 999,
          "fork": 2
        },
        {"info":"Spring 是一个轻量级的开发框架",
          "name":"Spring 5 核心原理解析",
          "number": 999,"data":"2022-3-27",favorite: 999,
          "fork": 2
        },
        {"info":"Spring 是一个轻量级的开发框架",
          "name":"Spring 5 核心原理解析",
          "number": 999,"data":"2022-3-27",favorite: 999,
          "fork": 22
        },

      ]
    }
  },
}
</script>

<style scoped>
.message{
  width: 25em;
  overflow: hidden;
  text-overflow:ellipsis;
  white-space: nowrap;
}

.alink{

  text-decoration: none;
  color: #333333;
}

</style>

Haru

这个是使用live2d做的,也是copy大哥的。资源获取如下: 链接:pan.baidu.com/s/1MPD5aVjY… 提取码:6666

之后下载解压,到这个目录 在这里插入图片描述

配置

之后的话咱们配置一下就好了。 在index.html下输入这个 在这里插入图片描述

<script type="text/javascript" src="./static/live2dw/lib/L2Dwidget.min.js"></script>

之后再App.vue下面输入这句话: 在这里插入图片描述

 mounted() {
    setTimeout(() => {
      window.L2Dwidget.init({
        pluginRootPath: '../static/live2dw/',
        pluginJsPath: 'lib/',
        pluginModelPath: 'live2d-widget-model-haru_1/assets/', //中间这个haru_1就是你的老婆,想换个老婆,换这个就可以了
        tagMode: false,
        debug: false,
        model: { jsonPath: '../static/live2dw/live2d-widget-model-haru_1/assets/haru01.model.json' },
        display: { position: 'left', width: 220, height: 450 },  //调整大小,和位置
        mobile: { show: true },   //要不要盯着你的鼠标看
        log: false,
      })
    }, 1)
  }

之后咱们是在app这个下的,所以的话基本上所有的页面都有。如果想要在单独的页面搞的话,把这个copy到单独的页面就可以了。