The modern web developer faces a moral choice when creating sites and apps. The angel on your shoulder tells you to use standards and respect accessibility across users of AT, older browsers, mobile, etc. The devil on your other shoulder meanwhile tells you to use all the shiny, satisfy your ego, and leave user agents over two weeks old in the dust.
This talk walks you through the dilemma, looking at the perils of embracing the serpent and presenting solutions that will allow you to achieve a satisfactory compromise. We know the devil has all the good albums, and we want to rock out as much as you do! But not at the expense of the Web’s greatest strengths!
5. What we’ll talk
about
‣ Do you really need The Shiny™?
‣ Progressively enhance, don’t rely on it
‣ Built in alternatives, versus building your own
‣ ...use polyfills/shims
‣ Don’t screw over your users!
6. Calling all good web
angels
‣ Accessibility
‣ Usability
‣ A whole web of devices to support
‣ Let’s be responsible!
14. Defensive design by
default
‣ Is your content still readable without those
shadows, or background gradients
‣ Provide background colours as fallbacks
‣ Test thoroughly on older browsers
‣ A lot of the blingy stuff gracefully degrades
15. Example: CSS
animation
‣ If done properly, a lot of CSS animations and
transitions can be used unobtrusively
‣ For example, by default the element is set to be
in its usable state, but then the animation is
applied over the top to bring the animation to that
state
16. Example: Web fonts
‣ This is a perfect feature to use now!
‣ IE has supported EOT since IE4/5!
‣ You can use the bulletproof web font syntax - see
fontsquirrel.com
17. HTML5 <video>
<video controls>
<source src="video-file.mp4"
type="video/mp4">
<source src="video-file.webm"
type="video/webm">
<track src="en.vtt" kind="subtitles"
srclang="en" label="English subtitles">
<!-- Flash player often referenced in here: will
play the MP4 version of the video -->
</video>
18. Flash fallbacks
viable
‣ Flash can just load the MP4 version of the video
‣ Also consider jPlayer, Sublime, etc.
‣ And http://mediaelementjs.com/
‣ mediaelements even fakes the entire media API
in Flash/Silverlight
19. You can build in
support
for <track>
‣ Building in support when it doesn’t exist
‣ JSCaptions, Captionator, videosub, playr
21. Add in support
where needed
‣ Using JavaScript
‣ Fake SVG in old IE versions using VML
‣ Fake box-shadow using IE filters (although they
are evil — every time you use IE filters, god kills a
kitten)
22. Adding HTML5
support to browsers
‣ Older browsers don’t support them!
‣ But you can style any unknown element, so just
set all the “block level” elements to display as
block, at the top of your CSS:
‣ article { display: block; }
23. Oh, but IE 6-8 need
some more help
‣ They refuse to style unknown elements, unless
you create instances of them in the DOM
‣ document.createElement('article');
24. CSS3 PIE for CSS
bling support
‣ http://css3pie.com/
‣ Awesome little library
‣ Add support to IE6-8 for box-shadow, border-
radius, gradients and transparent colours
‣ But not text-shadow, which is a little frustrating
25. CSS3-
mediaqueries.js
‣ http://code.google.com/p/css3-mediaqueries-js/
‣ Add media queries support to IE
‣ A bit clunky, when you resize, but it works
36. In general, this
rocks
‣ Modernizr/yepnope can add a fair bit of weight to
your page: 49KB for the full library
‣ But you can create a smaller custom version that
just includes the tests you need
‣ There are some things that can’t be detected
39. Not on my watch!
‣ A monoculture would ruin the web
‣ Competition is vital for innovation
‣ Browser vendors control standards
‣ If we had a monoculture, a single company
would control web standards
‣ Do we want one company to control the Web?
40. And we can make
this stuff work
cross browser
background: -webkit-linear-gradient(#ff0000,#000000);
background: -moz-linear-gradient(#ff0000,#000000);
background: -ms-linear-gradient(#ff0000,#000000);
background: -o-linear-gradient(#ff0000,#000000);
background: linear-gradient(#ff0000, #000000);
41.
42. Common sense
prevails?
‣ If you are going to use prefixed features, use all
the prefixes!
‣ Don’t use single vendor-only features
‣ If it’s only in one rendering engine, it means it’s
not ready yet
44. UA string chaos!
‣ Mosaic: NCSA_Mosaic/2.0 (Windows 3.1)
‣ Netscape: Mozilla/1.0 (Win3.1)
‣ IE: Mozilla/1.22 (compatible; MSIE 2.0;
Windows 95)
‣ Firefox: Mozilla/5.0 (Windows; U; Windows
NT 5.0; en-US; rv:1.1) Gecko/20020826
‣ Konqueror: Mozilla/5.0 (compatible;
Konqueror/3.2; FreeBSD) (KHTML, like
Gecko)
45. ‣ Opera: Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.1; en) Opera 9.51, or
Mozilla/5.0 (Windows NT 6.0; U; en;
rv:1.8.1) Gecko/20061208 Firefox/2.0.0
Opera 9.51, or Opera/9.51 (Windows NT
5.1; U; en)
‣ Safari: Mozilla/5.0 (Macintosh; U; PPC
Mac OS X; de-de) AppleWebKit/85.7
(KHTML, like Gecko) Safari/85.5
‣ Chrome: Mozilla/5.0 (Windows; U;
Windows NT 5.1; en-US) AppleWebKit/
525.13 (KHTML, like Gecko) Chrome/
0.2.149.27 Safari/525.13
46.
47. Thou shalt let user
agreements ruin your users’
experience!
48. Use of any Web browsers (other than generally
available third-party browsers), engines,
software, spiders, robots, avatars, agents, tools
or other devices or mechanisms to navigate,
search or determine the NYSE Web-site is strictly
prohibited.
49. You agree you will not, and will not permit any
third party to obstruct, receive, modify or
otherwise interfere with the display or delivery of
advertisements on the NYSE Web-site.
50. You may print or download a single, unaltered,
permanent copy or one temporary copy in a
single computer’s memory of any Content for
your personal, non-commercial use only
51. You agree to review this Agreement each time
you access the NYSE Euronext Web-site so that
you are aware of any and all modifications made
to this Agreement since your last visit
52. NYSE Euronext prohibits ... unauthorized
hypertext links by others to the NYSE Euronext
Web-site. NYSE Euronext reserves the right to
disable any unauthorized links.
* I&#x2019;m saying that in a very safe &#x201C;government-approved rock &#x2018;n roll&#x201D; kind of way\n
Show examples?\n\nAnd of course, this will generally work in older browsers like IE6-8\n\nmention Matt Wilcox responsive image solution\n
\n
Where none already exist\n\nprogressive enhancement/graceful degradation are cool again, especiallywith a wide range of mobile devices being used\n
\n
show simple animated menu example\n
\n
\n
\n
\n
\n
\n
\n
Look for Remy Sharp&#x2019;s HTML5 shiv on Google code, which does this for you and more (Print protector too)\n
again, show bling box, in IE if possible.\n
respond.js is the new contender on the block.\n\n
\n
\n
\n
\n
show CSS3 modernizr example in FF then Opera\n
\n
\n
\n
show modernizr JavaScript example in FF, then Opera\n
show modernizr JavaScript example in FF, then Opera\n
\n
\n
\n
\n
please support all the browsers you can!\n\nThe dogged refusal of many developers to support more than one or two browsers with prefixed properties has led other vendors to start looking at supporting other browser&#x2019;s prefixes. \n\nBut let&#x2019;s not discuss that mess in detail again. It was boring on twitter the first time around.\n\nAll I&#x2019;ll say is, yes, it&#x2019;s a pain in the ass, but suck it up. We&#x2019;re not supposed to be using this stuff in production sites anyway\n\n\n
Mention Prefixr (Jeffrey Way) and Prefixfree script (Lea) for CSS, and Modernizr.prefixed() method for JS\n\n