https://dailyui.co/ #002
Created
May 6, 2019 18:19
-
-
Save otengkwame/f5411aa4c0e1e941f48bd61e5391ef2f to your computer and use it in GitHub Desktop.
Daily UI #002: Credit Card Checkout
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
<!-- | |
Follow me on | |
Dribbble: https://dribbble.com/supahfunk | |
Twitter: https://twitter.com/supahfunk | |
Codepen: https://codepen.io/supah/ | |
This example is just for fun. | |
I realized it for the dailyui challenge | |
https://dailyui.co/ | |
Fork it if you want, it's free, but I apreciate credits or a retweet | |
Enjoy :) | |
--> | |
<div class="checkout"> | |
<div class="credit-card-box"> | |
<div class="flip"> | |
<div class="front"> | |
<div class="chip"></div> | |
<div class="logo"> | |
<svg version="1.1" id="visa" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |
width="47.834px" height="47.834px" viewBox="0 0 47.834 47.834" style="enable-background:new 0 0 47.834 47.834;"> | |
<g> | |
<g> | |
<path d="M44.688,16.814h-3.004c-0.933,0-1.627,0.254-2.037,1.184l-5.773,13.074h4.083c0,0,0.666-1.758,0.817-2.143 | |
c0.447,0,4.414,0.006,4.979,0.006c0.116,0.498,0.474,2.137,0.474,2.137h3.607L44.688,16.814z M39.893,26.01 | |
c0.32-0.819,1.549-3.987,1.549-3.987c-0.021,0.039,0.317-0.825,0.518-1.362l0.262,1.23c0,0,0.745,3.406,0.901,4.119H39.893z | |
M34.146,26.404c-0.028,2.963-2.684,4.875-6.771,4.875c-1.743-0.018-3.422-0.361-4.332-0.76l0.547-3.193l0.501,0.228 | |
c1.277,0.532,2.104,0.747,3.661,0.747c1.117,0,2.313-0.438,2.325-1.393c0.007-0.625-0.501-1.07-2.016-1.77 | |
c-1.476-0.683-3.43-1.827-3.405-3.876c0.021-2.773,2.729-4.708,6.571-4.708c1.506,0,2.713,0.31,3.483,0.599l-0.526,3.092 | |
l-0.351-0.165c-0.716-0.288-1.638-0.566-2.91-0.546c-1.522,0-2.228,0.634-2.228,1.227c-0.008,0.668,0.824,1.108,2.184,1.77 | |
C33.126,23.546,34.163,24.783,34.146,26.404z M0,16.962l0.05-0.286h6.028c0.813,0.031,1.468,0.29,1.694,1.159l1.311,6.304 | |
C7.795,20.842,4.691,18.099,0,16.962z M17.581,16.812l-6.123,14.239l-4.114,0.007L3.862,19.161 | |
c2.503,1.602,4.635,4.144,5.386,5.914l0.406,1.469l3.808-9.729L17.581,16.812L17.581,16.812z M19.153,16.8h3.89L20.61,31.066 | |
h-3.888L19.153,16.8z"/> | |
</g> | |
</g> | |
</svg> | |
</div> | |
<div class="number"></div> | |
<div class="card-holder"> | |
<label>Card holder</label> | |
<div></div> | |
</div> | |
<div class="card-expiration-date"> | |
<label>Expires</label> | |
<div></div> | |
</div> | |
</div> | |
<div class="back"> | |
<div class="strip"></div> | |
<div class="logo"> | |
<svg version="1.1" id="visa" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" | |
width="47.834px" height="47.834px" viewBox="0 0 47.834 47.834" style="enable-background:new 0 0 47.834 47.834;"> | |
<g> | |
<g> | |
<path d="M44.688,16.814h-3.004c-0.933,0-1.627,0.254-2.037,1.184l-5.773,13.074h4.083c0,0,0.666-1.758,0.817-2.143 | |
c0.447,0,4.414,0.006,4.979,0.006c0.116,0.498,0.474,2.137,0.474,2.137h3.607L44.688,16.814z M39.893,26.01 | |
c0.32-0.819,1.549-3.987,1.549-3.987c-0.021,0.039,0.317-0.825,0.518-1.362l0.262,1.23c0,0,0.745,3.406,0.901,4.119H39.893z | |
M34.146,26.404c-0.028,2.963-2.684,4.875-6.771,4.875c-1.743-0.018-3.422-0.361-4.332-0.76l0.547-3.193l0.501,0.228 | |
c1.277,0.532,2.104,0.747,3.661,0.747c1.117,0,2.313-0.438,2.325-1.393c0.007-0.625-0.501-1.07-2.016-1.77 | |
c-1.476-0.683-3.43-1.827-3.405-3.876c0.021-2.773,2.729-4.708,6.571-4.708c1.506,0,2.713,0.31,3.483,0.599l-0.526,3.092 | |
l-0.351-0.165c-0.716-0.288-1.638-0.566-2.91-0.546c-1.522,0-2.228,0.634-2.228,1.227c-0.008,0.668,0.824,1.108,2.184,1.77 | |
C33.126,23.546,34.163,24.783,34.146,26.404z M0,16.962l0.05-0.286h6.028c0.813,0.031,1.468,0.29,1.694,1.159l1.311,6.304 | |
C7.795,20.842,4.691,18.099,0,16.962z M17.581,16.812l-6.123,14.239l-4.114,0.007L3.862,19.161 | |
c2.503,1.602,4.635,4.144,5.386,5.914l0.406,1.469l3.808-9.729L17.581,16.812L17.581,16.812z M19.153,16.8h3.89L20.61,31.066 | |
h-3.888L19.153,16.8z"/> | |
</g> | |
</g> | |
</svg> | |
</div> | |
<div class="ccv"> | |
<label>CCV</label> | |
<div></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<form class="form" autocomplete="off" novalidate> | |
<fieldset> | |
<label for="card-number">Card Number</label> | |
<input type="num" id="card-number" class="input-cart-number" maxlength="4" /> | |
<input type="num" id="card-number-1" class="input-cart-number" maxlength="4" /> | |
<input type="num" id="card-number-2" class="input-cart-number" maxlength="4" /> | |
<input type="num" id="card-number-3" class="input-cart-number" maxlength="4" /> | |
</fieldset> | |
<fieldset> | |
<label for="card-holder">Card holder</label> | |
<input type="text" id="card-holder" /> | |
</fieldset> | |
<fieldset class="fieldset-expiration"> | |
<label for="card-expiration-month">Expiration date</label> | |
<div class="select"> | |
<select id="card-expiration-month"> | |
<option></option> | |
<option>01</option> | |
<option>02</option> | |
<option>03</option> | |
<option>04</option> | |
<option>05</option> | |
<option>06</option> | |
<option>07</option> | |
<option>08</option> | |
<option>09</option> | |
<option>10</option> | |
<option>11</option> | |
<option>12</option> | |
</select> | |
</div> | |
<div class="select"> | |
<select id="card-expiration-year"> | |
<option></option> | |
<option>2016</option> | |
<option>2017</option> | |
<option>2018</option> | |
<option>2019</option> | |
<option>2020</option> | |
<option>2021</option> | |
<option>2022</option> | |
<option>2023</option> | |
<option>2024</option> | |
<option>2025</option> | |
</select> | |
</div> | |
</fieldset> | |
<fieldset class="fieldset-ccv"> | |
<label for="card-ccv">CCV</label> | |
<input type="text" id="card-ccv" maxlength="3" /> | |
</fieldset> | |
<button class="btn"><i class="fa fa-lock"></i> submit</button> | |
</form> | |
</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
$('.input-cart-number').on('keyup change', function(){ | |
$t = $(this); | |
if ($t.val().length > 3) { | |
$t.next().focus(); | |
} | |
var card_number = ''; | |
$('.input-cart-number').each(function(){ | |
card_number += $(this).val() + ' '; | |
if ($(this).val().length == 4) { | |
$(this).next().focus(); | |
} | |
}) | |
$('.credit-card-box .number').html(card_number); | |
}); | |
$('#card-holder').on('keyup change', function(){ | |
$t = $(this); | |
$('.credit-card-box .card-holder div').html($t.val()); | |
}); | |
$('#card-holder').on('keyup change', function(){ | |
$t = $(this); | |
$('.credit-card-box .card-holder div').html($t.val()); | |
}); | |
$('#card-expiration-month, #card-expiration-year').change(function(){ | |
m = $('#card-expiration-month option').index($('#card-expiration-month option:selected')); | |
m = (m < 10) ? '0' + m : m; | |
y = $('#card-expiration-year').val().substr(2,2); | |
$('.card-expiration-date div').html(m + '/' + y); | |
}) | |
$('#card-ccv').on('focus', function(){ | |
$('.credit-card-box').addClass('hover'); | |
}).on('blur', function(){ | |
$('.credit-card-box').removeClass('hover'); | |
}).on('keyup change', function(){ | |
$('.ccv div').html($(this).val()); | |
}); | |
/*function getCreditCardType(accountNumber) { | |
if (/^5[1-5]/.test(accountNumber)) { | |
result = 'mastercard'; | |
} else if (/^4/.test(accountNumber)) { | |
result = 'visa'; | |
} else if ( /^(5018|5020|5038|6304|6759|676[1-3])/.test(accountNumber)) { | |
result = 'maestro'; | |
} else { | |
result = 'unknown' | |
} | |
return result; | |
} | |
$('#card-number').change(function(){ | |
console.log(getCreditCardType($(this).val())); | |
})*/ |
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="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.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
*, | |
*::before, | |
*::after { | |
box-sizing: border-box; | |
} | |
html, | |
body { | |
min-height: 100%; | |
font-family: 'Open sans', sans-serif; | |
} | |
body { | |
background: linear-gradient(50deg, #f3c680, hsla(179,54%,76%,1)); | |
} | |
/*-------------------- | |
Buttons | |
--------------------*/ | |
.btn { | |
display: block; | |
background: hsl(86, 76%, 71%); | |
color: hsl(0, 0, 100); | |
text-decoration: none; | |
margin: 20px 0; | |
padding: 15px 15px; | |
border-radius: 5px; | |
position: relative; | |
&::after { | |
content: ''; | |
position: absolute; | |
z-index: 1; | |
top: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
transition: all .2s ease-in-out; | |
box-shadow: inset 0 3px 0 hsla(0, 0, 0, 0), 0 3px 3px hsla(0, 0, 0, .2); | |
border-radius: 5px; | |
} | |
&:hover::after { | |
background: hsla(0, 0, 0, 0.1); | |
box-shadow: inset 0 3px 0 hsla(0, 0, 0, 0.2); | |
} | |
} | |
/*-------------------- | |
Form | |
--------------------*/ | |
.form { | |
fieldset { | |
border: none; | |
padding: 0; | |
padding: 10px 0; | |
position: relative; | |
clear: both; | |
&.fieldset-expiration { | |
float: left; | |
width: 60%; | |
& .select { | |
width: 84px; | |
margin-right: 12px; | |
float: left; | |
} | |
} | |
&.fieldset-ccv { | |
clear: none; | |
float: right; | |
width: 86px; | |
} | |
label { | |
display: block; | |
text-transform: uppercase; | |
font-size: 11px; | |
color: hsla(0, 0, 0, .6); | |
margin-bottom: 5px; | |
font-weight: bold; | |
font-family: Inconsolata; | |
} | |
input, | |
.select { | |
width: 100%; | |
height: 38px; | |
color: hsl(0, 0, 20); | |
padding: 10px; | |
border-radius: 5px; | |
font-size: 15px; | |
outline: none!important; | |
border: 1px solid hsla(0, 0, 0, 0.3); | |
box-shadow: inset 0 1px 4px hsla(0, 0, 0, 0.2); | |
&.input-cart-number { | |
width: 82px; | |
display: inline-block; | |
margin-right: 8px; | |
&:last-child { | |
margin-right: 0; | |
} | |
} | |
} | |
.select { | |
position: relative; | |
&::after { | |
content: ''; | |
border-top: 8px solid #222; | |
border-left: 4px solid transparent; | |
border-right: 4px solid transparent; | |
position: absolute; | |
z-index: 2; | |
top: 14px; | |
right: 10px; | |
pointer-events: none; | |
} | |
select { | |
appearance: none; | |
position: absolute; | |
padding: 0; | |
border: none; | |
width: 100%; | |
outline: none!important; | |
top: 6px; | |
left: 6px; | |
background: none; | |
:-moz-focusring { | |
color: transparent; | |
text-shadow: 0 0 0 #000; | |
} | |
} | |
} | |
} | |
button { | |
width: 100%; | |
outline: none!important; | |
background: linear-gradient(180deg, #49a09b, #3d8291); | |
text-transform: uppercase; | |
font-weight: bold; | |
border: none; | |
box-shadow: none; | |
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); | |
margin-top: 90px; | |
& .fa { | |
margin-right: 6px; | |
} | |
} | |
} | |
/*-------------------- | |
Checkout | |
--------------------*/ | |
.checkout { | |
margin: 150px auto 30px; | |
position: relative; | |
width: 460px; | |
background: white; | |
border-radius: 15px; | |
padding: 160px 45px 30px; | |
box-shadow: 0 10px 40px hsla(0, 0, 0, .1); | |
} | |
/*-------------------- | |
Credit Card | |
--------------------*/ | |
.credit-card-box { | |
perspective: 1000; | |
width: 400px; | |
height: 280px; | |
position: absolute; | |
top: -112px; | |
left: 50%; | |
transform: translateX(-50%); | |
&:hover .flip, | |
&.hover .flip { | |
transform: rotateY(180deg); | |
} | |
.front, | |
.back { | |
width: 400px; | |
height: 250px; | |
border-radius: 15px; | |
backface-visibility: hidden; | |
background: linear-gradient(135deg, #bd6772, #53223f); | |
position: absolute; | |
color: #fff; | |
font-family: Inconsolata; | |
top: 0; | |
left: 0; | |
text-shadow: 0 1px 1px hsla(0, 0, 0, 0.3); | |
box-shadow: 0 1px 6px hsla(0, 0, 0, 0.3); | |
&::before { | |
content: ''; | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
top: 0; | |
left: 0; | |
background: url('http://cdn.flaticon.com/svg/44/44386.svg') no-repeat center; | |
background-size: cover; | |
opacity: .05; | |
} | |
} | |
.flip { | |
transition: 0.6s; | |
transform-style: preserve-3d; | |
position: relative; | |
} | |
.logo { | |
position: absolute; | |
top: 9px; | |
right: 20px; | |
width: 60px; | |
svg { | |
width: 100%; | |
height: auto; | |
fill: #fff; | |
} | |
} | |
.front { | |
z-index: 2; | |
transform: rotateY(0deg); | |
} | |
.back { | |
transform: rotateY(180deg); | |
.logo { | |
top: 185px; | |
} | |
} | |
.chip { | |
position: absolute; | |
width: 60px; | |
height: 45px; | |
top: 20px; | |
left: 20px; | |
background: linear-gradient(135deg, hsl(269,54%,87%) 0%,hsl(200,64%,89%) 44%,hsl(18,55%,94%) 100%);; | |
border-radius: 8px; | |
&::before { | |
content: ''; | |
position: absolute; | |
top: 0; | |
bottom: 0; | |
left: 0; | |
right: 0; | |
margin: auto; | |
border: 4px solid hsla(0, 0, 50, .1); | |
width: 80%; | |
height: 70%; | |
border-radius: 5px; | |
} | |
} | |
.strip { | |
background: linear-gradient(135deg, hsl(0, 0, 25%), hsl(0, 0, 10%)); | |
position: absolute; | |
width: 100%; | |
height: 50px; | |
top: 30px; | |
left: 0; | |
} | |
.number { | |
position: absolute; | |
margin: 0 auto; | |
top: 103px; | |
left: 19px; | |
font-size: 38px; | |
} | |
label { | |
font-size: 10px; | |
letter-spacing: 1px; | |
text-shadow: none; | |
text-transform: uppercase; | |
font-weight: normal; | |
opacity: 0.5; | |
display: block; | |
margin-bottom: 3px; | |
} | |
.card-holder, | |
.card-expiration-date { | |
position: absolute; | |
margin: 0 auto; | |
top: 180px; | |
left: 19px; | |
font-size: 22px; | |
text-transform: capitalize; | |
} | |
.card-expiration-date { | |
text-align: right; | |
left: auto; | |
right: 20px; | |
} | |
.ccv { | |
height: 36px; | |
background: #fff; | |
width: 91%; | |
border-radius: 5px; | |
top: 110px; | |
left: 0; | |
right: 0; | |
position: absolute; | |
margin: 0 auto; | |
color: #000; | |
text-align: right; | |
padding: 10px; | |
label { | |
margin: -25px 0 14px; | |
color: #fff; | |
} | |
} | |
} |
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://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet" /> | |
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" /> | |
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet" /> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment