Add Tags
| First Name: | |
| Last Name: | |
| Message: | Earlier this year I wrote an article inspired by Eric Meyer's on CSS Diagnostics: Selecting Deprecated Elements With CSS. The article was a smash, and I my site traffic has gone up like crazy ever since. I was unaware that this niche in the standards community would be so popular. Unfortunately I did not put as much thought into my initial diagnostics other than just trying to improve on Eric's code. Enter part 2. My IE Has Bugs!After applying my original diagnostics code to several projects (at work, and on my recent site re-design) I realized that Internet Explorer wasn't quite getting it right. In fact sometimes, IE was selecting incorrect elements. What came from this was I needed to be more careful in the selectors I used and that using the "*" selector resulted in some weird things in IE. What also came from that was a bug in IE that selects the IMG tag when the selector calls for the proprietary IMAGE element. I decided to go out to the HTML 4.01 specification and find exactly what attributes and elements are deprecated and which aren't. That way I could create a more authentic version of the diagnostics tool rather than just adding my personal opinion on what ought to be deprecated and what shouldn't. This resulted in CSS Diagnostics 2.0. Diagnostics Gone FamousFor my second rendition of the project, I decided that I should create a Google Code Project and host my diagnostics there. I'm not completely sure if that is a good or bad thing to do. My goals are to keep traffic coming to my own site and not Google's but perhaps the two can live together. I also learned that you can embed the Google Analytics tracking code directly into the Google Code web page thus allowing me to track traffic to that area. This makes me care less about traffic going there because if I can use GA, then I can fell like I actually own those pages. On to the code:
Putting It All Together:
/* Empty Attributes */
img[alt=""], area[alt=""], *[class=""], a[href=""], a[href="#"], *[id=""], *[title=""]
{ border: 5px dotted yellow !important; }
/* Proposed Deprecation Due To CSS */
body[background], table[background], td[background], th[background],
input[border], table[border],
table[cellpadding],
table[cellspacing],
object[codebase],
img[height], object[height], table[height],
a[name], form[name], img[name], object[name],
a[target], area[target],
td[valign], th[valign],
img[width], object[width], table[width]
{ border: 5px dotted orange !important; }
/* W3C HTML 4 Strict Deprecated Attributes - http://www.w3.org/TR/html401/index/attributes.html */
applet[align], caption[align], div[align], h1[align], h2[align], h3[align], h4[align], h5[align], h6[align], hr[align], iframe[align], img[align], input[align], legend[align], object[align], p[align], table[align],
body[alink],
applet[alt],
applet[archive],
body[background],
body[bgcolor], td[bgcolor], tr[bgcolor], table[bgcolor],
img[border], object[border],
br[clear],
applet[code],
applet[codebase],
basefont[color], font[color],
dir[compact], dl[compact], menu[compact], ol[compact], ul[compact],
basefont[face], font[face],
applet[height], td[height], th[height],
applet[hspace], img[hspace], object[hspace],
script[language],
body[link],
applet[name],
hr[noshade],
td[nowrap], th[nowrap],
applet[object],
isindex[prompt],
hr[size], font[size], basefont[size],
ol[start],
body[text],
li[type], ol[type], ul[type],
html[version],
body[vlink],
li[value],
applet[vspace], img[vspace], object[vspace],
hr[width], td[width], th[width], applet[width], pre[width]
{ border: 5px dotted red !important; }
/* Non W3C Proprietary HTML Attributes - http://en.wikipedia.org/wiki/Non-standard_HTML_tags#Proprietary_HTML_attributes */
body[bgproperties],
*[bordercolor], *[bordercolordark], *[bordercolorlight],
body[topmargin], body[rightmargin], body[bottommargin], body[leftmargin],
table[frame]
{ border: 5px dotted magenta !important; }
/* Empty Elements */
/*span:empty,*/ /*div:empty,*/ li:empty, /*p:empty,*/ td:empty, th:empty
{ border: 5px solid yellow !important; }
/* Proposed Deprecated Elements */
input[type="button"], input[type="reset"], input[type="submit"], tt, big, small
{ border: 5px solid orange !important; }
/* W3C HTML 4 Strict Deprecated Elements - http://www.w3.org/TR/html401/index/elements.html */
applet, basefont, center, dir, font, isindex, menu, s, strike, u,
listing, plaintext, xmp
{ border: 5px solid red !important; }
/* Non W3C Proprietary HTML Elements - http://en.wikipedia.org/wiki/Non-standard_HTML_tags */
audioscope, bgsound, blink, bq, comment, embed, fn, ilayer, /*image,*/ keygen, layer, limittext, marquee, multicol, nobr, noembed, nolayer, nosmartquotes, rt, ruby, server, sidebar, spacer, wbr, xml, blackface, shadow
{ border: 5px solid magenta !important }
/* XHTML 1.0 Strict Deprecated Attributes - http://www.w3.org/TR/xhtml1/#h-4.10 - http://www.w3.org/TR/xhtml11/changes.html#a_changes */
a[name], applet[name], form[name], frame[name], iframe[name], img[name], map[name]
{ border: 5px dotted lime !important }
/* XHTML 1.0 Strict Prohibitions http://www.w3.org/TR/xhtml1/#prohibitions */
a > a,
pre > img, pre > object, pre > big, pre > small, pre > sub, pre > sup,
button > input, button > select, button > textarea, button > label, button > button, button > form, button > fieldset, button > iframe, button > isindex,
label > label,
form > form
{ border: 5px solid lime !important }
/* Deprecated Classes From Old Website */
.toolbg, .ulnone, span.b, ul.list, .eleven,
.lines, .wide, .select, table.form, form td.b, table .top,
.gallerypic, .iegallery, .pic, .image, .transparent,
.wht, .blk, .blue, .dkgray, .ltgray, .brown, .quote, .greyhover
{ border: 5px groove red !important; }
/* Dreprecated JavaScript From Old Website */
input[onfocus*="normal1px()"],
input[onfocus*="change1px()"]
{ border: 5px dashed red !important; }
/* 404 Pages */
a[href*="/designs/web/web1/"],
a[href*="/designs/web/web2/"],
a[href*="/designs/web/web3/"],
a[href*="/designs/aitp/aitp-fvtc/"],
a[href*="/designs/aitp/aitp/"],
a[href*="/forms/contact.asp"],
a[href*="/forms/email.asp"]
{ border: 5px double red !important; }
Summary:It is best to use different colors and borders to apply meaning to what error you have made in your code. I like to use yellow for minor, orange for moderate, red for severe, and magenta for extremely severe. I also like to apply different border styles depending on what the problem may be. Dotted for me means there is a bad attribute, solid means there is a bad element. Other border styles have their own meanings as well. Considerations:Make sure to place this at the end of your stylesheet and to leave in the !important rules so that they override any rules that may be inline. It is also best to use a standards compliant browser when testing. IE7 is ok but I would personally suggest Firefox 3 because it supports standards better and because it has other add-ons that make web development easier and diagnostic testing easier. Download:I've set up a Google Code Project so feel free to download it. |
| Date: | 2008-06-18 |
| Time: | 20:44:34 |
| Replies: | 11 |
| Views: | 34928 |