HTML5 Features also use in asp.net this is the good .
New Doctype
Still using that pesky, impossible-to-memorize XHTML doctype?- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <!DOCTYPE html>
doctype
. Browsers that do not understand this
doctype will simply render the contained markup in standards mode. So,
without worry, feel free to throw caution to the wind, and embrace the
new HTML5 doctype.The Figure Element
Consider the following mark-up for an image:- <img src="path/to/image" alt="About image" />
- <p>Image of Mars. </p>
<figure>
element. When combined with the <figcaption>
element, we can now semantically associate captions with their image counterparts.- <figure>
- <img src="path/to/image" alt="About image" />
- <figcaption>
- <p>This is an image of something interesting. </p>
- </figcaption>
- </figure>
<small> Redefined
Not long ago, I utilized the<small>
element to create subheadings that are closely related to the logo.
It’s a useful presentational element; however, now, that would be an
incorrect usage. The small
element has been redefined, more
appropriately, to refer to small print. Imagine a copyright statement
in the footer of your site; according to the new HTML5 definition of
this element; the <small>
would be the correct wrapper for this information.
The small
element now refers to “small print.”
No More Types
for Scripts and Links
You possibly still add the type
attribute to your link
and script
tags.- <link rel="stylesheet" href="path/to/stylesheet.css" type="text/css" />
- <script type="text/javascript" src="path/to/script.js"></script>
type
attribute all together.- <link rel="stylesheet" href="path/to/stylesheet.css" />
- <script src="path/to/script.js"></script>
To Quote or Not to Quote.
…That is the question. Remember, HTML5 is not XHTML. You don’t have to wrap your attributes in quotation marks if you don’t want to you. You don’t have to close your elements. With that said, there’s nothing wrong with doing so, if it makes you feel more comfortable. I find that this is true for myself.- <p class=myClass id=someId> Start the reactor.
Make your Content Editable
contenteditable
.
As the name implies, this allows the user to edit any of the text
contained within the element, including its children. There are a
variety of uses for something like this, including an app as simple as a
to-do list, which also takes advantage of local storage.- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>untitled</title>
- </head>
- <body>
- <h2> To-Do List </h2>
- <ul contenteditable="true">
- <li> Break mechanical cab driver. </li>
- <li> Drive to abandoned factory
- <li> Watch video of self </li>
- </ul>
- </body>
- </html>
<ul contenteditable=true>
Email Inputs
If we apply atype
of “email” to form inputs, we can instruct the browser to only
allow strings that conform to a valid email address structure. That’s
right; built-in form validation will soon be here! We can’t 100% rely on
this just yet, for obvious reasons. In older browsers that do not
understand this “email” type, they’ll simply fall back to a regular
textbox.- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="utf-8">
- <title>untitled</title>
- </head>
- <body>
- <form action="" method="get">
- <label for="email">Email:</label>
- <input id="email" name="email" type="email" />
- <button type="submit"> Submit Form </button>
- </form>
- </body>
- </html>
At this time, we cannot depend on browser validation. A server/client side solution must still be implemented.It should also be noted that all the current browsers are a bit wonky when it comes to what elements and attributes they do and don’t support. For example, Opera seems to support email validation, just as long as the
name
attribute is specified. However, it does not support the placeholder
attribute, which we’ll learn about in the next tip. Bottom line, don’t
depend on this form of validation just yet…but you can still use it!Placeholders
Before, we had to utilize a bit of JavaScript to create placeholders for textboxes. Sure, you can initially set thevalue
attribute how you see fit, but, as soon as the user deletes that text and clicks away, the input will be left blank again. The placeholder
attribute remedies this.- <input name="email" type="email" placeholder="doug@givethesepeopleair.com" />
placeholder
attribute, no harm done.
The Semantic Header
and Footer
Gone are the days of:- <div id="header">
- ...
- </div>
- <div id="footer">
- ...
- </div>
id
is applied. Now, with HTML5, we have access to the <header>
and <footer>
elements. The mark-up above can now be replaced with:- <header>
- ...
- </header>
- <footer>
- ...
- </footer>
It’s fully appropriate to have multipleTry not to confuse these elements with the “header” and “footer” of your website. They simply refer to their container. As such, it makes sense to place, for example, meta information at the bottom of a blog post within theheader
s andfooter
s in your projects.
footer
element. The same holds true for the header
.Autofocus Attribute
Again, HTML5 removes the need for JavaScript solutions. If a particular input should be “selected,” or focused, by default, we can now utilize theautofocus
attribute.- <input type="text" name="someInput" placeholder="Douglas Quaid" required autofocus>
"autofocus=autofocus"
feels odd. As such, we’ll stick with the single keyword approach.Audio Support
No longer do we have to rely upon third party plugins in order to render audio. HTML5 now offers the<audio>
element. Well, at least, ultimately, we won’t have to worry about these
plugins. For the time being, only the most recent of browsers offer
support for HTML5 audio. At this time, it’s still a good practice to
offer some form of backward compatibility.- <audio autoplay="autoplay" controls="controls">
- <source src="file.ogg" />
- <source src="file.mp3" />
- <a href="file.mp3">Download this file.</a>
- </audio>
When Safari loads the page, it won’t recognize that .ogg format, and will skip it and move on to the mp3 version, accordingly. Please note that IE, per usual, doesn’t support this, and Opera 10 and lower can only work with .wav files
Video Support
Much like the<audio>
element, we also, of course, have HTML5 video as well in the new browsers! In fact, just recently, YouTube announced a new HTML5 video embed
for their videos, for browsers which support it. Unfortunately, again,
because the HTML5 spec doesn’t specify a specific codec for video, it’s
left to the browsers to decide. While Safari, and Internet Explorer 9
can be expected to support video in the H.264 format (which Flash
players can play), Firefox and Opera are sticking with the open source
Theora and Vorbis formats. As such, when displaying HTML5 video, you
must offer both formats.Preload Videos
Thepreload
attribute does exactly what you’d guess. Though, with that said, you
should first decide whether or not you want the browser to preload the
video. Is it necessary? Perhaps, if the visitor accesses a page, which
is specifically made to display a video, you should definitely preload
the video, and save the visitor a bit of waiting time. Videos can be
preloaded by setting preload="preload"
, or by simply adding preload
. I prefer the latter solution; it’s a bit less redundant.- <video preload>
Display Controls
If you’re working along with each of these tips and techniques, you might have noticed that, with the code above, the video above appears to be only an image, without any controls. To render these play controls, we must specify thecontrols
attribute within the video
element.- <video preload controls>
Regular Expressions
How often have you found yourself writing some quickie regular expression to verify a particular textbox. Thanks to the newpattern
attribute, we can insert a regular expression directly into our markup.- <form action="" method="post">
- <label for="username">Create a Username: </label>
- <input type="text"
- name="username"
- id="username"
- placeholder="4 <> 10"
- pattern="[A-Za-z]{4,10}"
- autofocus
- required>
- <button type="submit">Go </button>
- </form>
[A-Za-z]{4,10}
accepts only upper and lowercase letters. This string must also have a minimum of four characters, and a maximum of ten.Notice that we’re beginning to combine all of these new awesome attributes!
Detect Support for Attributes
What good are these attributes if we have no way of determining whether the browser recognizes them? Well, good point; but there are several ways to figure this out. We’ll discuss two. The first option is to utilize the excellent Modernizr library. Alternatively, we can create and dissect these elements to determine what the browsers are capable of. For instance, in our previous example, if we want to determine if the browser can implement thepattern
attribute, we could add a bit of JavaScript to our page:- alert( 'pattern' in document.createElement('input') ) // boolean;
input
element, and determining whether the pattern
attribute is recognized within. If it is, the browser supports this functionality. Otherwise, it of course does not.- <script>
- if (!'pattern' in document.createElement('input') ) {
- // do client/server side validation
- }
- </script>
Mark Element
Think of the<mark>
element
as a highlighter. A string wrapped within this tag should be relevant to
the current actions of the user. For example, if I searched for “Open
your Mind” on some blog, I could then utilize some JavaScript to wrap
each occurrence of this string within <mark>
tags.- <h3> Search Results </h3>
- <p> They were interrupted, just after Quato said, <mark>"Open your Mind"</mark>. </p>
When to Use a <div>
Some of us initially questioned when we should use plain-olediv
s. Now that we have access to header
s, article
s, section
s, and footer
s, is there ever a time to use a…div
? Absolutely.
Div
s should be utilized when there’s no better element for the job.
For
example, if you find that you need to wrap a block of code within a
wrapper element specifically for the purpose of positioning the content,
a <div>
makes perfect sense. However, if you’re
instead wrapping a new blog post, or, perhaps, a list of links in your
footer, consider using the <article>
and <nav>
elements, respectively. They’re more semantic.What is Not HTML5
People can be forgiven for assuming that awesome JavaScript-less transitions are grouped into the all-encompassing HTML5. Hey — even Apple has inadvertently promoted this idea. For non-developers, who cares; it’s an easy way to refer to modern web standards. However, for us, though it may just be semantics, it’s important to understand exactly what is not HTML5.- SVG: Not HTML5. It’s at least five years old.
- CSS3: Not HTML5. It’s…CSS.
- Geolocation: Not HTML5.
- Client Storage: Not HTML5. It was at one point, but was removed from the spec, due to the fact that many worried that it, as a whole, was becoming too complicated. It now has its own specification.
- Web Sockets: Not HTML5. Again, was exported to its own specification.