Some HTML Tips, No-No's, In Random Order

Note: These are some comments and tips I provided to some of the team at my employer, AVENCOM.
Joe Crawford
February, 2001

===========================================================
-----------------------------------------------------------
CORRECT USE OF ALT TAG:
-----------------------------------------------------------

I have seen this use of the ALT tag...

     <img ... alt="decorative line">

The proper use for things that are decorative or functional
would be ALT="". If an image is functioning as a bullet, 
ALT="*" would work well. A common error is to use
ALT="bullet".

Another common misuse of ALT I've seen (not here) is:
ALT="Firestone logo". When a graphic is a logotype, simply
ALT="Firestone" will do.

-----------------------------------------------------------
-----------------------------------------------------------
PROPER USE OF VALIGN
-----------------------------------------------------------
valign does NOT go into:
        <span>
        <div>
        <p>
        <font>
        <table>
valign WILL go into:
        <tr>
        <td>
COMMENT: To get vertical alignment, usually the way to do
that is in a table, in the <tr> and <td> tags. appropriate
values for valign are: top, bottom, middle. valign=center
is NOT valid.
-----------------------------------------------------------
-----------------------------------------------------------
PROPER USE OF VALIGN
-----------------------------------------------------------
In our code I have seen some odd attributes in <table>
some baddies.
        valign=top
        align=center
        align=left
Avoid these as much as possible. If we're moving toward
modular code consistency is best. If we want to center a
table it is best to use:
<div align="center">
  <table ...>
    <tr>
      <td>...</td>
    </tr>
  </table>
</div>

for tables inside tables, use as follows:
<table ...>
  <tr>
    <td align="center">
        <table ...>
          <tr>
            <td>...</td>
          </tr>
        </table>
    </td>
  </tr>
</table>
-----------------------------------------------------------
-----------------------------------------------------------
&, >, and <
-----------------------------------------------------------
The ampersand, greater than, and less than symbols SHOULD
NOT be left bare in a file, they should be encoded as
entities. They have special meaning in HTML and this is
required.
        &  >  <

        

Other common entities include
           <--non-breaking space
        ©  <--copyright symbol
-----------------------------------------------------------
-----------------------------------------------------------
FONT SIZE
-----------------------------------------------------------
In the <font> tag, it's best to use "relative" sizing.
plus or minus the default.

These are bad:
        <font size="1">
        <font size="2">
These are good:
        <font size="-2">
        <font size="-1">
        <font size="+1">
        <font size="+2">
The principal here is that size="2" may mean different
things on different platforms. When you say "+1", you're
saying, increase the size some factor greater than the
default. It's more flexible for people who have changed
their font sizes in their browsers.
-----------------------------------------------------------
-----------------------------------------------------------
SELECT tags
-----------------------------------------------------------
<select> must have corresponding </select> tags - most
browsers will know when you're done, but it's always best
practice to close all tags.
-----------------------------------------------------------
-----------------------------------------------------------
OPTION TAGS
<option> should have corresponding </option> - same as above.

Also, inside an <option tag, no markup or extra tags are
allowed. I spotted this in some of our code:

  <select>
    <option>hello<br>
    <option>world<br>
  </select>

I'm not sure what the intent here was, but those <br> don't
do anything and will probably misinterpreted down into the
page.

If the desired effect is a space, the way to do the above
would be:

  <select>
    <option>hello</option>
    <option></option>    
    <option>world</option>
    <option></option>    
  </select>
...which would leave blank spaces probably intended. This
would have to be accounted for in the form processing, of
course.
-----------------------------------------------------------
-----------------------------------------------------------
IMG TAG
-----------------------------------------------------------
The required tags for IMG are:
<img>
        src
        height
        width
        border
        alt
And optional are:
        hspace
        vspace
        name
I advise against leaving off a height or a width for
spacers where you only care about height or width. Use
height="1" or width="1" if there is no necessary value
in your mind.
-----------------------------------------------------------
-----------------------------------------------------------
OPTIMIZING CLASS, VALIGN ATTRIBUTES
-----------------------------------------------------------
Simple is better when applying class.

For example:
  <p><span class="body">Four score and seven...</span></p>
Would be simpler as:
  <p class="body">Four score and seven...</p>

And this:
  <table cellpadding="0" cellspacing="0" border="0">
    <tr>
      <td><p><span class="body">Four score and seven...</span></p></td>
    </tr>
  </table>

Would be better as:
  <table cellpadding="0" cellspacing="0" border="0">
    <tr>
      <td class="body">Four score and seven...</span></p></td>
    </tr>
  </table>

The idea is to minimize the number of tags and attributes
you have.

On that note - this:
  <tr>
    <td valign="top"></td>
    <td valign="top"></td>
    <td valign="top"></td>
    <td valign="top"></td>
  </tr>

Is easier as:
  <tr valign="top">
    <td></td>
    <td></td>
    <td></td>
    <td></td>
  </tr>

-----------------------------------------------------------
===========================================================