|
前页|后页| 目录|元素| 特性 表格目录
HTML表格模版允许用户在复杂的结构中组织数据.表格包
含列表,图案,表单,数字符号,预置文本和其它的表格.
在这个表格模板中,横行和竖列可以互相
成组.这个表格的组合传送结构可以被用户代理器作强调
结构渲染.
横行组在大型表格中有一定的用处.智能化的用户代理 器可以允许在屏幕上保留头和尾信息来滚动表格.相似的, 当长的表格被打印时,包含表格数据的头和尾信息在每页 上都被重复. 注意:这份说明书包含更多的关于表格的
细节信息,在表格设计理论和安装发行
章节中.
表格结构一个HTML表格具有下列的结构:
TABLE元素<!ELEMENT TABLE - - (CAPTION?, (COL*|COLGROUP*), THEAD?, TFOOT?, TBODY+)> <!ATTLIST TABLE --table element -- alignAlign--table position relative to window -- bgcolor --background color for cells -- width--table width relative to window -- cols--used for immediate display mode -- border--controls frame width around table -- frame--which parts of table frame to include -- rules--rulings between rows and cols -- cellspacing--spacing between cells -- cellpadding-- spacing within cells --开始标记:需要,结束标记:需要 特性定义
在它处定义的特性
TABLE元素包含所有其
它指定说明标签,横行,内容,格式的元素.
在表格中计算横行和竖列的数量表格中横行的数量等于TR 元素中包含的数字.用户代理器应当忽略通过单元生成横 行的超过部分(译者:超过TR这个值).有几种方法来判定竖列的数量:
在此例中用户代理器认为表格有三竖列.
如果表格中竖列的数量没有通过cols特性来指定,
用户代理器会在渲染前等待整个表格到达.通常等到整个
表格的结尾而竖行数和表格宽度并不需重新显示.设定的
cols特性作为给可视化代理器收到一行显示一条
的某种暗示.作者被建议使用COL
和COLGROUP元素来指
定竖行属性而不要用cols特性来指定.
<TABLE cols="3"> ...the rest of the table... </TABLE> 表格方向性表格的方向性通过TABLE 元素的dir特性来指定. 对于一个从左到右的表格(缺省),竖列1在竖列2的左边而 横列1在顶端.对于从右到左的表格,竖列1在竖列2的右 边而横行1仍在最上.类似地,从左到右的表格(缺省),额外的单元被加到表格的右端,而对于从右到左的表格,额外的单元被加到左边.?!-- Make more general: dir inherited by block-level elements, most general is at TABLE level --> 当设定TABLE元素时, dir特性依然可影响表 格单元中文字的方向(因为dir 特性可被封闭级元素继承). 为指定表格从右到左,如下设定dir
特性:
在个别的单元中的文字方向可通过定义单元的元素的dir
特性设定来改变.请参见双向文本
章节来获得更多的关于文字方向的问题.
<TABLE dir="RTL"> ...the rest of the table... </TABLE> 表格说明标签:?A NAME="edef-CAPTION">CAPTION 元素<!ELEMENT CAPTION - - (%inline;)+> <!ENTITY % CAlign "(top|bottom|left|right)"> <!ATTLIST CAPTION--table caption -- attrs--%coreattrs,%i18n,%events -- alignAlign-- relative to table -- ?>开始标记:需要,结束标记:需要 特性定义
在它处定义的特性
在显示时,CAPTION元
素的文字用来描述表格的本质.CAPTION
元素必须紧接着TABLE
开始标记被引用.
例如, <TABLE cols="3"> <CAPTION>Cups of coffee consumed by each senator</CAPTION> ...the rest of the table... </TABLE> 对横行编组:?A NAME="edef-THEAD">THEAD,TFOOT 和TBODY元素<!ELEMENTTHEAD - O (TR+)> <!ELEMENT TFOOT - O (TR+)>开始标记:需要,结束标记:可选 <!ELEMENTTBODY O O (TR+)>开始标记:可选,结束标记:可选 <!ATTLIST (THEAD|TBODY|TFOOT) -- table section -- attrs-- %coreattrs, %i18n, %events -- %cellhalign -- horizontal alignment in cells -- %cellvalign -- vertical alignment in cells -- > 在它处定义的特性
一个表格必须包含至少一个横行组.每一个横行组被分成
三个部分:头,主干和尾.头和尾是可选?的.THEAD
元素定义头,TFOOT元
素定义尾而TBODY元素
则定义主干.
在显示时,每一个THEAD, TFOOT和TBODY 实例必须包含一个或多个横行(参见TR). 此例举例说明表格头,尾和主干的次序和
结构.
在TABLE定义中TFOOT
必须在TBODY前出现以
便用户代理器可以在收到所有的(可能有众多数量)横行
数据前渲染表格尾.
<TABLE> <THEAD> <TR>...header information... </THEAD> <TFOOT> <TR>...footer information... </TFOOT> <TBODY> <TR>...first row of block one data... <TR>...second row of block one data... </TBODY> <TBODY> <TR>...first row of block two data... <TR>...second row of block two data... <TR>...third row of block two data... </TBODY> </TABLE> 可选横行组标记
以前版本的表格可以通过移去一定的结
束标记而变短.
<TABLE> <THEAD> <TR>...header information... <TFOOT> <TR>...footer information... <TBODY> <TR>...first row of block one data... <TR>...second row of block one data... <TBODY> <TR>...first row of block two data... <TR>...second row of block two data... <TR>...third row of block two data... </TABLE> 竖列组:COLGROUP 和COL元素COLGROUP元素<!ELEMENTCOLGROUP - O (col*)> <!ATTLIST COLGROUP %attrs; ?--%coreattrs,%i18n,%events -- span ?NUMBER 1 --default number of columns in group -- width CDATA ?#IMPLIED?-- default width for enclosed COLs -- %cellhalign; -- horizontal alignment in cells -- ?%cellvalign; -- vertical alignment in cells -- ?>开始标记:需要,结束标记:可选 特性定义
在它处定义的特性
一个表格必须包含至少一个竖列组.在没有任何竖列组定
义的情况下,一个表格被认为有一个竖列组并且包含了表
格中所有的坚列.COLGROUP
元素建立一个清楚的竖列组.
COLGROUP元素的width 特性指明竖列组中每一个竖列的缺省的宽度.特殊的"0*" 告诉用户代理器把每竖列组中的每个竖列的宽度设成最 小宽度.在个行为当COL 元素存在时无效. 在下面例程中的表格有两个竖列组.第一
个竖列组包含10个竖列而第二个则包含5个竖列.对于第
一组中的每竖列的宽度是50个像素.而第二组中每个竖列
的宽度则是最小值.
<TABLE> <COLGROUP span="10" width="50px"> <COLGROUP span="5" width="0*"> <THEAD> <TR> ... </TABLE> The?A NAME="edef-COL">COLelement<!ELEMENTCOL - O EMPTY> <!ATTLIST COL --column groups and properties -- ?%attrs; ?--%coreattrs,%i18n,%events -- ?span ?NUMBER 1 --number of columns spanned by group -- ?width CDATA ?#IMPLIED?-- column width specification -- ?%cellhalign; -- horizontal alignment in cells -- ?%cellvalign; -- vertical alignment in cells -- ?>开始标记:需要,结束标记:禁止 特性定义
在它处定义的特性
每一个通过COLGROUP
定义的竖列组可以包含零作或更多COL
元素.一个COL元素并不
相同地如COLGROUP定
义竖行组;它简单地共享同一竖列组中的竖例特性值.注
意COL元素为空,它们只
被特性影响.
此例中的表格包含两个竖列组.第一个竖
列组包含三个竖例,第二个竖列组则有两个竖列.合法的
水平空间如下分配:首先用户代理器为第一个竖列分配30
个像素.然后指派第二列的最小的空间.剩?下的水平空间
被?分成6个相同的部分.第三列将得到?其中的两?分,第四列
分到?一份而第?五列分到?三份.
<TABLE> <COLGROUP> <COL width="30px"> <COL width="0*"> <COL width="2*"> <COLGROUP align="center"> <COL width="1*"> <COL width="3*" align="char" char=":"> <THEAD> <TR> ... </TABLE>我们在第二竖列组中把align 特性设置为"center".所有在每一个列中所有单元都将继承 这个值,但也可以取代.实际上,最后的COL 正完成此项,通过指定列中的每个单元可以支配通过":" 字符的列. Table rows: The?A NAME="edef-TR">TRelement<!ELEMENTTR - O (TH|TD)+> <!ATTLIST TR ?--table row -- %attrs; --%coreattrs,%i18n,%events -- %cellhalign; --horizontal alignment in cells -- %cellvalign; --vertical alignment in cells -- bgcolor %Color #IMPLIED?-- background color for row -- ?>开始标记:required,结束标记:optional 在它处定义的特性
TR作为一个存放一行表
格单元的容器.
这个例程表格包含三行,每行以TR
元素开始:
<TABLE> <CAPTION>Cups of coffee consumed by each senator</CAPTION> <TR>...Aheader row... <TR>...First row of data... <TR>...Second row of data... ...the rest of the table... </TABLE> 表格单元:?A NAME="edef-TH">TH 和?A NAME="edef-TD">TD 元素<!ELEMENT(TH|TD) - O %block> <!ATTLIST(TH|TD) --header or data cell -- ?%attrs; ?--%coreattrs,%i18n,%events -- ?axis ?CDATA ?#IMPLIED?--defaults to cell content -- ?axes ?CDATA ?#IMPLIED?--list of axis names -- ?nowrap ?(nowrap) #IMPLIED?--suppress word wrap -- ?bgcolor %Color #IMPLIED?--cell background color -- ?rowspan NUMBER 1 --number of rows spanned by cell -- ?colspan NUMBER 1 -- number of cols spanned by cell -- ?%cellhalign; -- horizontal alignment in cells -- ?%cellvalign; -- vertical alignment in cells -- ?>开始标记:需要,结束标记:可 选?/B> 特性定义
在它处定义的特性
TH元素放置引导信息,
当TD元素放置数据时.
这些区别允许用户代理器来明显地渲染引导信息和数据
单元,甚至在缺少风格页情况下.
单元可以是空的(例如:包含空数据). 下面的表格包含四个竖列,均通过一个竖
列描述来引导.
<TABLE> <CAPTION>Cups of coffee consumed by each senator</CAPTION> <TR> <TH>Name <TH>Cups <TH>Type of Coffee <TH>Sugar? <TR> <TD>T. Sexton <TD>10 <TD>Espresso <TD>No <TR> <TD>J. Dinnen <TD>5 <TD>Decaf <TD>Yes ...the rest of the table... </TABLE>你的用户代理器如下开始描述表格:
<TABLE border="border"> ...the rest of the table... </TABLE>通过框线,你的用户代理器如下开始描述表格:
为单元加标签axis和axes 特性提供指定单元标签的手段.语音合成器使用这些标签来认明每个单元的内容和位 置.处理软件可以在把表格内容传到数据库时如数据库字 段名般来考虑它们. 在下面的例程中,我们把axis
特性值设置成每个参议员的姓.我们如下在"Name"列中标
签单元值.
<TABLE border="border"> <CAPTION>Cups of coffee consumed by each senator</CAPTION> <TR> <TH>Name <TH>Cups <TH>Type of Coffee <TH>Sugar? <TR> <TD axis="Sexton" axes="Name">T. Sexton <TD>10 <TD>Espresso <TD>No <TR> <TD axis="Dinnen" axes="Name">J. Dinnen <TD>5 <TD>Decaf <TD>Yes </TABLE> 跨越数个横行和竖列的单元单元可以跨越数个横行和竖列.单元跨越横行和竖列的数 量通过rowspan和colspan 特性来对TH或TD 元素进行设置.在这个表格定义中,我们指定在横行4,竖
列2?的单元应当跨越总和为在的竖列,包括当前横行.
<TABLE border="border"> <CAPTION>每个参议员消耗的咖啡杯数</CAPTION> <TR> <TH>姓名 <TH>杯数 <TH>咖啡品种 <TH>是否加糖? <TR> <TD>T. Sexton <TD>10 <TD>Espresso <TD>不 <TR> <TD>J. Dinnen <TD>5 <TD>Decaf <TD>是 <TR> <TD>A. Soria <TD colspan="3"><em>不知道</em> </TABLE>这个表格应当被用户代理器如下渲染: 每个参议员消耗的咖啡杯数 ?--------------------------------------- 姓名?|杯数|咖啡品种 |是否加糖?| ?--------------------------------------- T.Sexton|10?|Espresso ?|否 ?| ?--------------------------------------- J.Dinnen|5 |Decaf |是 ?| ?--------------------------------------- A.Soria |不知道 ?| ?--------------------------------------- 这个例程举例说明了如何定义单元来跨
越超过一个横行或竖列并影响到后来单元的定义.考虑如
下的表格定义:
<TABLE border="border"> <TR><TD>1 <TD rowspan="2">2 <TD>3 <TR><TD>4 <TD>6 <TR><TD>7 <TD>8 <TD>9 </TABLE>这个表格会被如下渲染: ------------- |1|2|3|? ----| |---- |4| |6| ----|---|---- |7|8|9| -------------如标为"2"的单元跨越两个横行,它影响了在下面横行中 定义的单元位置.注意如果单元"6"没有在横行2中被定义, 一个额外的空单元将被用户代理加上空的单元来完成整 个横行. 类似地,在下列的表格定义中: <TABLE border="border"> <TR><TD>1 <TD>2 <TD>3 <TR><TD colspan="2">4 <TD>6 <TR><TD>7 <TD>8 <TD>9 </TABLE>单元"4"跨越了2个竖列,所在单元"6"被放在第三列. ------------- |1|2|3|? --------|---- |4 |6| --------|---- |7|8|9| ------------- 这个例程举例说明了如何建立一个交叠
的单元.在这个表格中,单元"5"跨越了两个横行而单元"7"
跨越了2个竖列,所以这在"7"?和"9"之间有个交叠的单元:
<TABLE border="border"> <TR><TD>1 <TD>2 <TD>3 <TR><TD>4 <TD rowspan="2">5 <TD>6 <TR><TD colspan="2">7 <TD>9 </TABLE>这个表格将在渲染时传达交叠: ------------- |1|2|3|? ------------- |4|5|6|? ----|...|---- |7: |9|? ------------- 可视用户代理器的表格格式下面的描述说明了告诉用户代理器如何格式化表格的 HTML表格特性.风格页将提供用户代理器更好的控制.在写 这份说明书?的时候,[CSS1] 并不提?供来控制可视化代理器表格格式化方面的结构.这个版本的HTML包括的控制结构为: 水平和垂直对齐方式下列的特性可以被不同的表格元素设定(参见它们的定义).<!-- horizontal alignment attributes for cell contents --> <!ENTITY%cellhalign ?"align(left|center|right|justify|char)#IMPLIED char CDATA ?#IMPLIED?--alignment char,e.g.char=':'-- charoff CDATA ?#IMPLIED?-- offset for alignment char --" ?> <!-- vertical alignment attributes for cell contents --> <!ENTITY%cellvalign ?"valign (top|middle|bottom|baseline) #IMPLIED" ?> 特性定义
当charoff被用来 设置?一个对齐字符的偏移量时,偏移方向由当前文字方向 来判定(通过dir特性 设置).在从左到右的文字中(缺省),偏移从左页缘开始.在 从右到左的文本,偏?移从右页缘开始. 此例中的表格把一个横行中的货币值根
据小数点排成一行.我们通过"."字符来显示地对它们排?
列.
<TABLE border="border"> <COLGROUP> <COL><COL align="char" char="."> <THEAD> <TR><TH>Vegetable <TH>Cost per kilo <TBODY> <TR><TD>Lettuce ?<TD>$1 <TR><TD>Silver carrots <TD>$10.50 <TR><TD>Golden turnips <TD>$100.30 </TABLE>格式化后表格看上去应当如此: ------------------------------ | Vegetable?|Cost per kilo| |--------------|-------------| |Lettuce | ?$1 | |--------------|-------------| |Silver carrots| $10.50| |--------------|-------------| |Golden turnips| ?$100.30| ------------------------------ 对齐方式说明的继承单元内容的对齐方式可以指通过单元基来指定一个单元, 或从包含的元素继随而,如横行,竖列及表格自行align, char和charoff 特性的优先权次序如下(从高到低):? ? 单元的缺省对齐方式取决于用户代理器.然而用户代 器应当根据当前方向性来取代缺省特性(就是说不只是所 有的情况都是"left"). 不提供align特性 "justify"的用户代理器可用"left"值取代. 框线和线条下面的特性影响表格外部的框线和线条.特性定义
在下面的表格中,5像素宽的细线将在表
格的左边,右边以及所有竖列之间被渲染.
<TABLE border="5px" frame="vsides" rules="cols"> <TR> <TD>1 <TD>2 <TD>3 <TR> <TD>4 <TD>5 <TD>6 <TR> <TD>7 <TD>8 <TD>9 </TABLE> 因此,例如:
<FRAME border="2px"> <=> <FRAME border="2px" frame="border" rules="all">和 <FRAME border> <=> <FRAME frame="border" rules="all"> 表格单元空缘两种特性控制了单元中的空间.Attribute definitions
在下面的表格中,cellspacing
指定每个单元之间以及与其它的表格框线之间将以20像
素分开.cellpadding
特性指定单元的顶缘和尾缘与单元内容以10%允许的垂直
空间分开(总数为20%).类似的,单元的左缘和右缘将与内
容将以10%允许的水平空间分开(总数为20%).
<TABLE> <TR cellspacing="20"> <TD>Data1 <TD cellpadding="20%">Data2 <TD>Data3 </TABLE> 一些表格例程下面的表格例程举例说明了所有表格元素的交互作用.例程1在"ASCII?艺术"中,有如下的表格:
<TABLE border="border"> <CAPTION>一个单元合并测试表格 </CAPTION> <TR><TH rowspan=2><TH colspan="2">平均 <TH rowspan="2">其它<BR>目录<TH>综合 <TR><TH>高<TH>重 <TR><TH align="left">男性<TD>1.9<TD>0.003 <TR><TH align="left" rowspan="2">女性<TD>1.7<TD>0.002 </TABLE>将被如下渲染: ?一个单元合并测试表格 ?/--------------------------------------------------\ ?| ?| ?平均 |?其它 ?|?综合 | ?| ?|-------------------|?目录 ?|--------| ?| ?| ?高 | 重 ?| ?| ?| ?|----------------------------------------|--------| ?|男性 |1.9 |0.003 | ?| ?| ?|-----------------------------------------|--------| ?|女性 |1.7 |0.002 | ?| ?| ?\--------------------------------------------------/在你的浏览器上,这个表格看上去如此:
例程2这个例程举例说明了横行和竖列的组.这个例?程.这个例 程引自"设计国际化软件(Developing International Software)",作 者Nadine Kano.在"ASCII艺术"中,有如下的表格: <TABLE border="2px" frame="hsides" rules="groups"> <CAPTION>CODE-PAGE SUPPORT IN MICROSOFT WINDOWS</CAPTION> <COLGROUP align="center"> <COLGROUP align="left"> <COLGROUP align="center" span="2"> <COLGROUP align="center" span="3"> <THEAD valign="top"> <TR> <TH>Code-Page<br>ID <TH>Name <TH>ACP <TH>OEMCP <TH>Windows<br>NT 3.1 <TH>Windows<br>NT 3.51 <TH>Windows<br>95 <TBODY> <TR><TD>1200<TD>Unicode (BMP of ISO/IEC-10646) <TD><TD><TD>X<TD>X<TD>* <TR><TD>1250<TD>Windows 3.1 Eastern European<TD>X <TD><TD>X<TD>X<TD>X <TR><TD>1251<TD>Windows 3.1 Cyrillic <TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1252<TD>Windows 3.1 US (ANSI) <TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1253<TD>Windows 3.1 Greek <TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1254<TD>Windows 3.1 Turkish <TD>X<TD><TD>X<TD>X<TD>X <TR><TD>1255<TD>Hebrew<TD>X <TD><TD><TD><TD>X <TR><TD>1256<TD>Arabic <TD>X<TD><TD><TD><TD>X <TR><TD>1257<TD>Baltic<TD>X <TD><TD><TD><TD>X <TR><TD>1361<TD>Korean (Johab) <TD>X<TD><TD><TD>**<TD>X <TBODY> <TR><TD>437<TD>MS-DOS United States <TD><TD>X<TD>X<TD>X<TD>X <TR><TD>708<TD>Arabic (ASMO 708) <TD><TD>X<TD><TD><TD>X <TR><TD>709<TD>Arabic (ASMO 449+, BCON V4) <TD><TD>X<TD><TD><TD>X <TR><TD>710<TD>Arabic (Transparent Arabic) <TD><TD>X<TD><TD><TD>X <TR><TD>720<TD>Arabic (Transparent ASMO) <TD><TD>X<TD><TD><TD>X </TABLE>将被如下渲染: CODE-PAGE SUPPORT IN MICROSOFT WINDOWS =============================================================================== Code-Page |Name |ACP?OEMCP|Windows Windows Windows ?ID ?| ?| ?|?NT3.1NT3.51 ?95 ------------------------------------------------------------------------------- 1200 |Unicode (BMPof ISO10646) | ?| ?X X * 1250 |Windows 3.1Eastern European |?X | ?X X X 1251 |Windows 3.1Cyrillic |?X | ?X X X 1252 |Windows 3.1US(ANSI) ?|?X | ?X X X 1253 |Windows 3.1Greek ?|?X | ?X X X 1254 |Windows 3.1Turkish ?|?X | ?X X X 1255 |Hebrew |?X | ?X 1256 |Arabic |?X | ?X 1257 |Baltic |?X | ?X 1361 |Korean (Johab) |?X | ?** ?X ------------------------------------------------------------------------------- ?437 |MS-DOS United States | ?X | ?X X X ?708 |Arabic (ASMO708) ?| ?X | ?X ?709 |Arabic (ASMO449+,BCON V4)?| ?X | ?X ?710 |Arabic (Transparent Arabic)?| ?X | ?X ?720 |Arabic (Transparent ASMO) ?| ?X | ?X ===============================================================================在你的用户代理器上,它将如下:
|