Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A practical guide to building websites with HTML5 & CSS3

Darren Wood
September 29, 2011

A practical guide to building websites with HTML5 & CSS3

Darren Wood

September 29, 2011
Tweet

Other Decks in Technology

Transcript

  1. HTML5 CSS3 - Greetings. I’m a designer, nerd, htmler, csser.

    i’ve built many a wordpress site. - Wordpress is HTML and CSS from top to bottom. from wp-admin to themes & plugins. Wordpress3’s default theme twenty ten is HTML5—so I thought I’d show you how you can use it now in your sites right now! - covering a lot today so stop me if you have questions - I’m no expert, just a fanboy. Every day I learn something new about HTML5 and CSS3, so please use this opportunity to teach me a thing or two, too.
  2. HTML5 CSS3 HTML5 New Elements Forms Semantics Javascript CSS3 Selectors

    Properties Fonts I’m not covering everything as there’s so much! My aim today is to show you the useful bits that I find myself using quite often.
  3. HTML5 CSS3 New Elements Forms Semantics Javascript HTML5 New Elements

    Forms Semantics Javascript CSS3 Selectors Properties Fonts I’m not covering everything as there’s so much! My aim today is to show you the useful bits that I find myself using quite often.
  4. HTML5 CSS3 New Elements Forms Semantics Javascript Selectors Properties Fonts

    HTML5 New Elements Forms Semantics Javascript CSS3 Selectors Properties Fonts I’m not covering everything as there’s so much! My aim today is to show you the useful bits that I find myself using quite often.
  5. WHATWG TF? What is HTML5 - the next version of

    HTML - html started in 1991 by TBL - historically W3C is the governing body - distracted by XML and so began the XHTML movement - XHTML2.0 complete non-backward compatible rebuild, total disaster - in 2004 some disgruntled ex w3c people formed the Web Hypertext Application Technology Work Group WHATWG - w3c = democratic vote - WHATWG = final decisions where made by one guy Ian Hickson - lots of contributors but final decision made by Iain Hickson - but now everyone is playing nicely - W3C+WHATWG are combining their efforts
  6. WHYTML5? - Built on a set of design principles, key

    one being “Support Existing Content” - Phrases like Don’t reinvent the wheel and Pave the cowpaths - if there’s a common way designers are doing something—even if it isn’t the best way—it should be put in the HTML5 standard. aka If it aint broke don’t fix it. - so html5 is built on existing standards and conventions - make your life easier - could mean your code could end looking a bit all over the place... - make your code good looking, semantic and accessible - as we move through you’ll realise why you should be using HTML5
  7. You’re all familiar with this. I spent many an angered

    hour trying to convince people this is the way to go! Things have started to change. Huge advances in mobile technology has meant that we’re having to surf the web like it’s 1999 again. High speed internet hasn’t made it into our pockets. The number of bytes and server calls are actually a concern again - who wants to pwn your mobile data plans downloading characters and bytes...
  8. That’s why this makes much more sense. It’s doing exactly

    the same thing as the previous example but is so much slimmer.
  9. For me HTML5 is more about semantics, usability and accessibility

    than syntax. The smart HTML5 people have done some serious research into the way in which we write HTML and noticed hundreds of regularly trodden paths.
  10. And this is a high level view of how those

    semantics might pan out. I’ll dive into each of the main structural elements - with reference to what the spec says and show an example. This will be a quick-fire run through. but these slides are available online for further perusal.
  11. <header> Typically used to group a set of h1–h6 elements

    to mark up a page’s title with its subtitle or tagline. May contain more than just the section’s headings and subheadings — e.g., version history information or publication date.
  12. <nav> The nav element is a section containing links to

    other documents or to parts within the current document. Not all groups of links on a page need to be in a nav element — only primary navigation links. In particular, it is common for footers to have a list of links to various key parts of a site - you wont need the nav element - the footer element will suffice.
  13. <nav> <nav>    <ul>      <li><a  href=”/”>Home</a></li>    

     <li><a  href=”/about”>About</a></li>      ...    </ul> </nav>
  14. <aside> Content that is tangentially related to the content around

    the aside element - considered separate from that content. Such sections are often represented as sidebars in printed typography.
  15. <aside> <aside>    <h2>Blogroll</h2>    <ul>      <li><a  href=”#”>Keith</a></li>

         <li><a  href=”#”>Amber</a></li>      <li><a  href=”#”>Kim</a></li>    </ul> </aside>
  16. <section> Represents a generic document or application section. A section

    is a thematic grouping of content, typically with a header, possibly with a footer. Examples: chapters in a book, various tabbed pages in a tabbed dialog box, a home page could be split into sections for an introduction, news items, contact information.
  17. <section> <section>    <h1>Level  1</h1>    <section>      

     <h1>Level  2</h1>        <section>            <h1>Level  3</h1>        </section>    </section> </section>
  18. <article> Forms an independent part of a document, page, or

    site. A forum post, a magazine or newspaper article, a Web log entry, a user-submitted comment, or any other independent item of content. Think of it as an item that can be syndicated via RSS or ATOM
  19. <article> <article>    <header>        <h1>Blog  Post  Title</h1>

           <h2>Sub  title</h2>    </header>    <p>Synergistically  optimize  flexible    communities  via  cross-­‐unit    information.  Objectively  impact    bricks-­‐and-­‐clicks  catalysts  for    change  rather  than  reliable.</p> </article>
  20. <footer> Typically contains metadata about its enclosing section, such as

    who wrote it, links to related documents, copyright data, etc.
  21. <video> Represents a video or movie. Content may be nested

    inside the video element. User agents should not show this content to the user. Authors should use this content to force older browsers to use a legacy video plugin or to inform the user of how to access the video content.
  22. <video> <video  controls  poster="poster.jpg"   width="320"  height="240">    <source  src="video.ogv"

     />    <source  src="video.m4v"  />    <!-­‐-­‐  flash  embed  here  -­‐-­‐> </video>
  23. search email url tel range number date datetime datetime-­‐local time

    month color type= so far only webkit browsers and opera will support those types. But that’s OK, because other browsers will just default to type=”text”. So USE these fields.
  24. SEMANTICS - new elements means less divs - richer meaning

    in documents - helps SEO - helps accessibility - extensibility (think XML—creating new tags, etc) - microformats
  25. JAVASCRIPT - HTML5 includes javascript stuff too - I’m no

    programmer so I’ll be brief - I haven’t used these things, I just saw them in a movie - what’s interesting to note is that IE has been supporting a lot of these things for quite some time. They did after all invent AJAX back in the IE5 days.
  26. dragover dragenter drop dataTransfer Drag & Drop Drag & Drop

    HTML 5 DnD is based on Microsoft’s - Internet Explorer 5! - you can see this now with attachments in gmail
  27. var  canvas  =  document.getElementById("c"),        context  =  canvas.getContext("2d");

    context.fillRect(10,  20,  200,  100); Canvas Canvas - environment for creating dynamic images - drawing shapes - filing colours - gradients/patterns - all browsers except ie6, 7 &8. IE9 does support. // x = 10, y = 20, width = 200, height = 100
  28. document.getElementsByClassName('test') document.querySelectorAll('.testClass') Get Elements by Class Name getElementByClassName - IE9

    - like the name suggests—top one returns a node list of elements with a class containing test - querySelectorAll() is similar to the way jquery selectors work.
  29. localStorage Client/Web Storage Client Storage - Basically Cookies on crack.

    - Rather than a few bytes this can store megabytes. - uses an SQL like syntax for retrieval
  30. <html  manifest=”/cache.manifest”> Offline Application Cache Offline Application Cache - Means

    your browser can access the cache without being online. - great for mobile apps - can trigger events when browser comes back online, etc
  31. CSS3 And now time for some fun stuff. Javascript even

    bores programmers half to death! - show you all available css3 selectors; then show you some of the more useful ones - the new properties - media queries - fonts
  32. many new selectors. a lot of them are quite similar

    to each other so I’m going to show you the one’s I’ve found most useful.
  33. div[class^="nav"]  {  background:#ff0;  } div[class$="nav"]  {  background:#ff0;  } div[class*="nav"]  {

     background:#ff0;  } Substring matching attribute selector Extends the attribute selector 1) Starts with NAV 2) Ends with NAV 3) Contains NAV
  34. p:nth-­‐child(3)  {  color:#f00;  } li:nth-­‐child(odd)  {  color:  #eee;  } li:nth-­‐child(3n+10)

     {color:  #eee;  } The :nth-child() pseudo-class The :nth-child() pseudo-class targets an element that has a certain number of siblings before it in the document tree. The arguments can be a number, a keyword, or a formula. 1) Matches third p element that is the 3rd child of it’s parent 2) Matches every first, third, fifth, etc li element 3) Contains NAV
  35. li:last-­‐child  {  border-­‐bottom:  0;  } The :last-child pseudo-class The :last-child

    pseudo-class targets an element that is the last child of its parent element.
  36. p:empty  {  display:  none;  } The :empty pseudo class Matches

    an element that contains no children (including text nodes). great for cleaning up potentially dodgy wysiwyg editor code
  37. p::selected  {  background:  #ff9;  } The ::selection pseudo class Matches

    the portion of an element that is currently selected or highlighted by the user.
  38. VENDOR PREFIXES A small note on vendor/browser prefixes: - browsers

    have adopted a method of including “cutting edge” CSS properties - “cutting edge” in this case means the CSS is still in draft with the W3C - means you can use them and thus help vendors test their specific implimentation of the CSS standard. - some debate whether this is good or bad. I’m on the fence. I use them and it doesn’t really bother me.
  39. opacity:  0.8; opacity:  1; background-­‐color:  rgba(153,0,0,0.5); background-­‐color:  hsla(0,100,60,0.5); Colour &

    Opacity Opacity sets the degree of opacity of the entire object. This affects all children. ie9 Use vendor prefixes for opacity RGBA HSLA can be used for any colour settings: border-color, color, background-color, etc ie9
  40. background-­‐size:  200px  30px; Background & Borders sets the width and

    height of a background image pixels or percentage use vendor prefixes for Firefox IE9
  41. background-­‐image:  url(img01.png)  no-­‐repeat,              

                         url(img02.png)  no-­‐repeat; Background & Borders Multiple Background Images Finally! Multiple background images! You can position them using the usual background position methods IE9
  42. border-­‐image:  url(border.png)  0  10  0  10  stretch; Background & Borders

    Border Image Allows you to create image borders. You position the image much like you would position a background image. Quite difficult to explain - but if you’ve used CSS sprites before it’s a similar concept.
  43. border-­‐radius:  10px; border-­‐top-­‐right-­‐radius:  10px; Background & Borders Border Radius Yay!

    Rounder corners! Can set individual borders. vendor prefixes for webkit and mozilla ie 9
  44. box-­‐shadow:  10px  10px  10px  #333 Background & Borders Box Shadow

    Drop shadows are go! horizontal offset vertical offset blur radius color vendor prefix for mozilla webkit ie9
  45. text-­‐shadow:  10px  10px  10px  #333; Text Text Shadow Text shadow

    horizontal offset vertical offset blur radius color
  46. text-­‐overflow:  ellipse; Text Text Overflow Allows you to set what

    happens when text overflows. The useful solution is to use an ellipse. Firefox nightlies
  47. text-­‐overflow:  ellipse; Text Text Overflow Allows you to set what

    happens when text overflows. The useful solution is to use an ellipse. Firefox nightlies
  48. #skew  {  transform:skew(35deg);  } #scale  {  transform:scale(1,0.5);  } #rotate  {

     transform:rotate(45deg);  } #rotate-­‐skew-­‐scale-­‐translate  {   transform:skew(30deg) scale(1.1,1.1) rotate(40deg) } CSS Transforms change the angle/shape of objects. - skew - scalex scale y - rotate - all together USE VENDOR PREFIXES
  49. img  {   position:absolute;   left:0;   transition:  opacity  1s

     ease-­‐in-­‐out; } img:hover  {   opacity:0; }   CSS Animated Transforms change the angle/shape of objects. - skew - scalex scale y - rotate - all together USE VENDOR PREFIXES
  50. EMBEDDING FONTS font face allows you to embed fonts. Licensing

    issues. Use a service like typekit.com. It’s cheap, deals with licensing and has a huge number of fonts.
  51. @font-­‐face  {    font-­‐family:  'Titillium  Body';    src:  url('Titillium.eot');  

     src:  local('☺'),      url('Titillium.woff')  format('woff'),    url('Titillium.ttf')  format('truetype'),    url('Titillium.svg#webfont')  format('svg'); } Font Face This is the total cross browser implementation. the smily face prevents the browser from showing a flash of unstyled content EOT = Embedded Open Type for IE WOFF = Web Open Font Format - the standard - includes IE TTF = true type - all browsers
  52. http://typekit.com/ http://www.fontsquirrel.com/ http://code.google.com/webfonts Typekit - subscription service - good number

    of fonts - deal with very good type foundries Fontsquirrel - lots of free for use fonts. - creates @font-face css for you - has all font formats Google - deal with typekit - small number of free fonts
  53. Modernizr is a script you add to your site which

    enables you to use these new HTML5 features as well as a host of the new CSS3 stuff.
  54. document.createElement('nav'); first thing it does is makes everything play nice

    in IE6,7,8 but creating all the new HTML5 elements.
  55. based on your browser (this example is firefox 3.6) modernizr

    adds an array of classes to the HTML element which enables you to hook in via CSS
  56. .multiplebgs  div  p  {    /*  properties  for  browsers  which

       support  multiple  backgrounds  */ } .no-­‐multiplebgs  div  p  {    /*  properties  for  browsers  which    don’t  support  multiple  backgrounds  */ }
  57. it also creates a moderniz javascript object which you can

    test against. This example is checking to see if your browser supports the new input type of date. If it doesn’t you can then provide a suitable fallback.
  58. LINKS AND RESOURCES There are loads of websites what will

    help you generate cross browser CSS. Including the oldschool ie filters and vendor specific properties
  59. http://mediaelementjs.com/ http://css3pie.com/ http://css3please.com/ http://www.html5test.com/ http://www.html5rocks.com http://html5doctor.com/ http://mediaelementjs.com/ HTML5 <video> and

    <audio> with H.264, FLV, WMV, or MP3 on any browser http://css3please.com/ - A collection of cross browser css properties and IE filters that will render CSS3 effects like dropshadows, etc http://css3pie.com/ - an IE HTC include which makes ie6-ie8 render css3 features: - border-radius, box-shadow, border-image, multiple background, rgba, gradients http://www.html5test.com/ - will tell you what your browser supports http://www.html5rocks.com - a great place to see examples of awesome html5 stuff http://html5doctor.com/ - THE resource for HTML5