Turn your registration process into a fun experience for the users

We’re re-creating the readme.io login form and adapting it into a registration form by adding fields.

The Registration form is a very important part of your website, especially if you run an online shop or a community. A tedious registration process equals losing potential clients or quality users.

On the other hand, an engaging one will not only fix that problem, but can actually become a powerful marketing tool when users recommend you based on their pleasant experience.

A good example of attractive and fun registration process is readme.io, a form that we’ve been admiring for some time. They updated it relatively recently, and this tutorial covers the new version. We’re re-creating the awesome readme.io login form and adapting it into a registration form by adding fields.

The form is comprised of html, css, 6 images (for the owl) and a few javascript lines. Please note that the javascript part is jQuery dependent.

Demo Download
Step 1 · HTML
<form class="login-form" action="" method="post">
    <div id="owl-login"></div>
    <div class="form-wrapper">
        <div class="field-wrapper"><label class="fa fa-user" for="name"></label> <input id="name" name="name" type="text" placeholder="Name" /></div>
        <div class="field-wrapper"><label class="fa fa-envelope" for="email"></label> <input id="email" name="email" type="email" placeholder="Email" /></div>
        <div class="field-wrapper"><label class="fa fa-asterisk" for="password"></label> <input id="password" name="password" type="password" placeholder="Password" /></div>
        <div class="field-wrapper"><label class="fa fa-asterisk" for="password-confirm"></label> <input id="password-confirm" name="password-confirm" type="password" placeholder="Confirm Password" /></div>
    </div>
    <div class="form-actions"><a href="#">Forgot password?</a> <a href="#">Login</a> <button class="btn" type="submit">Register</button></div>
</form>
Step 2 · CSS
body {
    background: #eee;
    font-family: 'Open Sans', sans-serif;
    font-size: 16px;
}

*,
*:before,
*:after {
    box-sizing: border-box;
}

.login-form {
    position: relative;
    border: 1px solid #ddd;
    background: #fff;
    padding: 0;
    margin: 200px auto 0;
    width: 400px;
}

.form-wrapper {
	padding: 30px;
}

.field-wrapper {
    position: relative;
    margin-bottom: 10px;
}

.field-wrapper:last-of-type {
    margin-bottom: 0;
}

.field-wrapper label {
    position: absolute;
    top: 13px;
    left: 13px;
    color: rgba(0, 0, 0, .3);
}

.field-wrapper input[type="text"],
.field-wrapper input[type="email"],
.field-wrapper input[type="password"] {
    padding: 9px 6px 9px 40px;
    display: block;
    width: 100%;
    font-size: 14px;
    line-height: 1.5;
    color: #555;
    background: #fff;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
    transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
    outline: none;
}

.form-actions {
    border-top: 1px solid #e4e4e4;
    background-color: #f7f7f7;
    padding: 15px 30px;
    text-align: right;
}

.form-actions a {
    text-decoration: none;
    color: #bbb;
    padding: 6px 12px 6px 0;
    font-size: 14px;
}

.form-actions a:first-of-type {
    float: left;
}

.login-form .btn {
    display: inline-block;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.5;
    text-align: center;
    white-space: nowrap;
    border-radius: 4px;
    color: #fff;
    background: #428bca;
    border: 1px solid #357ebd;
}

#owl-login {
    width: 116px;
    height: 92px;
    background: url('images/face.png');
    position: absolute;
    top: -82px;
    left: 50%;
    margin-left: -58px;
}

#owl-login .eyes {
    width: 100%;
    height: 100%;
    background: url('images/eyes.png');
    opacity: 0;
    transition: 0.1s ease-out 0s;
}

#owl-login .arm-up-right {
    width: 51px;
    height: 41px;
    position: absolute;
    bottom: 11px;
    right: 5px;
    transform: translateX(57px) scale(.8);
    transform-origin: 0 40px;
    transition: background-position 0.3s ease-in-out, transform 0.3s ease-in-out, opacity 0.3s linear;
    background: url('images/arm-up-right.png') no-repeat 0 25px;
    opacity: 0;
}

#owl-login .arm-up-left {
    width: 52px;
    height: 41px;
    position: absolute;
    bottom: 11px;
    left: -3px;
    transform: translateX(-34px) scale(.8);
    transform-origin: 0 40px;
    transition: background-position 0.3s ease-in-out, transform 0.3s ease-in-out, opacity 0.3s linear;
    background: url('images/arm-up-left.png') no-repeat 0 25px;
    opacity: 0;
}

#owl-login .arm-down-left {
    width: 43px;
    height: 25px;
    background: url('images/arm-down-left.png');
    position: absolute;
    bottom: 2px;
    left: -34px;
    transition: 0.3s ease-out;
}

#owl-login .arm-down-right {
    width: 43px;
    height: 26px;
    background: url('images/arm-down-right.png');
    position: absolute;
    bottom: 1px;
    right: -40px;
    transition: all 0.3s ease-in-out;
}

#owl-login.password .arm-up-left,
#owl-login.password .arm-up-right {
    opacity: 1;
    transform: scale(1);
    background-position: 0 0;
}

#owl-login.password .arm-down-left {
    opacity: 0;
    transform: translateX(10px) scale(0) translateY(-10px);
}

#owl-login.password .arm-down-right {
    opacity: 0;
    transform: translateX(12px) scale(0) translateY(-8px);
}
Step 3 · JS (jQuery required)
jQuery(document).ready(function ($) {

    var $owl = $('#owl-login');

    $('input[type="password"]').on('focus', function () {
        $owl.addClass('password');
    }).on('focusout', function () {
        $owl.removeClass('password');
    });

});

DISCLAIMER: the owl images are from readme.io and we use them for the sole purpose of this tutorial.