So, in this post we are going to create a login page using HTML5 forms to see how the new added features work.
HTML5 Input
Let’s take a look at the following markup.<section class="loginform cf">If you have been working with HTML forms before, this will look familiar. But, you’ll also notice differences there. The inputs have
<form name="login" action="index_submit" method="get" accept-charset="utf-8">
<ul>
<li><label for="usermail">Email</label>
<input type="email" name="usermail" placeholder="yourname@email.com" required></li>
<li><label for="password">Password</label>
<input type="password" name="password" placeholder="password" required></li>
<li>
<input type="submit" value="Login"></li>
</ul>
</form>
</section>
placeholder
and required
attributes, which are new attributes in HTML5.Placeholder
Theplaceholder
attribute allows us to give initial text in the input that will disappear when it is in a focus
state or being filled in. Previously, we used to do it with JavaScript, but now it becomes a lot easier with this new attribute.Required Attribute
Therequired
attribute will set the field to be mandatory and thus should not be left blank before the form is submitted, so when the user hasn’t filled in the field, the following error will appear.New selector is also introduced in CSS3,
:required
to target fields with required
attribute. Here is an example;input:required {
border: 1px solid red;
}
Email Input Type
The first input type isemail
which is actually a new field type added in HTML5 as well. The email
type will give basic email address validation in the field. When the user doesn’t fill the field with an email address, the browser will show the following notification;Using email input types can also give better experience for mobile users, like iPhone and Android users, where it will show the email-optimized on-screen keyboard with a dedicated “@” button to help type email address faster.
The Downsides
The new form features offered in HTML5 are powerful and easy to implement, but they are still lack in some areas. For instance;The
placeholder
attribute, is only supported in modern browsers — Firefox 3.7+, Safari 4+, Chrome 4+ and Opera 11+. So, should you need it to work in unsupported browsers, you can use this polyfills in conjunction with Modernizr.The same thing goes with the
required
attribute. The error notification cannot be personalized, the error will remain “Please fill out this field” rather than “Please fill out your First Name”, this attribute support is also limited to the latest browsers.So, using JavaScript to validate the required field is (so far) a better option.
function validateForm()
{
var x=document.forms["login"]["username"].value;
if (x==null || x=="")
{
alert("Please fill out the username");
return false;
}
}
Styling the Forms
Alright, now let’s decorate our login form with CSS. First we will give the background a wood pattern in thehtml
tag.html {Then, we need to remove the default padding and margin in
background: url('wood_pattern.png');
font-size: 10pt;
}
ul
tag that wraps the entire inputs
and floats the li
to the left, so the inputs will be displayed horizontally, side by side..loginform ul {Since we float the
padding: 0;
margin: 0;
}
.loginform li {
display: inline;
float: left;
}
li
, the parents will collapse, so we need to clear things around the parent with the clearfix hack.label {In CSS3 we have the negation selector. So, we will use it to target inputs other than the
display: block;
color: #999;
}
.cf:before,
.cf:after {
content: "";
display: table;
}
.cf:after {
clear: both;
}
.cf {
*zoom: 1;
}
:focus {
outline: 0;
}
submit
type, which in this case will target the email and password input;.loginform input:not([type=submit]) {Lastly, we will give a little style decoration for the Submit button, as follows.
padding: 5px;
margin-right: 10px;
border: 1px solid rgba(0, 0, 0, 0.3);
border-radius: 3px;
box-shadow: inset 0px 1px 3px 0px rgba(0, 0, 0, 0.1),
0px 1px 0px 0px rgba(250, 250, 250, 0.5) ;
}
.loginform input[type=submit] {That’s it, now you can try the login form from the following links.
border: 1px solid rgba(0, 0, 0, 0.3);
background: #64c8ef; /* Old browsers */
background: -moz-linear-gradient(top, #64c8ef 0%, #00a2e2 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#64c8ef), color-stop(100%,#00a2e2)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, #64c8ef 0%,#00a2e2 100%); /* IE10+ */
background: linear-gradient(to bottom, #64c8ef 0%,#00a2e2 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#64c8ef', endColorstr='#00a2e2',GradientType=0 ); /* IE6-9 */
color: #fff;
padding: 5px 15px;
margin-right: 0;
margin-top: 15px;
border-radius: 3px;
text-shadow: 1px 1px 0px rgba(0, 0, 0, 0.3);
}
Final Words
In this tutorial we looked into a few new features in HTML5 forms:placeholder
, required
and email
input types to create a simple login page. We have also come through the downsides of the attributes, so we can decide a better approach to be applied.Courtessy to Hongkiat.com
0 nhận xét:
Đăng nhận xét