栏目搜索
 
 
 
 
你的位置:首页 > 网页制作 > HTML/Xhtml >
 

网页设计中HTML常犯的五个错误

日期:2006-03-24 00:00:00  点击:  作者:  来源:    【我要投稿】   【加入我的收藏夹】

本文章地址:http://www.netbarguide.com/webdesign/Xhtml/20060321/n7S9r.html [点此复制地址]

1.网页背景色的设置

犯错机率:很大
  普遍性:较广
  犯错可能性:懒/不知道

  约2年前我曾发现21cn上出现过一次没有设置背景色的情况,当时我用Email通知了他们,自此之后这个问题我从没犯过。

  绝大部分人的窗口背景颜色都是白色,但如果象我这样个性的人,就会把Windows窗口的背景颜色改成灰色或其他色,这样一来,如果你没有设置网页的背景颜色的话,你以为正常的网页在我的电脑上看起来会是一团糟。

  2.Align center(自动居中)的滥用

犯错机率:非常大
  普遍性:非常广
  犯错可能性:以为方便/以为好用

工作中,修改、维护别人的网页是家常便饭,发现不少人有一个陋习:
  在表格中的文字或图片,你是这样来令它居中、靠左或靠右过?

  <div align="center">大家好啊!!</div>
  <div align="center"><img src="xx.gif"></div>

当有些表格很多、文字很多、内容分得很细的时候,爱用这种方法(它在DW里的快捷键是Ctrl+Alt+C,FP不知道是什么)的人往往会狂用,惨了,我一碰到这样的网页就头痛,为什么要用那么多<div>来居中呢?tell me why?难道表格没有居中属性吗?为什么要加入这些垃圾代码?特别修改的时候也不能把文字或图片删除了就能自动清除 

建议使用<td align="center">来居中,当需要多重定位的时候,才考虑<div align="center">,因为这个代码并不好处理,所以能用表格代替就用表格替代。

3.重复使用实现相同功能的代码、或杂七杂八的乱套代码

犯错机率:非常普遍
  普遍性:非常普遍
  犯错可能性:复杂多样

大家先来看一看下面的代码:
  <center><p><font class="CSS_id"><font class="font11"><font color="#CCCCCC"><font color="#FFA76C" style="font-size:14px;font-family:隶书">标 题</font></font></font>
</center>你觉得这样的代码看起来感觉怎么样呢?</font></p>

我不知道读者有什么感觉,压根我一看到这样的代码就会先自我麻木十来秒,这十来秒目的是为了找一个能表达我的思想感情的词(我?你想反问我吗?sorry~~,我一般不犯,因为我做网页至少有一半以上的时间在浏览代码,代码中多了不该多的东西我一眼就能看出来。)。

看看上面的代码,使用了2个class,4个font来定义2个文本,其实这样的问题很多时候是在大家不断的修改中产生的,对代码不熟、或懒查看代码、又或不喜欢查看代码的人犯这些问题特别严重,当然,事实上别人浏览这个网页的时候,是没有任何问题的,但维护的人就…………。
这些多余的垃圾代码完全是可以省略掉的,其实上面的例子不够严重,更恐怖的我都见过。

另外还有一个问题也要提提的,就是<p>...</p>和<center>...</center>,为什么要用它们呢?tell me why~~,有甚者是这样的:

<td><div align="center" class="css_id">
<center>
<p align="center"></p>
<p align="center"><font class="css_id"><font class="font11"><font color="#CCCCCC"><font color="#FFA76C" style="font-size:14px;font-family:隶书">标 题</font></font></font>
</center></td>你觉得这样的代码看起来感觉怎么样呢?</font></p></center></div></td>

看到这样的代码我是会很无奈的(更无奈的是我经常看到,而且必须看),我来简化一下:
<td align="center" class="css_id">
<font color="#FFA76C" style="font-size:14px;font-family:隶书">标题</font>
你觉得这样的代码看起来感觉怎么样呢?</td>

是不是看起来觉得这个世界安静了很多?"标题"后面的文字完成可以定义在<td>的class里,就算不用css,再用多一个<.font>也没问题,一样很清爽。

4.表格不正确嵌套

犯错机率:一般
  普遍性:普遍
  犯错可能性:对这个不了解

其实这是一个街知巷闻的问题了,但还是不断有人犯,不正确的嵌套表格,可能会令到你被老总叫到办公室里臭骂一顿,会令到你以为正常的网页用ADSL开2、3分钟都开不了。

先讲第一个问题,就是在一个大表格里不断地嵌套表格,这样会令到打开网页的速度变慢(虽然说现在的IE改善了这一问题,但还是不建议这样做),另一方面维护、修改也极不方便,一般来说简单的套用是没有问题的,甚至3、4层,但是不要把所有内容都放到一个表格里去。

第二个问题就是在一个大表格里放入所有内容,而其中包括一个免费的计数器代码,嘻嘻,你猜有可能出现什么情况呢?其实也没什么大不了的,最严重的就是你的IE象死机了一样,什么都没显示。解决方法就是把计数器单独放在一个表格里,别和其他内容一起放在同一表格。

5.写代码缩进的时候,不是使用Tab而是使用空格

犯错机率:一般
  普遍性:较少
  犯错可能性:不知道Tab更好用

这一个问题针对js、vbs、asp、php之类,HTML不能使用Tab会写一点程序的都知道什么叫缩进,怎么样缩进?有人使用空格,有人使用Tab,如果你是使用空格的,那么从现在起,改用Tab吧。

使用空格有二大坏处:1、缩进速度慢、修改速度慢。2、增大网页体积,会影响速度。

 1、表单文本输入的移动选择:在文本输入栏中,如果加入了提示,来访者往往要用鼠标选取后删除,再输入有用的信息。其实只要加入onMouseOver="this.focus()" onFocus="this.select()" 代码到 <textarea> 中,一切就会变得简单多了,如:

<textarea name=textarea wrap=virtual rows=2 cols=22 onMouseOver="this.focus()" onFocus="this.select()">Input English..</textarea>

  类似的,可以加入代码到<input>。

2、表单输入单元点击删除:本列同上则作用类似,只是使用鼠标上略有变化,需要点击而不像上则的只要鼠标覆盖。如:

<input type=text name="address" size=19 value="Enter,e-mail..."onFocus="this.value=’’"> 

  点击输入单元后,提示信息会删除,是不是很方便。

3、表单输入单元的边框设置:更改传统的表单单元边框,会让你的主页生色不少。如:

<input type=radio name=action value=subscribe checked style="BORDER-BOTTOM: dashed 1px; BORDER-LEFT: dashed 1px; BORDER-RIGHT: dashed 1px; BORDER-TOP: dashed 1px;background-color: #FEF5C8">

  其中"style=***"为左右上下和背景色设置,适用于其它单元,请读者亲自试试。

4、表单输入单元的文字设置:表单中单元的字体是可以修改的,如:

<input type=text name="address" size=19 value="Enter,e-mail..." style=font-family:"verdana";font-size:10px > 

  其中"style=***"为字体和字大小设置。

5、修改表单属性为弹出窗口:大多数表单激活后,会在当前页面中打开,影响正常浏览。不如修改一下,如:

<form method=POST action=url target=_blank>

  其中"target=_blank"为控制在弹出窗口打开。

在HTML编辑器中,一般默认按回车总是出现<p> </p>,当然按shift+enter可以是直接加<br>,而很多人希望按回车就是<br>换行而不是分段。

一直有人问我这个问题,而我没有写代码测试就认为在onkeydown里面判断event.keyCode==13就可以判断并解决,而后来发现似乎并没有人能用这种方法解决成功。对此表示歉意!为此,仔细研究了一下,发现可以有两种解决方法,但是都不是很完美,不过已经基本可以满足需要了:

1.在初始化编辑器内容的时候,加上"<div></div>"
这样回车的时候编辑器会直接生成"<div></div>"而不会生成<p></p>,就可以只是换行而不换段了,如下所示:


<SCRIPT LANGUAGE="javascript"><!--function initeditor(){ var L_DEFAULTHTML_TEXT="<DIV></DIV>"; var sz="" sz+="<BODY ONCONTEXTMENU="return false">"+L_DEFAULTHTML_TEXT+"</BODY>" idEditbox.document.designMode="on"//编辑模式打开 idEditbox.document.write(sz) //以下代码只是辅助方便看编辑器源代码的 idEditbox.document.attachEvent( "onkeyup"  , readsource ); idEditbox.document.attachEvent( "onkeydown"  , readsource );}//看源代码function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY onload="initeditor()"><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="查看源代码" onclick="readsource()"><BR><TEXTAREA NAME="source" ROWS="20" COLS="60"></TEXTAREA></BODY>



不足:
这种方法有个bug就是在编辑器中添加一些内容后,全选(ctr+A)然后删除所有内容(这样就把<div></div>也删除了),重新输入内容后回车就还是会产生<p></p>

2.直接在onkeypress里面处理
我们可以在onkeypress里面直接出来,但判断event.keyCode==13也就是是回车的时候我们直接插入<br>标签,这样无论怎么样都不会出现问题的了。以下是代码示例:

<SCRIPT LANGUAGE="javascript"><!--function initeditor(){ var sz="" sz+="<BODY ONCONTEXTMENU="return false"></BODY>" idEditbox.document.designMode="on" idEditbox.document.write(sz) idEditbox.document.onkeypress=fnKeypress}function fnKeypress(){ //注意:如果焦点不在编辑器内该函数就不起作用了; var ev = idEditbox.event; if(ev.keyCode==13){  insertHTML("<br><!--  -->"); //不知道是我浏览器问题还是其他问题,只插入<br>标签光标不换行,必须附加点其他标签,可以最后一起删除之  return false;//这样回车就是等于失效了,不会加上讨厌的<p>标签 }}//在光标位置插入htmlfunction insertHTML(html){var sel = idEditbox.document.selection;if (sel!=null) {    var rng = sel.createRange();    if (rng!=null)        rng.pasteHTML(html);}}//查看代码function readsource(){ document.all.source.value=idEditbox.document.body.innerHTML;}//--></SCRIPT><BODY onload="initeditor()"><iframe width="500" height="400" id="idEditbox"></iframe><BR><INPUT TYPE="button" value="查看源代码" onclick="readsource()" onfocus="idEditbox.focus()"><BR><TEXTAREA NAME="source" ROWS="20" COLS="60"></TEXTAREA></BODY>

不足:
1).insertHTML("<br><!--  -->"); 会产生垃圾代码“<!--  -->”; 
2).要保证焦点必须在编辑器中才能响应编辑器的onkeypress事件
因时间关系,本示例程序并未给出焦点不在编辑器中的处理方法