Le HasLayout est un concept interne au moteur de rendu de Internet Explorer Windows. Il s'agit d'une propriété, dont un élément HTML est doté ou non, et qui déclenche certains comportements. L'absence ou la présence de layout (ou HasLayout) peut modifier de manière drastique le rendu d'un élément.
Voir chez Laurent Denis pour plus de détails.
Dans le cas présent, on notera juste que le fait de donner une dimmension (width ou height) fixe à un élément de type bloc confère le layout à cet élément.
Comparez le rendu de ces exemples avec Internet Explorer 6 ou 7 et un navigateur alternatif, vous m'en direz des nouvelles…
width: 80%;