Subtitles section Play video Print subtitles Today we're going to cover a couple of the big important things. The first one: What is HTML5? The second one: How can I start using it? Very, very important questions. We're going to get through them in the next half an hour. My name is Jim. I live in Washington D.C., and I'm a Web developer. Today's big ideas... Number one: HTML5 is actually a catchphrase for bunch of new things. It's not just one thing; it's a bunch of things. We're going to cover what those things are. Big Idea #2: HTML5 is flexible. It's actually more flexible than what came before it. We're going to talk about that and why that's the case. Number three: HTML5 has new tags that you can use in your Web pages. And Big Idea #4: these new tags work in old browsers. So you can use HTML5 today. Well, you can use some of it today. Some of it you can't. Some of it only works in certain browsers. This is a way of the Internet and we have come to accept this. But there's a lot of stuff that you can do today. By the end of the session if you don't know it already you're gonna know what that stuff is. Let's begin. Big Idea #1: HTML5 is actually a catchphrase for a bunch of new things. It's a catchphrase for new HTML tags. Things that weren't available to you before...new tags are now available to you. New shiny CSS properties including things like drop shadows, opacity, animations, transitions. We're going to talk about those a little bit. And new Javascript...all kinds of things... a lot of things actually oriented towards mobile devices. We'll talk about those a little bit too. All these things HTML, CSS and Javascript are collectively called HTML5. There's a bunch of stuff that's not HTML, but it's still kinda called this because it gained some momentum... this catchphrase HTML5 for the new shiny. And so, let's talk about what some of those things are. First, let's talk about actual real HTML. The Doctype... you know the Doctype. You've seen something like this at the top of your web pages. A big complex set of statements that describe what specific flavor of HTML the document is. Well, HTML5 does away with the specific flavor and says just this. The Doctype is just HTML. It's not HTML5. It's not HTML4. It's not HTML6. It's just standard HTML. Unbelievably, this Doctype, as simple as it is, works all the way back to IE6. It works in old browsers because all it's telling browsers is this is standard HTML. This is a sea change (meaning a big change) from what came before, in which the Doctype specifically said "no this is HTML4" and "this over here is HTML4.01" and "this one's xHTML1". This is different. A new thing in HTML5 is taking tags...tags like this. We all have tags like this in our layouts. Divs for headers, nav and footers. This might be how you've assigned ID's to those particular things. Well, in HTML5 the folks who came up with it said people need headers, navs and footers all the time so let's make tags for them. Just make it easy and make it semantically correct and easier for search engines. Make tags that describe what the thing actually is. There are a bunch of new tags. Here are some of them. I'm gonna show you even more before this half hour is up. Another new thing in HTML - better forms. Here's an example. The input tag is where you type in stuff or you deliver input in a form. The most common one is the input with a type parameter of text. This on an Android phone, like the screenshot we're seeing right here, just a little place where you can put in some text and the Android phone pops up a little keyboard and you type in your search term or whatever. Well, HTML5 introduces a bunch of new types of parameters that you can put in. You can have a type that's specifically for searching, one for email, one for websites, for URLs, one for telephones, ranges which is a number from one to a hundred, say. And if you take this example like an input type of telephone, it's still a box where you type in information, but the Android keyboard changed. Android is smart enough to say, "it's a type of telephone...they don't care about letters, they just need numbers." Now, if you use the input type tel in an old browser, you're gonna get the standard input box, no problem at all, it's backwards compatible. But new browsers, like this one, that understand this type of telephone will work better. More greatness in HTML5 - Form Validation. Things that can happen without having to resort to Javascript, though Javascript and server-side validation is always a good idea. Microdata - describing in more detail elements on your page. Great for search engines, great for accessibility. Native audio and video without Flash - this is probably one of the most heralded new things in HTML5. It's the whole thing around the iPhone and the iPad not using Flash but still being able to look at YouTube videos, and being able to put Vector graphics on your web page; being able to take an Illustrator file or Vector file and put it on your web page in a way that looks good at any size and on any display. That's a bunch of HTML stuff that's part of HTML5, but that's not all. We got new shiny CSS stuff that's part of this thing known collectively as HTML5. Here's some of the new shiny: Opacity - you can take two divs and give them a background color that is this blue, like what's described here, but give it an opacity - this RGBA designation - red, green, blue and alpha. The alpha is the last number - 0.8 and that's 80 percent opacity. Just like in Photoshop taking a layer to 80 percent of opacity. You can do gradients straight in CSS. Here's an example of one. You could do linear and radial gradients. You can do bunches of gradients stacked on top of each other. You can do rounded corners. Take a div, give it a nice rounded corner without having to resort to background images or divs within divs. The box shadow - you can take a div and put a drop shadow behind that div and control the elements of that shadow. You can take the same div and instead of the shadow being dark, you can have the shadow be light and create a glow effect. You can put shadow not just on boxes but on text. You can transform elements. For instance, this one is rotated 30 degrees. This one is skewed 30 degrees. You can put those together. And you can also create 3-D transforms, in which things can look like they are moving in space. And you've got animations. CSS animations allow moving from from one position or one CSS state to another CSS state. Lots and lots of great CSS stuff that's now available to you including web fonts, having multiple columns within a div, multiple backgrounds, images in the borders, transitions, transformations in 3-D, new selectors, changing how the box model works, and creating outlines in addition to borders. That's just some of the stuff that's new in CSS. There's new and shiny Javascript as well. There's drag and drop. It's a fantastic thing. You can actually see this in gmail today. If you go into your gmail - if you have gmail, of course - you can drag a file from your desktop directly into gmail and it'll upload it to the website. That's all happening through Javascript, and that's Javascript that's now available, and it wasn't available before. That's part of this collective thing called HTML5. Canvas - it's kind of like a competitor to Flash. It's the ability to draw graphics on the screen and have them animate and be interactive. This is sort of a silly example. More great stuff, you've got Geolocation - the ability for Javascript to understand where the device is if the device supports it. For instance, a mobile phone. Offline browsing, also great for mobile phones and a way for a website to be able to be saved so you can browse it even when you're not directly connected the internet. Local storage, which is like cookies on crack. You can store megabytes of data instead of just a couple of kilobytes and you can access it like a database. All of that stuff is part of this thing collectively known as HTML5, even though a bunch of it has absolutely nothing to do with regular HTML. That was Big Idea #1, that HTML5 is actually a catchphrase for a bunch of new things. Okay, wait, wait, hang on a second, I wasn't taking notes. How do I know what this thing was? And what about that... web fonts? And what about the canvas? How'd I make the unicorn that does the pooping rainbow? Well the answer is read the books. As part of this program, you have books that are available to you for free for a month including these two beauties by the folks at "A Book Apart". These two books, if you have not read them, are short and sweet. They're well-written. They're technically precise...very, very good introductions. There are lots of others, too. I'm not saying these are the only books. There are lots and lots of books about HTML5 and its various things. Another good website I'm going to recommend to you... I'm just gonna jump in and recommend this to you... there's one called caniuse.com. Let's you know what you can use in particular browsers...a fantastic reference. Let's talk a little bit more about the HTML part of HTML5. The rest of this presentation is not going to be about CSS or Javascript, but just about HTML. Big Idea #2 - HTML5, the actual HTML part, is more flexible than what came before it, more flexible than HTML4. This is a sea change (meaning a big change). Usually things are less flexible as you move on in versions. This is actually the opposite. Let me give you some examples here. First the example that we've already seen. The new Doctype is extremely simple and will work in HTML6, if there ever is such a thing, and 7 and 8. This Doctype is the new Doctype to stay. Let me give you another example. Take this picture of Justin Bieber, please. The syntax here that you're seeing for this IMG tag is xHTML syntax. The reason I know this is because it's a self closing tag but it has this slash here at the end. That's xHTML. If you don't have the slash, this guy is no good. This tag in HTML - no good! Might still work...you might still be able to get away with it. But this is HTML, that's xHTML. Well, here's the deal. In HTML5, this tag is a-ok, no problem. So is this tag. Either one is completely fine. It makes no difference whether you have that slash or do not have that slash. What's more, this tag is okay, too. You don't even have to have the quotation marks. Not only can you get away with it, but it's actually valid HTML5. It won't even complain. It is legal and okay. So is this guy. UPPERCASE, lowercase, it does not matter. HTML5 don't care! You can do anything you want in those examples and it's perfectly legal. Let me show you another example. Here's a long introduction to a webpage. We've all seen something like this. This is an example that's xHTML one transitional. And you've got a long Doctype here. You've got the xML name space and the HTML tag. You've got some meta tags on the script tag down here. You've also have the type because it's text Javascript and the language because it's Javascript. The reason you've got to have these, for instance, is that there could be another scripting language other than Javascript and so you need to tell the browser, "Hey, what I'm about to show you isn't VB script or action script. (I mean those are bad examples.) But it's specifically Javascript." In HTML5, all this is vastly simpler. They said, "You know what? If you've got a script tag, let's just assume it's Javascript unless you tell us differently." This is the simplified version of the page that you just saw. Very, very simple Doctype. You've got to have this meta tag here. The style sheet tag is simple and the script tag is much, much simpler. These two tags are the tags that make this document HTML5. The Doctype - you've got to have. The meta tag - well you don't have to have this but it won't validate without it. What this does is it says the characters that you're about to see are encoded in this particular format, UTF 8. That's what's going on with that meta tag right there. Okay, let's look at an example together. The example I'm showing you is this HTML page that I have created... Okay sorry not The Pisco Sour, we'll have that one for later. This HTML page I'm loading up here in jsbin.com. It's like JS Fiddle. It's sort of an equivalent of that, but it's got a nice thing in which I can edit HTML here and I can see the output directly here. This is a page that I jigged up for you. It's an homage to "Arrested Development" - for those of you who don't get the joke. And these over here - this HTML here, these divs are what you're seeing over here. The JS Bin website - what it does is if I edit text right here, like I had some exclamation points, you see it immediately here on the right-hand side. So I'm just giving you the lay of the land of what you're seeing here in this particular screenshot. So, this document that we're looking at right here has a Doctype that's xHTML1 transitional. It's got all the important things for an xHTML document. In order to prove that this is a valid document, I'm gonna take all of this, I'm gonna copy it, and I'm gonna paste it into the W3C markup validation service. So we're gonna see if this example that I've just given you is valid xHTML. And it is. This guy is successfully checked as xHTML 1.0 transitional. So this guy is good to go. We're gonna transform this into HTML5. We're gonna do it together. Watch. You only have to do two things. First thing you have to do is take this Doctype - this big, long sucker - lop off all the stuff on the end. Doctype HTML. Boom! Second thing I've got to do in order to make it validate - I don't "technically" have to do it but it won't validate without it - is change this meta tag here with the charset of UTF 8. It gives a slightly different syntax than what came before it but it looks like that. That's it! This is now valid HTML5. All this other stuff like the xML namespace that stuff which is hold-overs from xHTML - totally fine! HTML5 doesn't mind that it's there. It doesn't hurt anything. It's completely legal. Not necessary, but it's completely legal. Let me select this. Gonna copy it and we're gonna come back over and paste it into W3C validator and revalidate this and we're gonna see what happens. Hey, check it out! It is valid HTML5 now. We're good to go. That's all it took to transform this document from xHTML to HTML5. Hang on one second. Kevin's got a question for me. Yes Kevin? Kevin: I've got 2 quick questions on HTML5 syntax. The first is the syntax is a lot more flexible in HTML5. Is that backwards compatible? Jim: It is backwards compatible. That's a fantastic question! The reason it's backwards compatible is that this Doctype tells all browsers including older browsers to operate in standards mode. So that means that the stuff that comes after it will just be rendered as standard HTML. Now if you've got a kludgy HTML that doesn't follow one of the standards, like it's okay if it's got quotation marks or doesn't have quotation marks or it's UPPERCASE or lowercase. But if you do something crazy that you might have been able to get way with before because quirks mode in IE, for instance, let you get away with it but you might not be able to. But otherwise the syntax is completely valid. Kevin, you said you had another question. Was there something else? Kevin: Is there any instance where you absolutely need a forward slash and caret or a certain syntax in HTML5? Jim: That's also a fantastic question! There are certain instances in which the syntax is important like in any HTML, but the specific example of the forward slash, the slash and the caret or the right corner bracket here. Completely fine either way, like I said. In terms of other things, there are some syntactical things that are even more flexible than what came before. For instance, if you wanted to link this headline here, 'The Bob Loblaw Law Blog', to a website - a normal way to do it would be something like this. I don't know if this is a real URL or not. And then you close that A tag there. That would create a link for this headline. Now, if you wanted to also link the second headline, in order to do that properly in original HTML you'd have to copy and paste that link the same way. Well, in HTML5 and in older browsers using this syntax it's completely legit to put the A tag around both of the headlines. This is an A tag around two block level elements. You could get away with this before, but it wasn't legal and now it's legal. So you can not only get away with it but it's legal and it works in old browsers. That's a great question! If you've got more questions and follow up questions, we'll save them for the Q&A and we'll be able to talk about them in the forum afterwards. Let's keep going with the presentation, please. HTML5 is flexible. Let's go to Big Idea #3. We're gonna move fast now. HTML5 has new tags. Here are all the new tags in HTML5. You can use any of these. However, not all these tags are useful for most people most of the time. These are the tags that are useful for most people most of the time. The tags that mark out specific elements of a page that have semantic meaning. Let me show you an example. Let's take this webpage that's got sort of a standard layout that we're accustomed to - a header, a nav bar, a body, a sidebar area and a footer. If you were laying those out in HTML today those would be divs. You'd probably want to apply IDs or classes to those divs. But the IDs or classes that you apply are completely up to you as the writer of the document. So, I might call this header and you might call it headline. I might call it global nav and you might call it main nav. Tomato (toe-may-toe) - tomato (toe-mah-toe). It's entirely up to you what that is. Well, the folks who created HTML5 said no let's standardize these so it's easier for engines and easier for inner-operability. So they created tags that kind of relate to these things. We've got the header tag; the nav tag for navigation - you can have more than one, that's completely fine; section for a generalized kind of section on a page; an article for a self-contained piece of content; a side, which is the nerdy way of saying sidebar; and a footer. So, let's put this into practice. Let's go back to our 'Arrested Development' example, here. We've got a box here that's our div ID of container, and inside the container we've got a headline. The headline has this nice, little double rule below it and it's centered, and then you've got the body down below. Let's convert these regular tags into HTML5 friendly tags. We'll start with this first one - div ID of container. We're going to change this to an article tag because the stuff that's inside this tag comprises a self-contained piece of silly content. I've got an article tag. I took the closing div tag and replaced it with a closing article tag. Uh oh! My CSS went away. Oh dear! What am I gonna do? Well, it's just as simple as coming up here and taking the selector that was once applying to that container and changing it our new tag. It's a tag - the article tag - so it doesn't take a pound sign or a dot. It's just a tag. And BOOM our CSS is back! We're going to do the same thing here. This section here with this H1 and this H2 are combined to make sort of a headline for us and that's what the div is called now. We're gonna change that to the header tag and give it a closing header tag. Welp... our CSS went away. It's easy to fix. Come back up here to the selector that it once was and change it to our new selector. We've gotta change in a couple of different places because that's what we've done with our CSS. And BOOM! - we have our layout back exactly the way it was. So using these new tags, especially in modern browsers, is just as simple as using them. Now, just like any tag, we can give this article a class of 'silly'. Classes, IDs - they all work the exact same way that they did before, it's just a new set of tags that you can use. HTML5 has these new tags that are available to you to use. Okay now, your next question, if you're smart and you're like me, is gonna be, 'Alright, what about old browsers? I work in a place where we care about old versions of old browsers. This stuff's gotta work.' Well the deal is these tags work in old browsers as long as you give them some help. Okay, so some browsers can have a really hard time with new tags. They don't understand. You have to do some fancy stuff to let them recognize these new tags. Now I'm not gonna name names as to which browsers are going to give us the hardest time, but what I am gonna say is there's a fix. What the fix is is Javascript. First, let me show you the problem, then I'll show you the answer. So, if I come back here to this example where I've created an article tag and a header tag and it looks really nice. Here I've got the URL for this. If I look at it in this modern browser in Chrome, it looks great, looks fantastic. Let's look at it in a not so modern browser. Let's look at it in Windows IE6 using BrowserStack here. It's a nice, little service that let's you look in old browsers. Okay, so here's what that page looks like in IE6. We've got the text. The H1 and the H2, those guys work fine. We didn't get the CSS. We lost our CSS. What's going on here? Well, did the CSS work in the first place? Yes, it did, it did work in the first place but it's not working anymore. The deal is that IE6 does not understand the article and the header elements. It needs some Javascript added in there that helps it understand. Now some nerds who are smarter than you and me combined have put some Javascript together that helps. There are two different versions of it. There are actually a bunch of different ones. These are the most popular. The first is called the HTML5 Shim, or sometimes it's called the HTM5 Shiv and they mean the same thing. I don't know why somebody thinks a knife is the same thing as a shim, but okay. The second one is called Modernizr. These are pieces of code that make old browsers, especially our friends at IE, look, rather understand, new HTML tags. Let's see this in action. So, here I've got my HTML5 code here. I'm going to add a Javascript here. This Javascript happens to be hosted on the internet on a content delivery network. So over here in my other browser I've got the address for the HTML5 Shim. Let's use that example. So, that piece of Javascript right here does absolutely nothing visual to the page. It only makes it so that old browsers understand these new tags. LEt's save this and go look at it again in Internet Explorer 6. Boom! It works. It works and I didn't have to do a darn thing. You just code correctly in HTML5. You include this piece of Javascript, the HTML5 Shim or a similar piece of Javascript called Modernizr and it just works. It's pretty delightful actually. Okay let's come back here. It just works. What Modernizr does.. okay you've got these two examples, HTML5 Shim and Modernizr. HTML5 Shim makes HTML5 tags work. Modernizr is a little bit more complex than that. If you go to the website, you can see what it is. Both of these obviously are free. They're just pieces of Javascript. They're pretty small, they don't add too much download time and you can customize them. Lots, lots more detail and examples when you go to these website. We'll post these websites, by the way, on the forum boards after this is over so you can get to these sites. And they just work. What Modernizr does on top of this is that it adds classes to your HTML. It does it through Javascript. And what it does, is it lets you as an author of CSS see what this particular browser can do or cannot do. So, here is an example of the classes that are added to the HTML tag in my modern Chrome browser on OSX. What Modernizr adds is 'not IE'. It adds a class of 'not IE' because I'm not looking on Internet Explorer. Cool! It adds a class of JS because javascript is available. And, it adds all of these other classes for things that are available on this particular page in this particular browser. Here's the same example in IE6. Javascript's available. It is IE, so that 'not IE' is not there. But then there's all this other stuff. It doesn't have Canvas. It doesn't have Canvas text. It doesn't have geo location. It doesn't have RGBA, or border radius, or box shadow or text shadow. IE6 does not offer any of these things. And what Modernizr does is it adds classes to the HTML that say so. Why does that matter? Well, it doesn't make any visual difference at all. It does it all behind the scenes. But it leaves it so that you in your CSS to write selectors that are appropriate for what the browser can do. So, you could say, "Hey, if the HTML tag has a class of text shadow then you could do something. You could apply that text shadow. If it doesn't, if it's regular HTML then it's got some fallback properties. Now tech shadow might not be the best example. There are other ways to get around it, but you can use these to get really detailed and specific CSS selectors and attributes for different browsers to make everybody have a good experience. So, how do you get started with all of these new things, with HTML5, with these new CSS properties, with Modernizr, with the HTML5 Shim with doing all this stuff? Well, this is a start, you're paying attention, you're learning about this stuff. Like I say, read the books. These two books...I wish I was getting paid by these guys. I like these books so much and I'm gonna push them on you so hard because they're really fabulous and they're really short - even better. That's it for the session. Thank you very much! I'm really delighted to have you and we hope to see you next week.
B1 US html5 html tag javascript div syntax Webcast: Transform HTML Into HTML5 41 5 La Thanh posted on 2016/04/25 More Share Save Report Video vocabulary