用uniapp寫一個好看的登錄頁面
更新時間:2024年03月26日 14:56:45 作者:code袁
隨著移動互聯(lián)網(wǎng)的發(fā)展,移動端app的使用越來越普及,而對于開發(fā)者來說如何設(shè)計一款簡單易用的app是一項不容忽視的工作,其中登錄頁面是app使用過程中最基礎(chǔ)的組成部分之一,這篇文章主要給大家介紹了關(guān)于用uniapp寫一個好看的登錄頁面的相關(guān)資料,需要的朋友可以參考下
uniapp好看的登錄頁面
本登錄方式有兩種
1.賬號和密碼登錄
2.賬號和驗證碼登錄
1.登錄頁面的代碼
<template> <view class="login"> <view class="login-title">體育場館預(yù)約</view> <view class="login-content"> <view class="login-username"> <i class="el-icon-user"></i> <input type="text" placeholder="請輸入賬號" v-model="phone"> </view> <view class="login-password"> <i class="el-icon-key"></i> <input type="safe-password" name="" id="" placeholder="請輸入密碼" v-model="password"> </view> </view> <view class="button"><button @click="onsubmit">登錄</button></view> <view class="login-botton"> <view class="login-password" @click="findPassword">找回密碼</view> <span>|</span> <view class="login-zhuce" @click="Registration">注冊賬號</view> </view> <!-- 其他的登錄方式 --> <view class="login-other"> <view class="login-top"> 其他的登錄方式 </view> <view class="login-icon"> <image src="../../static/index/QQ.png" mode="widthFix"></image> <image src="../../static/index/weixin.png" mode="widthFix"></image> </view> </view> </view> </template> <script> import { mapMutations } from 'vuex'; export default { data() { return { phone:'', password:'', rules: { phone: [{ required: true, message: '請輸入手機號', rule: '/^1[23456789]\d{9}$/' }], password: [{ required: true, message: '請輸入密碼', trigger: 'blur' }] } }; }, methods: { // ...mapMutations(['user_Login']), //登錄 onsubmit() { if(this.phone==''||this.password==''){ uni.showToast({ title:"內(nèi)容不能為空哦!", icon:"none" }) }else{ let data={ phone:this.phone, password:this.password } uni.request({ url: '/api/login/loginUser', method: 'POST', data: data, success: res => { console.log(res.data.data.data); if (res.data.code == 200) { this.$store.commit("userLogin",res.data.data.data ); localStorage.setItem('status',true) //頁面跳轉(zhuǎn) this.$router.push('/pages/index/index'); uni.showToast({ title: res.data.data.msg, icon: 'none' }); } else { uni.showToast({ title: res.data.data.msg, icon: 'none' }); } } }); } }, Registration() { console.log('hah '); uni.navigateTo({ url: '../../pages/login/registration' }); }, findPassword() { console.log('hah '); this.$router.push('/pages/login/findPassword'); }, loginOther(){ uni.share({ provider: "weixin", scene: "WXSceneSession", type: 1, summary: "我正在使用HBuilderX開發(fā)uni-app,趕緊跟我一起來體驗!", success: function (res) { console.log("success:" + JSON.stringify(res)); }, fail: function (err) { console.log("fail:" + JSON.stringify(err)); } }); } } }; </script> <style lang="less"> .login { // background-image: linear-gradient(120deg, #05ee28, #6a3dad); background-color: #fff; width: 100%; background-position: center; background-size: cover; // background-color: #464646; margin:0px; background-size:100% 100%; background-attachment:fixed; height: 1535rpx; opacity: 0.8; .login-title { padding-top: 150rpx; display: flex; justify-content: flex-start; margin-left: 50rpx; font-weight: 700; font-size: 40rpx; color: #11cd6e; letter-spacing: 5rpx; margin-bottom: 50rpx; } .login-content{ .login-username{ display: flex; align-items: center; margin: 0 50rpx; border-bottom: 1rpx solid gainsboro; input{ padding: 10rpx; height: 60rpx; width: 80%; } i { color: #11c53e; padding-right: 20rpx; font-size: 50rpx; } } .login-password{ display: flex; align-items: center; margin: 0 50rpx; border-bottom: 1rpx solid gainsboro; margin-top: 50rpx; input{ padding: 10rpx; height: 60rpx; width: 80%; } i { color: #11c53e; padding-right: 20rpx; font-size: 50rpx; } } } .button{ margin-top: 120rpx; button{ background-color:#11c53e; width: 90%; height: 85rpx; text-align: center; line-height: 85rpx; color: #fff; } } .login-botton{ display: flex; justify-content: center; margin-top: 100rpx; .login-password{ padding: 0 15rpx; color: #11c53e; } .login-zhuce{ padding: 0 15rpx; color: #11c53e; } } .login-other{ position: absolute; bottom: 100rpx; left: 37%; display: flex; flex-direction: column; justify-content: center; .login-top{ text-align:center; } .login-icon{ display: flex; justify-content: space-between; margin-top: 50rpx; image{ width: 80rpx; } } } } </style>
2.注冊頁面
<template> <view class="registration"> <view class="registration-content"> <view class="login-username"> <i class="el-icon-mobile"></i> <input type="text" name="" id="" placeholder="請輸入手機號" v-model="phone" /> </view> <view class="login-code"> <i class="el-icon-cpu"></i> <input type="text" placeholder="請輸入驗證碼" v-model="userCode" /> <button type="warning" :disabled="disabled" @click="sendCode">{{ codeMsg }}</button> </view> </view> <view class="login-button"><button @click="login">下一步</button></view> <view class="registration-botton"><view class="registration-password" @click="goBack">密碼登陸</view></view> </view> </template> <script> export default { data() { return { phone: '', userCode: '', disabled: false, codeNum: 10, codeMsg: '獲取驗證碼', code: '', rules: { phone: { rule: '/^1[23456789]\d{9}$/', meg: '手機的格式不對' } } }; }, methods: { sendCode() { if (this.phone == '') { uni.showToast({ title: '手機號不能為空', icon: 'none' }); } else if (this.phone != '') { var reg = /^1[3456789]\d{9}$/; if (!reg.test(this.phone)) { uni.showToast({ title: '輸入有效的手機號', icon: 'none' }); } else { //禁用按鈕 this.disabled = true; //發(fā)送請求 uni.request({ url: '/api/login/code', method: 'POST', data: { phone: this.phone }, success: res => { console.log('11', res.data.data); if (res.data.data.success) { this.code = res.data.data.data; } } }); //倒計時 let timer = setInterval(() => { --this.codeNum; this.codeMsg = `重新發(fā)送 ${this.codeNum}`; }, 1000); //判斷定時器停止 setTimeout(() => { clearInterval(timer); (this.disabled = false), (this.codeMsg = '獲取驗證碼'), (this.codeNum = 10); }, 10000); } } }, //登錄 login() { if (this.code == '' || this.phone == '') { uni.showToast({ title: '手機號不能為空', icon: 'none' }); } else if (this.userCode == this.code) { //驗證碼正確 uni.request({ url: '/api/login/addUser', method: 'POST', data: { phone: this.phone }, success: res => { //code 200 注冊成功 if (res.data.code == 200) { uni.showToast({ title: res.data.data.msg, icon: 'none' }); //給vuex添加數(shù)據(jù) this.$store.commit('userLogin', res.data.data.data); //路由跳轉(zhuǎn) this.$router.push('/pages/index/index'); } else { uni.showToast({ title: res.data.data.msg, icon: 'none' }); } } }); } }, //密碼登錄 goBack() { this.$router.push('/pages/login/login'); }, validate(key) { let bool = true; if (!this.rules[key].rule.test(this[key])) { uni.showToast({ title: this.rules[key].meg, icon: 'none' }); bool = false; return false; } return bool; } } }; </script> <style lang="less"> .registration { width: 100%; background-position: center; background-size: cover; background-color: #fff; margin: 0px; background-size: 100% 100%; background-attachment: fixed; opacity: 0.8; // margin-top: 100rpx; .registration-content{ display: flex; flex-direction: column; margin: 0 50rpx; input{ padding: 10rpx; width:60%; height: 70rpx; } i { color: #11c53e; padding-right: 20rpx; font-size: 50rpx; } .login-username{ display: flex; align-items: center; border-bottom: 1rpx solid gainsboro; margin-top: 30rpx; } .login-code{ display: flex; align-items: center; border-bottom: 1rpx solid gainsboro; margin-top: 30rpx; button{ width:250rpx; height: 85rpx; font-size: 30rpx; line-height: 85rpx; background-color: #11c53e; color: #fff; } } } .login-button{ margin-top: 150rpx; width: 90%; margin-left: 5%; button{ background-color: #11c53e; color: #fff; } } } .registration-botton { display: flex; margin-top: 50rpx; justify-content: space-between; .registration-password { padding-left: 40rpx; color: #fff; } .registration-zhuce { padding-right: 40rpx; color: #fff; } } </style>
總結(jié)
到此這篇關(guān)于用uniapp寫一個好看的登錄頁面的文章就介紹到這了,更多相關(guān)uniapp登錄頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
vue+elementui+vuex+sessionStorage實現(xiàn)歷史標簽菜單的示例代碼
本文主要介紹了vue+elementui+vuex+sessionStorage實現(xiàn)歷史標簽菜單的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-12-12Vue在自定義指令綁定的處理函數(shù)中傳遞參數(shù)
這篇文章主要介紹了Vue在自定義指令綁定的處理函數(shù)中傳遞參數(shù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03vue使用mpegts.js實現(xiàn)播放flv的直播視頻流
這篇文章主要為大家詳細介紹了vue如何使用mpegts.js實現(xiàn)播放flv的直播視頻流,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下2024-01-01