动态HTML教程(二)

---《网猴》版权所有

动态HMTL网页利用串接样式表布局,并利用Javascript控制网页元素。实际并不复杂或有很多的规定。我们所需要作的只是要给网页加入样式,能使其运动,并且在两种主要的浏览器中都能正确显示。

精通我们将用CSS-P布局网页,这是学习动态HTML的第1步。学习完定位元素之后,我们将接着学习编写使其动态显示的脚本。

大多数用于设计和页面布局的程序或文件格式必须现生成box,它们的宽度和高度可以改变,它们还能使你控制将对象叠放在对象之上。CSS-P的原理与其相似,你先用HTML定义一个容器(为了便于具备跨平台应用的兼容性,你最好实用<DIV>或<SPAN>标签),设置其水平和垂直位置,然后设定哪个对象应该叠放在哪个对象之上。

真的很简单,它能象大多数人(尤其那些利用表格定位和布局的人)希望的那样让HTML发挥功能。你只需以一种不同的思维角度来思考网页的布局,本教程将重点讲述一些基本的布局技巧明天我们将利用Javascript控制你的网页布局。

动态HTML中大多数的内容都要用到<DIV>标签作为容器。(在 串接样式表和CSS定位的规范草案中规定可以将任何对象 定位,但Netscape的浏览器还不支持这项规定。所以你必须 用<DIV>标签作为类属容器),在容器内加入对象然后再 定位。

我们先为本教程中的范例生成一个box。在本教程的范例中 我们将用网猴的一个编辑Tim作为范例中的主角:

<html>   
<head>
<title>dramatis personae</title>
<style>         
<!--          
#tim {position: absolute;left: 10px; top: 10px;  width: 140px;    height: 91px; }
-->       
</style>    
</head>    
<body>      
<div id="tim"></div>   
</body>
</html>

这里是box的显示结果(为了辨认的方便,我给它加了一个 红色边框)

 

现在我们有了一个空的box,其ID名称为tim,其位置在距窗 口左边10个像素,距窗口顶部10个像素的位置。现在它还没 有体现出动态HTML的魅力,所以我们在这个box中填入Tim的 图片,并给它加一点说明:

<img src="http://www.webmonkey.com.cn/ dynamic_html/tutor/day2_2btim01.gif" width="41" height="79" align="LEFT"> Tim, the hero. Webmonkey editor and resident banjo-picker.

在3.2版本的HTML的网页(即不能支持动态HTML的网页) 中,你将会注意到文字一直流到屏幕边缘之外,而Tim的图 片朝左浮动。

Tim, the hero. Webmonkey editor and resident banjo-picker.

 

实际上是它浮动到了本文所在的表格单元的左边。这是一个 重要的区别。当你将HTML放在一个已经被定位了的<DIV>之 内时,你可以把它看作是放在了一个表格单元中(或者象在 其他出版系统之内的制作方法那样)。

在支持HTML 3.2以后的版本的网页中,你可以看到文字自动 回行:

Tim, the hero. Webmonkey editor and resident banjo-picker.

 

现在这个<DIV>标签里已经填充了内容,让我们利用CSS-P 的LEFTTOP选项技将其定位。

<html>   
<head>      
<title>dramatis personae</title>      
<style>         
<!--          
#tim {
position: absolute;
left: 300px;
top: 10px;                
width: 140px;                
height: 91px;               
}         
-->       
</style>    
</head>    
<body>       
<div id="tim">      
</div>   
</body>
</html>

显示结果:

Tim, the hero. Webmonkey editor and resident banjo-picker.

你可能会注意到在本例中我使用了相对定位。在相对定位和绝对定位中有一个很微妙但确确实实的区别。

当你将一个对象用绝对定位指令定位时,你实际将其从你的HTML文件流中抽了出来,将其直接根据网页的左上角的位置进行定位。这种情况下各个对象有可能互相重叠在一起。

相对定位并不指根据百分比值或其他某个元素的位置来定位这个元素的位置。它实际占据的就是它在这个HTML文件中的位置,它的定位起点基于HTML页所在的位置,这里是一个例子:

这两个句子中,单词Webmonkey都定位在距左边200像素的位置。第1个句子用的是绝对定位,第2个用的是相对定位。注意相对定位的句子中空出了相当于单词Webmonkey长度的空间,而绝对定位了的句子中没有这个空间,如果我给两个句子都加一个"top"参数值,则你会看到绝对定位了的句子将飘在文章的顶部,而相对定位的句子则就在它所在的句子的位置之下:

现在我们已经了解了两种定位的不同。我们作一个小练习。我们用CSS-P作一个网页。试着做网页,然后我们将制作更复杂的布局(提示:你可以用这个屏幕快照中的图象作为网页背景图象来帮助你定位。注意将字体采用Comic Sans MS)。

你可以注意到上面的那个布局用表格就能很轻易地做到。但是串接样式表比表格有一项独特的优势:分层。

你肯定注意到你无法用表格将几幅图片或文字叠放在一起。一般情况下,如果人们希望实现这种效果只有制作一幅位图,在图片中制作出文字或图象叠放在一起的效果,然后将图片放在网页中。

而利用动态HTML,则可以利用分层顺序将叠放显示各个对象,例:

Here is Aaron in front of a desk.

Here is Aaron behind a desk.