Login form built with Vue and Bootstrap.
Created
January 2, 2022 17:00
-
-
Save dgleba/79b1c8bb8f61fff75211df9c01e22134 to your computer and use it in GitHub Desktop.
Login Form | Vue
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div id="app"> | |
<div class="login-page"> | |
<transition name="fade"> | |
<div v-if="!registerActive" class="wallpaper-login"></div> | |
</transition> | |
<div class="wallpaper-register"></div> | |
<div class="container"> | |
<div class="row"> | |
<div class="col-lg-4 col-md-6 col-sm-8 mx-auto"> | |
<div v-if="!registerActive" class="card login" v-bind:class="{ error: emptyFields }"> | |
<h1>Sign In</h1> | |
<form class="form-group"> | |
<input v-model="emailLogin" type="email" class="form-control" placeholder="Email" required> | |
<input v-model="passwordLogin" type="password" class="form-control" placeholder="Password" required> | |
<input type="submit" class="btn btn-primary" @click="doLogin"> | |
<p>Don't have an account? <a href="#" @click="registerActive = !registerActive, emptyFields = false">Sign up here</a> | |
</p> | |
<p><a href="#">Forgot your password?</a></p> | |
</form> | |
</div> | |
<div v-else class="card register" v-bind:class="{ error: emptyFields }"> | |
<h1>Sign Up</h1> | |
<form class="form-group"> | |
<input v-model="emailReg" type="email" class="form-control" placeholder="Email" required> | |
<input v-model="passwordReg" type="password" class="form-control" placeholder="Password" required> | |
<input v-model="confirmReg" type="password" class="form-control" placeholder="Confirm Password" required> | |
<input type="submit" class="btn btn-primary" @click="doRegister"> | |
<p>Already have an account? <a href="#" @click="registerActive = !registerActive, emptyFields = false">Sign in here</a> | |
</p> | |
</form> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var app = new Vue({ | |
el: "#app", | |
data: { | |
registerActive: false, | |
emailLogin: "", | |
passwordLogin: "", | |
emailReg: "", | |
passwordReg: "", | |
confirmReg: "", | |
emptyFields: false | |
}, | |
methods: { | |
doLogin() { | |
if (this.emailLogin === "" || this.passwordLogin === "") { | |
this.emptyFields = true; | |
} else { | |
alert("You are now logged in"); | |
} | |
}, | |
doRegister() { | |
if (this.emailReg === "" || this.passwordReg === "" || this.confirmReg === "") { | |
this.emptyFields = true; | |
} else { | |
alert("You are now registered"); | |
} | |
} | |
} | |
}); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.min.js"></script> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
p { | |
line-height: 1rem; | |
} | |
.card { | |
padding: 20px; | |
} | |
.form-group { | |
input { | |
margin-bottom: 20px; | |
} | |
} | |
.login-page { | |
align-items: center; | |
display: flex; | |
height: 100vh; | |
.wallpaper-login { | |
background: url(https://images.pexels.com/photos/32237/pexels-photo.jpg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260) | |
no-repeat center center; | |
background-size: cover; | |
height: 100%; | |
position: absolute; | |
width: 100%; | |
} | |
.fade-enter-active, | |
.fade-leave-active { | |
transition: opacity .5s; | |
} | |
.fade-enter, | |
.fade-leave-to { | |
opacity: 0; | |
} | |
.wallpaper-register { | |
background: url(https://images.pexels.com/photos/533671/pexels-photo-533671.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260) | |
no-repeat center center; | |
background-size: cover; | |
height: 100%; | |
position: absolute; | |
width: 100%; | |
z-index: -1; | |
} | |
h1 { | |
margin-bottom: 1.5rem; | |
} | |
} | |
.error { | |
animation-name: errorShake; | |
animation-duration: 0.3s; | |
} | |
@keyframes errorShake { | |
0% { | |
transform: translateX(-25px); | |
} | |
25% { | |
transform: translateX(25px); | |
} | |
50% { | |
transform: translateX(-25px); | |
} | |
75% { | |
transform: translateX(25px); | |
} | |
100% { | |
transform: translateX(0); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" /> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment