CSS Cross-browser Compatibility
A 1-day Advanced CSS Training Course in Bulletproof Web Design
Making Advanced CSS More Reliable
This advanced CSS training course enables experienced web designers to tackle and overcome the tricky problems which can make advanced CSS web design difficult to implement in a cost-effective manner. Delegates will learn to diagnose, resolve and/or work around the most common problems, bugs, and browser incompatibilities encountered in advanced CSS web design. Expert instruction on these challenges is accompanied by best practice advice on how to create elegant, managable and affordable CSS in timely fashion.
Advanced CSS Course Background
The W3C’s (CSS standards) have been more successful than many people expected. So succesful, that practically all new web design (other than HTML-formatted email) is done primarily in CSS.
Sites that have successfully separated CSS design (from HTML-encoded content and mark-up) have reaped the promised rewards: faster, cleaner, SEO-friendlier, more accessible and more managable web design.
But two big challenges remain:
- Buggy browsers — wasting developer time on kludgy workarounds
- Competition — requiring ever-more advanced CSS technique to stand out
Unfortunately, the world’s most popular family of web browsers (Internet Explorer) has proved a major obstacle in meeting both of these challenges.
IE8 (released March 2009) was the first version of IE on Windows which conformed with CSS2's most basic requirement, i.e. that designers should be able to override default browser styles using only CSS. And that release (11 years after CSS2) barely signalled the ‘beginning of the end’ of the problem:
- Millions still depend on non-conforming IE6 and IE7 browsers
- Neither IE8 nor IE9 have the level of CSS2.1 and CSS3 support found in other browsers
- There's virtually no HTML5 support in IE8 and it's limited in IE9
- Even on IE8-based intranets, you're likely to find:
- IE8 configured to render in IE6 or IE7 modes
- The odd IE6 client
- A few IE7 clients
- You have no upgrade options, unless you code cross-browser compatibly
In short, anyone who wishes to deploy advanced CSS web design techniques needs to know how to make designs work (or at least gracefully degrade) on IE browsers that don't fully support CSS — and on browsers which do. Having several — per browser — alternative designs is not a cost-effective option.
A very small sample of CSS techniques that can have problems with IE6-IE8:
- Tightly packed float layouts
- Rounded corners
- Layers and semi-transparency
- Collapsible menus
- Out-of-order positioning
- Transitions
- ..., etc., etc. the full list is much longer
This advanced CSS training course is designed primarily to help experienced web designers deploy these (and many more) techniques easily and reliably, by identifying:
- The fundamentally non-standard features of IE's original design
- IE6-IE7's default Quirks Mode rendering style
- The non-standard
hasLayoutproperty in IE6, IE7 and IE8 - IE6-IE8's tendency to render floats as
inline-block.
- The effects (symptoms) of these features, in common design cases
- Workarounds and fallbacks to avoid unacceptable variations between browsers
- Technical limits which are currently insurmountable
- Shivs, shims and polyfills to implement “must have” features, in “don't have the feature” browsers
Target Audience for this Advanced CSS Course
- Experienced web designers
- Experienced web developers
- “Hands-on the code” usability, accessibility, and SEO practitioners
Advanced CSS Course Prerequisites
- Successful completion of our basic CSS training course (CSS Fundamentals) — or equivalent CSS training and/or hands-on experience
- Successful completion of our basic HTML training course (Website Design Using HTML and XHTML Standards — or equivalent HTML training and/or hands-on experience
Note: If you are unsure about whether your existing CSS skills, knowledge or experience meet these criteria, please telephone 0870 200 7273 and ask to speak to Dave Fisher (the course author and tutor). You can test the syntactical accuracy of your HTML/XHTML by running your pages through the W3C’s online HTML and CSS validators.
Advanced CSS Course Delivery
This advanced CSS training course is delivered through a mix of tutor instruction, discussion and hands-on practical work.
The amount of hands-on work depends greatly on the membership of the training group, but the proportion of time devoted to exercises is typically lower than it would be in a beginners class. There are however plenty of exercises for those who learn better that way.
In most cases, experienced designers prefer to cover as much ground as possible, using extensive questions and discussion to clarify techniques which they can experiment with at work or at home.
Publicly scheduled dates, locations, and prices
Leeds — £250 (+VAT)
- 12 Jul 2012
- 6 Sep 2012
- 8 Nov 2012
London — £250 (+VAT)
- 15 May 2012
- 14 Jun 2012
- 17 Jul 2012
- 9 Aug 2012
- 11 Sep 2012
- 11 Oct 2012
- 13 Nov 2012
- 6 Dec 2012
Advanced CSS Course Contents:
Advanced CSS: Designing for Diversity by Managing Box Models
- Standards-based CSS versus browser-based CSS
- Lowest common-denominator design versus progressive enhancement and graceful degredation
- Advanced design goals: quality and diversity through modularisation
- Avoiding the elephant traps: classic errors and problems in advanced CSS web design
- Quirks Mode vs Standards Mode rendering
- The IE box model vs. the CSS standard box model
- Different ways of managing the IE Box Model:
- Using offsets instead of
width - Creating padding and border effects without using
paddingandborder - Using
autowidths to create ‘rubber space’ — avoiding pixel rounding errors - Putting IE6 and IE7 into standards mode
- Enforcing standards mode with XHTML
- IE8's compatibility modes
- Hacking non-standard dimensions for ancient IEs
- The Tan Hack and the Holly Hack
- Managing IE quirks with conditional styles
- Providing alternate stylesheets With conditional comments
- Providing IE version-specific stylesheets
- Stylesheet switching with browser detection and object detection
- Browser detection and stylesheet switching policy
- IE7-js, IE8-js and IE9-js to fix IE bugs and retro-fit CSS features
- CSS hacks for current browsers
- Using offsets instead of
Advanced CSS: Standard vs. IE Float Models
- Things everyone should know about floats — but often don't
- How floats should interact with ‘normal flow’ content
- How floats interact with inline content
- How floats interact with block content
- How IE floats behave without
hasLayout - How IE floats behave with
hasLayout - How
hasLayoutmakes non-floated blocks look like floats - How all standards browsers identically render non-floated blocks alongside floats:
- Firefox, Safari, Chrome, Opera
- Variations in float and non-float interaction across different versions of IE:
- IE5, IE6, IE7, IE8
- Problems with excessive vertical content in floats
- How excessive content should interact with succeeding content
- How IE does it with
hasLayout - How standards browsers do it
- Problems with horizontally excessive content in floats
- How excessive content should interact with horizontally adjacent content
- How IE does it with
hasLayout - How standards browsers do it
- How to encapsulate (wrap) floats properly
- How IE does it with
hasLayout - How to do it the CSS way — using
:after - Old-fashioned hacks, like empty divs
- How IE does it with
- Managing excessive replaced content in floats
- Comparatively rare problems with float clearance
Advanced CSS: IE’s hasLayout Property — The Hidden Source of Most Problems
- What is
hasLayout? - Symptoms of
hasLayoutTrue or False - Elements With
hasLayoutby Default - Properties That Trigger
hasLayout(All IEs) - Properties That Trigger
hasLayoutin IE7 hasLayoutOn Inline Elements- Resetting or Cancelling
hasLayout - The
hasLayoutscript property - Triggering
hasLayoutto Fix Bugs
Advanced CSS: Common Problems, Bugs and Fixes
- Common Problems in Everyday Practice
- Valid CSS and Valid HTML
- Other Tools
- List Zeroing
- Reset All Browser Defaults?
- Protruding Floats in IE
- The 3 Pixel Jog (Text Jog, 3 Pixel IE Bug)
- The Peek-a-Boo Bug
- The WinIE Guillotine Bug
- Guillotine Bug Fixes
- The IE Click Bug
- The WinIE Unscrollable Content Bug
- The WinIE Creeping Text Bug
- The IE6 Duplicate Character Bug
- The IE Double Float Margin Bug
- Source Code Whitespace Not Ignored
- 'Missing' Floats
- Link Pseudo Class Order (LVHA)
- Unintentionally Styled Anchors
- MIME Types
- Media Type Glitches
- FOUC: The Flash of Unstyled Content
- url() Paths
- IE Text Size Bug
- Unclickable Links
- Ignored Top Margins
- Protruding Margins (Not a Bug)
- The 1 Pixel Rounding Error (Not a Bug)
- The IE Justified Italics Bug
Positioning and Auto Dimensions
An optional extra module — if time allows
- Recapping static positioning
- Recapping absolute positioning
- Absolute positioning with layers — non-standard z-axis stacking in older IEs
- Recapping fixed positioning
- Recapping relative positioning
- What relative positioning is, and what it's really for
- Positioning, offsets and containers
- The containing block
- The containing block for absolute elements
- Problems with absolute offsets
- Offsets and the box model
- Probems with
widthandheightin CSS positioning - Using maxima, minima and percentages
- Sizing and positioning with
auto - Auto widths for basic horizontal sizing
- Auto margins for centring
- More than one horizontal auto Setting
- Auto Heights
