vue+elementui简约登录
一.导入js,css
<!-- import CSS --> <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> <!-- import Vue before Element --> <script src="https://unpkg.com/vue/dist/vue.js"></script> <!-- import JavaScript --> <script src="https://unpkg.com/element-ui/lib/index.js"></script> <!-- jquery --> <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.5.1.min.js"></script>
二.主题内容
<div class="store-login" id="app"> <!-- 背景 --> <div class="bg-login"> <li v-for="bgimg in bgImages"> <img :src="bgimg"> </li> <!-- <li> <img src="./img/bg2.jpg"> </li> <li> <img src="./img/bg4.jpg"> </li> <li> <img src="./img/bg3.jpg"> </li> --> </div> <div class="login-s"> <!-- 登录表单 --> <el-form :model="loginForm" ref="LoginFormRef" :rules="loginFormRules" label-width="0px" class="login_form"> <!-- 用户名 --> <el-form-item prop="username"> <el-input v-model="loginForm.username" prefix-icon="iconfont icon-user"></el-input> </el-form-item> <!-- 密码 --> <el-form-item prop="password"> <el-input type="password" v-model="loginForm.password" prefix-icon="iconfont icon-3702mima"></el-input> </el-form-item> <!-- 按钮 --> <el-form-item class="btns"> <el-button type="primary" @click="login">登录</el-button> <el-button type="info" @click="resetLoginForm">重置</el-button> </el-form-item> </el-form> </div> </div>
三.javascript代码
<script>
new Vue({
el: '#app',
data: function() {
return {
//数据绑定
index: 0,
bgImages:[
'./img/bg1.jpg',
'./img/bg2.jpg',
'./img/bg3.jpg',
'./img/bg4.jpg',
],
show: {
diplay: 'blok',
},
loginForm: {
username: 'admin',
password: '123456'
},
//表单验证规则
loginFormRules: {
username: [{
required: true,
message: '请输入登录名',
trigger: 'blur'
},
{
min: 3,
max: 10,
message: '登录名长度在 3 到 10 个字符',
trigger: 'blur'
}
],
password: [{
required: true,
message: '请输入密码',
trigger: 'blur'
},
{
min: 6,
max: 15,
message: '密码长度在 6 到 15 个字符',
trigger: 'blur'
}
]
}
}
},
methods: {
//添加表单重置方法
resetLoginForm() {
//this=>当前组件对象,其中的属性$refs包含了设置的表单ref
// console.log(this)
this.$refs.LoginFormRef.resetFields()
},
login() {
//点击登录的时候先调用validate方法验证表单内容是否有误
this.$refs.LoginFormRef.validate(async valid => {
console.log(this.loginFormRules)
//如果valid参数为true则验证通过
if (!valid) {
return
}
//发送请求进行登录
const {
data: res
} = await this.$http.post('login', this.loginForm)
// console.log(res);
if (res.meta.status !== 200) {
return this.$message.error('登录失败:' + res.meta.msg) //console.log("登录失败:"+res.meta.msg)
}
this.$message.success('登录成功')
console.log(res)
//保存token
window.sessionStorage.setItem('token', res.data.token)
// 导航至/home
this.$router.push('/home')
})
},
changBg() {
// alert(11);
// const bglogin = document.getElementsByClassName("bg-login");
// console.log(bglogin);
if (this.index === 0) {
this.index = 3;
} else {
this.index = this.index - 1;
}
$(".bg-login>li:eq(" + this.index + ")").fadeIn("3000").siblings().fadeOut("3000");
console.log(this.index);
}
},
created() {
this.index = this.bgImages.length
setInterval(this.changBg, 7000);
}
})
</script>
四.代码样式
<style type="text/css"> *{ padding: 0; margin: 0; } body,html { width: 100%; height: 100%; } .store-login { background-color: white; height: 100%; position: relative; } .bg-login { /*background: url("../../public/img/3Dbg01.jpg") no-repeat;*/ /*background-size: 100% 100%;*/ position: relative; height: 100%; opacity: 0.8; z-index: 1; } .bg-login > li { list-style: none; /*display: none;*/ position: relative; width: 100%; height: 100%; position: absolute; } .bg-login > li > img { width: 100%; height: 100%; opacity: 0.9; transition: ease .5s; } .login-s { position: absolute; width: 350px; height: 400px; background-color: rgba(0, 0, 0, 0.3); top: 35%; left: 50%; transform: translate(-50%, -50%); border-radius: 8px; z-index: 2; box-shadow: 10px 10px 20px 0px rgba(0, 0, 0, 0.7); text-align: center; } .login_form { position: relative; top: 50%; left: 50%; transform: translate(-50%, -50%); padding: 0 30px; } </style>
五.效果图

预览地址:https://li_shang_shan.gitee.io/vue-element-ui-login/
个人学习,内容简略

浙公网安备 33010602011771号