优秀的编程知识分享平台

网站首页 > 技术文章 正文

vue vue-router element-ui学习笔记(四)美化头部和登录界面

nanyue 2024-08-03 17:47:04 技术文章 6 ℃

avatar.jpg.jpg

找张头像当用户头像

在写点css来美化一下头部,完善一下现在能完成的功能

header.vue

<template>
 <el-row class="header">
 <!-- 左边logo -->
 <el-col :span="4" class="logo">
 <img @click="tohome" src="../assets/logo.png" alt="">
 </el-col>
 <!-- 中间导航区域 -->
 <el-col class="main" :span="16">
 <el-menu
 :default-active="$route.path"
 class="menu"
 router
 mode="horizontal"
 @select="handleSelect"
 active-text-color="#000">
 <!-- 循环写的路由,其中路由中有 hidden:true 的就不加入循环 -->
 <template
 v-for="route in $router.options.routes"
 v-if="!route.hidden">
 <!-- 循环没有children的路由 -->
 <el-menu-item
 v-if="!route.hasChild"
 :key="route.path"
 :index="route.path" >
 <i :class="route.class"></i>
 {{ route.name }}
 </el-menu-item>
 <!-- 循环有children的路由 -->
 <el-submenu v-else :index="route.path">
 <template slot="title">{{ route.name }}</template>
 <el-menu-item
 v-for="child in route.children"
 :index="child.path"
 :key="child.path">
 {{ child.name }}
 </el-menu-item>
 </el-submenu>
 </template>
 </el-menu>
 </el-col>
 <!-- 右边用户信息以及登陆注册 -->
 <el-col :span="4" class="user">
 <!-- 根据logined值的真假来判断是显示登录按钮还是用户信息
 以后根据登录状态来改变 -->
 <el-button-group v-if="!logined" >
 <el-button class="button" @click.native="tologin" type="danger" size="small" round >login</el-button>
 <el-button class="button" @click.native="toregin" type="success" size="small" round >regin</el-button>
 </el-button-group>
 <div v-else>
 <el-dropdown>
 <img class="avatar" src="../assets/avatar.jpg" alt="">
 <el-dropdown-menu slot="dropdown">
 <el-dropdown-item>李小小</el-dropdown-item>
 <el-dropdown-item>我的工作台</el-dropdown-item>
 <el-dropdown-item divided>退出登录</el-dropdown-item>
 </el-dropdown-menu>
 </el-dropdown>
 </div>
 </el-col>
 </el-row>
</template>
<script>
export default {
 // ...
 data () {
 return {
 logined: true
 }
 },
 methods: {
 handleSelect () {
 console.log()
 },
 tohome () {
 this.$router.push('/')
 console.log('home')
 },
 tologin () {
 this.$router.push('/login')
 },
 toregin () {
 this.$router.push('/regin')
 }
 }
}
</script>
<style scoped>
.header {
 width: 100%;
 height: 60px;
 margin: 0;
 background: #fff;
 position: fixed;
 top: 0;
 left: 0;
 box-shadow: 0 0 25px #666;
}
.logo img {
 width:60px;
 height: 60px;
 cursor: pointer;
}
.button {
 margin: 15px 0;
}
.avatar {
 width: 40px;
 height: 40px;
 border-radius: 20px;
 margin: 10px 0;
 cursor: pointer;
}
</style>

效果:

Image 027.png

Image 028.png

然后写登录和注册界面

login.vue

<template>
 <el-main>
 <el-form
 :model="LoginForm"
 ref="LoginForm"
 :rules="rule"
 label-width="0"
 class="login-form">
 <h3>用户登录系统</h3>
 <el-form-item prop="username">
 <el-input
 type="text"
 v-model="LoginForm.username"
 placeholder="username" >
 </el-input>
 </el-form-item>
 <el-form-item prop="password">
 <el-input
 type="password"
 v-model="LoginForm.password"
 placeholder="password" >
 </el-input>
 </el-form-item>
 <el-form-item >
 <el-button
 type="danger"
 class="submitBtn"
 round
 @click.native.prevent="submit"
 :loading="logining">
 登录
 </el-button>
 <el-button
 type="primary"
 class="resetBtn"
 round
 @click.native.prevent="reset">
 重置
 </el-button>
 <hr>
 <p>还没有账号,马上去<span class="to" @click="toregin">注册</span></p>
 </el-form-item>
 </el-form>
 </el-main>
</template>
<script>
export default {
 // ....
 data () {
 return {
 LoginForm: {
 username: '',
 password: ''
 },
 logining: false,
 rule: {
 username: [
 {
 required: true,
 max: 14,
 min: 7,
 message: '用户名是必须的,长度为7-14位',
 trigger: 'blur'
 }
 ],
 password: [
 {
 required: true,
 message: '密码是必须的!',
 trigger: 'blur'
 }
 ]
 }
 }
 },
 methods: {
 // ...
 submit () {
 this.$refs.LoginForm.validate(valid => {
 if (valid) {
 this.logining = true
 console.log('开始请求后台数据,验证返回之类的操作!')
 } else {
 console.log('submit err')
 }
 })
 },
 reset () {
 this.$refs.LoginForm.resetFields()
 },
 toregin () {
 this.$router.push('/regin')
 }
 }
}
</script>
<style scoped>
.login-form {
 margin: 20px auto;
 width: 310px;
 background: #fff;
 box-shadow: 0 0 35px #B4BCCC;
 padding: 30px 30px 0 30px;
 border-radius: 25px;
}
.submitBtn {
 width: 65%;
}
.to {
 color: #67C23A;
 cursor: pointer;
}
</style>

效果:

Image 029.png

数据验证以及重置都是写好的,但登录最重要的逻辑还没写,这个须要去数据库找数据验证,所以先把注册页面也写好,然后连个数据库在写逻辑

其实真正用的话应该写成第三方登录注册,用微信或者微博的api,这样比较安全,也可以做一个双层登录验证,但这是本地项目也只能写个简单的试一下了

最近发表
标签列表