信息系统安全工程师:表格制作完全版

来源:百度文库 编辑:中财网 时间:2024/05/03 05:03:19
 表格制作完全版
表格组合不是一个轻而易举的技术,所以,我们极少见到论坛各种精美的帖子会用到它,但表格组合技术是一个很有趣的技术,掌握它具有一定的挑战性,所以,愿意花一节的篇幅专门讲它,如果你觉得不需要,可以跳过这一节。表格组合更多的用于布局,当然,也有少数情形需要用到它。本节不想探讨什么时候用到表格组合,只从实现手段方面进行讨论。
先讲上下排列的表格组合。先看例子:
 
表一
 
 
表二
 
要顺利地实现N张表格的纵向组合,至少有三种方法:一是,令参与排列的表格都居中(即在里加入align=center),上例就是;二是,不定义表格的对齐属性,即
里没有align属性,这样给出的N张表格代码,它们都是上下排列的,表格的自身位置全是左对齐(但若定义了align=left,情形不是这样,大家可以在FP或DW里试试),例子请看表三和表四;三是把参与排列的表格放在一张表格里,这张作为容器的外表宽度不限,且里面的表格也不设置align属性——大家都看得出来,其实,它只是第二种实现方法的扩展,其目的是为了让参与排列的表格随心所欲地设置水平对齐,换句话说,外表的作用是为了实现自定义的对齐方式,示例为表五和表六。第三种方法虽然源于第二种,但使用它是个绝好的主意,这个,在使用表格排版过程中,相信大家会慢慢体会到的。
 
表三
表四
↓我叫表五表六右对齐 表五
表六
 
下面看水平排列的表格
表格的水平排列更需要精确地计算参与排列的表格的宽度,它们的宽度的总和不能超过其所属容器所能装载的宽度,表格和其他元素的混排情形下更应该严格考虑。
一个好的习惯是,还是用一张表格来规范并列组合的表格,这张表格,最好宽度设置为100%,然后将里面要并列组合的表格通通设置为左对齐(但注意:它们的宽度总和不能超过可显示的宽度)。试看以下两个示例:
 
外表宽度为100% align=left
 
width=150
align=left
 
width=150
align=left
 
width=150
 
外表居中,宽度为450 align=left
 
width=150
align=center
 
width=150
align=right
 
width=150
 
本节从某个角度分析了表格的组合问题,它是一个主要用于排版的技术,要求计算精确,并不十分适用于论坛。但如果你是一个不怕挑战的人,那么,本节所讨论的内容或许对你来说还远远不够,好在聪明的你会自己去尝试,本节若能起到抛砖引玉的作用就已经达到目的了。谢谢阅读!
多单元格表格
在页面布局方面,比起表格组合,多单元格更能灵活和方便地进行控制,为此,使用多单元格布局Web页或帖子是一个不错的习惯。
我们前面提过,表格代码里,有多少组...,表格就有行,有多少组,表格就有多少列。为此,在代码里,我们将根据需要利用表格代码里的来创建单元格。我们先来制作一个1×3即一行三列的表格:
代码:
...
...






单元格一(即列1)单元格二(即列2)单元格三(即列3)

效果:(1×3表格)
.
单元格一(即列1) 单元格二(即列2) 单元格三(即列3)
在上述示例里,只有一组,故而表格只有一行,...里有三组td,因此,表格有三列,这就是所谓的1×3表格。现在我们把代码扩展一下,即增加一组tr,请看代码和效果:
代码:










单元格一(即列1)单元格二(即列2)单元格三(即列3)
单元格四(即列4)单元格五(即列5)单元格六(即列6)

效果:(2×3表格)
.
单元格一(即列1) 单元格二(即列2) 单元格三(即列3)
单元格四(即列4) 单元格五(即列5) 单元格六(即列6)
我们可以定义里的宽度和高度值,从而让表格以我们的预设在其所在区域进行布局,以便达到有效的排版目的。在多行多列的表格里,当某一列的第一个单元格已经定义了宽度,那么,往下各单元格的宽度将跟它一致,如果同一列的所有单元格都设置了宽度,该列的最终宽度以width值最大的那个单元格为标准,——可见,我们只需设置某列的第一个单元格的宽度即可,其他同列的不必给出width属性,这样一可以节省代码二不会出现无效设置;表格的行的高度情形也是一样:当定义了某一行头一个单元格的高度之后,该行其他单元格会自动得到相同的高度值,不必再一一设置的height属性。尽量减少代码量总是一个好习惯,一来可以节省空间,二来打开速度也会得到改善——代码越多,系统处理代码的时间就越长,同时也更耗可贵的系统资源。
我们还应该注意的是,如果不设置的width和height属性,表格各单元格将根据里面的内容的占位情况拓宽自己,表格给各单元格的宽度分配将由系统自动进行,这样就容易出现不合理的情况,因此,应该根据需要设置单元格的高度和宽度。
多单元格表格里一个有趣的问题是单元格合并,其概念与Excel的合并单元格是一致的,只是实现方法不同。在HTML代码里,我们用colspan属性合并左右单元格,记作:colspan=数值,“数值”即为需要合并的单元格总数;而rowspan属性则合并上下单元格,记作:rowspan=数值。
让我们用上面的第二组示例表格来加工一下。先看合并左右的单元格——
代码:




 




1,2单元格合并了3
456

效果:.
1,2单元格合并了 3
4 5 6
下面是表格的上下单元格合并——
代码:









1,4单元格合并了23
56

效果:
1,4单元格合并了 2 3
5 6
 
通过HTML代码实现单元格的合并略显抽象一些,你可以研究本示例代码和第二组代码(2×3表格)的区别并比较两组表格的样式来慢慢领会,要完全掌握这一技术,你还需要亲自做些尝试。最后顺便提一下:有些论坛可能不支持表格单元格的合并。
表格嵌套
论坛所有精美的帖子,几乎无一例外地都用到表格的嵌套技术,其中的原因,如前所述,论坛中给用户提供施展身手的余地十分有限,只有通过表格的修饰,帖子才能既成为独立的显示单位,又达到如纯完整的Web页一样有着自己的装饰。表格的可分割性和容器特征在帖子制作中充当着重要的角色,兼管帖子的布局的同时还承载着表达帖子信息元素的重任。
作为容器,表格可以往里放置可以放置的元素。表格也是一个元素,故而表格放在表格里是合理的,因此就有了表格的嵌套。表格的嵌套还可以是另外的形式,那就是,一个表格的单元格里还有表格。不论是哪种形式的嵌套,理论上嵌套的层可以是无穷尽的,但现实中并不会这么做,我们总是根据需要有限制地使用嵌套,不会没完没了。
表格嵌套其实也不复杂。如果你能够独立用代码做一张表格(强烈建议练出这样的本事),那么,你就可以做一个两张表格的嵌套,很简单,把代码复制一下,粘贴在原代码的和之间(亦即在“和”的位置)。试看以下代码和两个表格的嵌套效果:


表一



表二


效果:.
表一 表二
从上面的表格效果上看,如果我们把文字“表一”删除掉,表格的嵌套将是非常完好的。如果再定义边框大小和颜色、cellpadding和cellspaing为其他值,加上背景色和背景图,或通过其他手段来修饰,那么,里表和外表之间,就会出现非常漂亮的边框,帖子的外框就这么搞掂了。当然,这是一个细活,你需要做反复的尝试,直到效果满意为止。或许你还需要更多层的嵌套,这就看你的想象力了——实现手段是不难的,因为你已经会了第一层的嵌套,第二层、第三层……第N层,无非就是如此。
现在我们来看看多单元格表格中,在单元格是嵌入表格的示例。先看代码:


 单元格一:无表格嵌套

我嵌套在单元格二里  


以下是效果:.
单元格一:无表格嵌套 我嵌套在单元格二里
上面的两个例子里,都将处于外层的表格(即外表)的宽度设置为450个像素,这是由于本页面的限制。在实际制作中,我们可以充分考虑未来浏览者的显示器的分辨率和论坛提供的可显示宽度来决定取值。好的习惯仍然是取绝对值,因为,你的帖子里边的内容宽度非常可能是绝对的,譬如图片有着自己固定的宽度, Flash影片也是使用绝对的width值,为了不让正文四周出现太多的空余,采用绝对值规范外表的宽度是有必要的。当然,还有一个好的做法,那就是,根本不用规定外表的宽度,而是让里边的内容自行撑宽外表,这么做至少要求我们注意两个方法的问题:一是,利用cellpadding或border的合理值来让外表的边缘显示外表的既设背景,二是,外表里面的诸元素的宽度要相对统一。任何一种实现方式都还有其自身的奥妙,不是用语言能够一一道明的,只有在不断地实践中才能逐一领悟和掌握。
当今用户的的显示器分辨率有两大标准:800×600和1024×768,这两种分辨率下,以动网论坛为例,用户发帖后帖子可显示的区域宽度是有区别的。为此,你需要通过尝试获知具体宽度,从而制作出的帖子不至于出现浏览者不能完整欣赏的现象。过宽的帖子,比如超过510个像素的宽度,分辨率设置为800×600的浏览者将看不到帖子右边的内容,而太小的宽度,又可能令帖子显得小里小气,也不理想。
深入学习表格
表格还有一些重要的内容需要彻底弄懂。实际上,这些内容,前面几节我们已经接触过,但我们还需要进一步去探讨一下。
我们先来做个实验。下面给出一条长度为450个像素的分隔线,然后在分隔线下面放置一张表格,其宽度亦为450个像素:
 
border=1
cesllpadding=15
cellspacing=8
width=450
 
现在,我们看到,表格的总宽度仍然是450个像素(它没有超越分隔线),因此,我们可以得出这样的结论:表格的border、cellpadding和cellspacing虽然都是占位元素,但它们不会使得表格变得更宽,换一个更生动的说法,表格的这些元素是往里占位的,而不是往外占位。
第二个实验:设定表格的宽度为400个像素,然后在里面放置一个可视元素,令其宽度为450,看看表格的总宽度发生了什么。我们依然用一条长度为450个像素的分隔分做参照。
 
本表格设定宽度为400个像素,但因表格里的分隔线宽度为450个像素,表格的实际显示宽度发生了变化。
 
现在我们看到,虽然在标签里设定了width=400,但表格的总宽度并不是400个像素,而是被表格里面的那条分隔线的实际宽度(450个像素)撑宽了。你可能会觉得奇怪:为什么表格总宽度超过了450个像素呢?道理是这样:表格设置了cellpadding值为10,cellpadding区域是不可放进任何可视内容的。细心比较一下,你将发现,表格宽出的部分正是留空的部分,即表格的单元格衬距。
可见,表格里面的内容会影响到表格的宽度。实际上,如果我们设置好表格里面的内容的宽度,表格的width值是完全可以不设置的,但这不是一个好的习惯,我们通常仍然需要合理地设置表格的宽度,但必须留意一个问题:表格的总体宽度是否超过了可显示的范围。
实验三:设定一个450个像素宽度的表格,表格的边框、单元格间距和衬距都为实值,该表格有三个单元格,每个单元格设定宽度为150(加起来恰好的450个像素),看看表格的实际宽度是否发生变化。这个实验仍然使用450个像素宽度的分隔线作参照。
 
width=150 width=150 width=150
 
上面的表格,我们设置border=1,cellpadding=10,cellspacing=6,三个单元格的宽度均为150个像素,结果是:表格的总体宽度未发生变化。由此我们得出结论:多单元格表格里,只要各单元格的宽度相加起来不超过
里的宽度赋值,它们不会因表格边框、单元格间距和单元格衬距都为实值而撑宽表格。
本节通过实验的方式,从表格的宽度角度剖析了表格的一些深层特征,估计这些知识和体验从其他的教程中或许是得不到的。它并不是很抽象,加上黑马创造的用分隔线做对照标准和耐心的讲解,悉心阅读和比较后,你会很容易掌握的。
表格应用示例一
本节我举一个表格嵌套的示例向大家展示帖子的制作过程。以下是本示例的参考代码,这些代码得出的是本示例的整体外观效果,内容需要你自己往里添加,添加的是此说明和本示例的代码,纯文字。





标 题



内容



.
标 题
内容
如果你还没有熟悉到一看代码就明白,你有必要看一下下面的分析。
本例有四层表格的嵌套,总共使用了六张表格。最里层是三张表格上下排列,属表格组合。我们从外往里分析代码。
最外层的表格,我们设置边框值为1并定义其颜色,这样,配合的边框颜色能够起到外边缘呈现出立体的感觉。外表的单元格衬距(cellpadding)为20,它恰好形成了帖子外边框。外表的宽度为600个像素,这是根据本页面而设置的,你可以在实际使用时更改。
第二层表格的原理和外层的差不多,只是,我们更改了各元素的颜色,单元格衬距也调小了,cellpadding赋值为10。
第三层表格没有做太多的设置,我们仅令其背景色为白色、单元格衬距为10,这样得出一个白色的边框。
第四层表格有三个上下并列组合的表格。第一个用来放帖子的标题;第二个表格只是用于隔开第一个和第三个表格并令之与第三层白色底的表格连为一体,为此它的border、cellpading和cellspacing都需要设置为0,高度则为10(与第三层表格所形成的边框一致);第三个表格用于放置帖子的内容,故将其单元格间距设置为10(也可设置单元格衬距),以便让文字等内容不至于太靠边。
本例帖子里的代码,黑马采用了缩退方式编写,意在让大家能够清楚的看到不同的代码代表不同层的表格,越缩进的代码越在里层(非表格代码和自动换行的除外)。
这个示例只是展现一种思路,你完全可以在此基础上通过其他手段(如添加表格背景图片、加入动态的图形和Flash影片等)做得更复杂、更精美一些。
表格应用示例二
以下是一个作品的框架。出于讲解方便,在不改变原貌的情况下对原作品作了些改动。








此处放一幅与标题相关的图片


标 题


分隔图标


【这里是正文,由六幅图和五段诗文组成】


分隔图标


签 名


小图修饰+音乐标签










.
此处放一幅与标题相关的图片
标 题
分隔图标
【这里是正文,由六幅图和五段诗文组成】
分隔图标
签 名
小图修饰+音乐标签
这个作品的框架用了八张嵌套的表格,每一张表格都有背景图片。其中外表是添加上去的,其作用是替代原来的body区域里的背景图,而原作品中的两张用于设置帖子正文处的表格略显多余,已经将其删除,仅保留七张表格。下面给出上面帖子框架的代码并作简单的分析。
从代码上看,这并不是一个很复杂的构架,它只是一个多重嵌套的方式。为更能直观地查看各表格定义了背景图后的效果.
最后给出该帖的核心代码。你应该发现,里面又多出了一些表格。是的,它们是简单的表格,作用仅为规范诗文的居中:每一段诗文使用一个表格,共五个。










金钥匙





文字





文字





文字




文字





文字






文:自己改提下
编辑:金钥匙












.
金钥匙


文字

文字

文字

文字

文字


文:自己改提下
编辑:金钥匙
',1)">
应该注意的是,表格要设置高度和宽度,且高、宽应与用作背景图的高、宽相一致,表格的border、cellpadding和cellspacing等值最好设置为 0(原因:为了使图片完美显示)。Flash影片也必须设置高度和宽度,设置为多高多宽应根据实际显示需要而定,但绝对不能大于表格的高度和宽度。
表格应用示例三
这是很常见的一种做帖手段,其实现思路是:给表格加入一个背景图片,这样一来,表格仍然是可以装载占位元素的容器,因此,我们给已经有了背景图片的表格加载一个Flash就成为可能。
通过查看图片的属性(右击→属性),我们可以看到图片的尺寸为490×605,由此,我们将定义表格的宽为490,高为605。代码如下:


此处为加载Flash代码

.
',2)">
Flash是雨,我们将把它们放置在相应的位置。影片底色是纯白的,我们通过定义可以令底色消失,代码是wmode="transparent"。以下是Flash代码举例:

OK,现在来看看效果:
.
',3)">
在上例中,我们令表格内部占位元素的垂直和水平对齐分别为底部对齐、居中,Flash的宽度为490、高度为305。这些,都是根据需要而定义的,可以通过反复尝试最后确定。以下是参考代码:






非常规排版技术
在教程的前面我们提到过,论坛里用于显示用户的帖子的区域是有限的,在同一显示分辨率的机器里,用户的帖子可显示的宽度比该分辨率的宽度要少一些。而有一些帖子,出于种种原因,我们可能不满足于受限的显示宽度,为此,有必要采用非常规排版技术,其目的是突破显示宽度限制。这就是所谓的“全屏技术”,即,令帖子以全屏宽度显示。
在HTML代码中,通过“层”技术,我们非常容易实现全屏显示某一单元(帖子可视作一个单元)。“层”具有重叠性,即,在一个已经存在的占位单元里,通过使用“层”的叠加,我们还可以在其上面再放置一个或多个单元。其结果是,多个单元的叠加,整体效果就是立体的,以下页面的左边的第二幅图就是通过使用“层”技术在图片之上叠加了一个透明的表格,从而导致图片不能通过正常的右击进行复制:
http://www.gxblk.com/pc/no1/tmtable.htm
查看上面黑马提供的页面,你或许还不能明白“全屏”技术的实现原理,但你应该理解“层”的叠加概念。当前较高版本的DW已经引入了“层”的概念,用过DW的朋友理解起来可能比较容易,为了让新手也能够很快接受这个概念,黑马举个不十分确切的例子,对“层”再加以说明:筑路,通常铺上一层较大的石头,这是第一层,压紧后再铺上碎石,第是第二层,往后有若干层。所有的层是重叠在一起的。这些层,就是我们要用于HTML帖子里。我们知道,用img加入一幅图片,这幅图片占的位置不可以再加入任何内容了,但通过“层”的叠加,我们就能够让其他内容浮于图片的上方,黑马在线听歌台的那个有“52”标志的Gif图片,就是这样放上去的。
论坛都有固定的结构,它规定用户发帖所能显示的地方是被限制好的。包含有发帖人头像等信息的左边栏,它已经有了占位元素,而它恰好是占去了我们想利用的显示帖子的宽度。那么,通过使用“层”技术,我们将帖子的左边部分往它那里叠加,加上正常可显示的部分,帖子就实现了“全屏”宽度显示了。同样的道理,我们还可以让帖子往上或往下一点,甚至,如果你愿意,你还可以让帖子的头部把论坛的功能菜单全部遮拦住(不建议这么做)!
不知道道理讲明了没有?呵呵,现在,还是来看看实例吧。
以下两个表格,都以img方式装载有相同的图片,不同的是,第一张表格我们用了“层”技术,令图片不完全在表格里面;第二张表格则是正常加载图片的,不作任何处理。
 


 
在上例中,第一张表格里,我们在图片代码前后用了如下代码:
这段代码就是实现图片部分超越表格框架亦即突破常规位置的关键。其中,id很重要,是系统识别哪个单元的重要标志,命名时一定不要与其他的id重复;left表示要移位的单元左边起始位置, top则是指上部开始位置,用负数值表示往左、往上移位,正数则往右、往下移位; width和 height其实指“层”的高度和宽度,通常与要移位的元素的宽度和高度相一致(论坛中可以省略width和height值,因为我们采用的是嵌入式使用“层”,“层”会自动获取宽与高。复杂的HTML页面不建议省略); position表明叠加的方式,有relative(相对位置叠加)和absolute(绝对位置叠加),使用前者的话,“层”所叠加的位置不因不同的分辨率而改变,即它的位置是固定的,使用绝对叠加则相反,会因分辨率的不同而发生位置变化,比如你想让一只蜜蜂采花粉,那么,如果你使用了相对位置,不同分辨率下打开你的帖子,它都是在花朵上采花粉的,但如果用了绝对位置,800×600分辨率下它是在花朵上采花粉,而1024×768分辨率下,蜜蜂可能是在石头上采的; z-index标识“层”在所有层中的位置,因为论坛有不可预知性,所以,好的习惯是把它赋值很大,以便保证它是在最上方的。
这段“层”代码还可嵌入到其他的代码中去。比如表格,我们可以在里面插入它,表格仍然给出id,样式如下:
...

上述代码式样里黑马没有定义宽度和高度——刚才说过,可以不定义的。在这里,“层”的宽度与高度实际上就是表格的实际宽度与高度,你也可以定义。
移位技术是实现“全屏”显示帖子技术的实现手段,通过上面的学习,如果已经掌握了“移位”帖子的方法,那么,在实践中多多尝试,掌握好精细的移位尺寸(单位为像素,即代码中的px),你就能够在需要的时候得心应手地让你的帖子得以完美地呈现出来。
使用“全屏”技术应该注意的事项:
一、尽量使用相对叠加位置方式以确保不同分辨率下帖子的移位都是按照预定义的方式进行;
二、注意计算尺寸,尽力避免帖子将功能按钮、菜单和相应应该显示的项目遮拦住;
三、编辑帖子之前记得将论坛编辑框下边的“自动修正”功能取消,否则有可能所做的移位设置不起作用。
做帖的一些好习惯
一、选择一款好用的HTML编辑器
尽管你可能对代码非常熟练,仍然建议使用HTML编辑器,一方面,可以事半功倍、减少代码的出错机率,另一方面,可以边编写帖子边查看效果以便随时更改不如意的地方。编辑程序的版本不要太低,比如,FrontPage2000尽管很优秀,但它未集成代码编辑环境下的自动显示和补齐代码功能,对一些标签的代码自动调整也常常令帖子面目全非,而FrontPage2003则是相当不错的,功能齐全,并有代码标错功能(以非常显眼的颜色将有错误的代码区域标识出来),非常贴切用户。DreamWaver的新版本则整合了图片处理功能,比如,用一张图片做表格的背景,可以通过动动鼠标、输入数字,轻而易举地将此图片割开(当然你需要上传被割开的图片才能在帖子中使用),它还集成有图片的简单处理,且,如果安装了与之配套的兄弟软件,它就更加十全十美了。总之,编辑器不必安装太多,有一款用得上手的就行了。
二、如果习惯了在线编写帖子,请编写完一组完整的代码后再切换到Design编辑环境预览,否则论坛系统的自动填充功能会将你的代码弄得乱七八糟,极可能难以挽救。对于需要移位的帖子,在编写时先不要使用移位代码,待帖子编写完毕并检查无误了,再加入移位代码。有音频的影视、音乐代码也尽量在最后再放上去,因为,一旦放了音乐之类的代码上去,如果多次切换到Design环境,音乐会同时播放,重唱一样的音乐会弄得你难以适应。
三、表格的居中,尽量不要使用其他的代码来令其对齐,而是使用表格的对齐属性代码来完成,在table代码里使用align=对齐数值。这是一个好习惯,也会减少废码的出现——当使用p、div或center之类的标签对齐表格时,系统通常会在代码里生成大量的其他代码,有时根本无法人为地控制。单一列的表格,也没有必要给td赋宽度值,因为那是没有必要的,它总要占满表格的宽度(前提是表格已经定义的宽度)。
四、做帖时,对帖子所使用到的图片尺寸尽量做到心中有数。比如,你要用表格背景图片方式发图,那么,表格的高与宽必须与图片的尺寸一致。而Flash影片、WMP和RP的播放界面尺寸,也应该在设置的时候考虑到表格的总体宽度。
五、没有影像的音频文件,其播放界面不要设置太大的高度,在embed标签里,WMP的高度45个象素最合适,RP在80上下就可以了。当需要隐藏播放界面时,请最好不用将width和height设置为0,因为那不是真正的隐藏,好的方法是设置hidden值为true。
六、当使用img形式发图时,你得根据论坛的情况设置装载有图片的表格的宽度。多数论坛会设置了一组JS代码来处理图片的宽度,即当图片的宽度大于300个象素时,图片就以300个象素显示。有时,一个论坛当时可能是这样的设置,往后又是那样的设置,也需要我们充分考虑到。
七、永远是在有了主题和准备好素材后再做帖子,千万别强迫自己做帖。
八、不要老依赖别人的帖子代码,因为,这样的话,你的创作能力永远得不到发挥,你只是沿着别人走过的路再走一回而已。
九、在自己的硬盘里建立一个文件夹,此文件夹下又建立若干子文件夹,当发现有好的素材,就分门别类地保存好,有条件的,能用得着的就上传,并用一个文件记录好它们的URL,甚至,为了更方便,不妨在本地硬盘建立一个HTML页面,用绝对路径显示这些资源的真实面目。
十、对于那些优秀的已经发布了的帖子要有个备份,建议修改一下代码,以相对路径将所有资源保存在本地磁盘,这样,当帖子借用的资源链接失效后,你仍然有补救的余地。
.