遇到了一个小问题:不用css就无法消除链接的下划线。也许有解决办法,让我们用google来搜索一下。
第3小时
google搜索后还是没有找到办法,如何才能制作没有下划线的链接?一定有一个解决办法!
第4小时
可恶!因为不能消除下划线,我不能继续制作图片菜单。不过这个实验的规则是我自己制定的,我可以破例违反一下。我用一点点 css来解决,只要放一句style="text-decoration: none;"在链接的地方就可以了,yay!解决了菜单下划线的问题。
好了,我们接下来可以制作主要的2列。正文中的蝴蝶图片我用了2个表格来实现细边框效果,就象这样:
让我们来看看前4个小时的成果在IE6以外浏览器上的效果。噢!在Firefox中非常丑陋,在Opera和Netscape中看起来还不错。
第5小时
继续代码...,调试和修改。
工作中,我认识到<font>标签控制字体尺寸的局限性,我不能定义多种尺寸。真是该死!
News部分的文字排版也遇到了问题,为了缩进,我不得不用更多的表格嵌套来实现效果。为了使正文中的蝴蝶图片排列在文字的右面,我也不得不增加表格来解决。这种“欺骗”式的排版让我感到很无奈。
第6小时
设计结束了,看上去和最初的设计差不多,你可以点击这里看看 。
其中包含了多少表格,点击这里查看。
下面我们将看看什么是基于web标准的、用CSS布局的设计。我将从内容的标识开始。我将尽量使标识有语义,避免多余的标签。 p>
页头是一个图片,但它也是一个标题,所以我这样写代码:
<h1>Butterfly Watchers Association. They flutter. We watch them.</h1>我将稍后再考虑如何正确显示这个标题(理想情况下,我们尽可能多的关心内容,尽可能少的关心布局)。其他标题(news,Sightin gs and Membership)将被标识为<h2>。
菜单从根本上讲就是一个无序列表(list),所以将被标识为list。段落不需要分类(我们采用继承选择器来把它们"挂"在包含的层中)。我将对比原始的内容文本,看为了实现布局需要增加多少额外的标签(我将尽力避免增加标签)。
这就是原始的内容文本。看看原代码,它符合xhtml1.0 transitional规范。注意所有的元素都已经被包含在定义了名称的<div>中。新闻中的日期也被加上了date的类(class)。你可以看到代码非常简单。
第1小时
定义"container" 层的border为1px。通过在body样式中定义"text-align: center"将内容居中。为了在所有浏览器中都居中,还在"container"中定义了margin: 0 auto;(意思就是top=0, right=auto, bottom=0, left=auto)。居中的处理方法和表格一样容易。
定义"body"的padding"top"和"bottom"数值为20px(不直接在"container"中定义padding是为了适合所有浏览器)。
无序列表(li)必须定义为"display:inline",这样菜单会被显示在一行内。我在菜单间增加了导航图标。这些导航图标是用不重复背景方法定义的,可以精确定义(x,y)位置,类似这样:
background: url(menuBullet2.gif) no-repeat 4px 9px;菜单的点击颜色变化效果采用链接的hover样式,不再需要JavaScript。
我设置页头的蝴蝶图片为<h1>的背景,这样可以不用担心易用性,在不能显示图片的设备中(如屏幕阅读机和搜索机器人)也可以正常阅读标题。
第2小时
菜单的第一项(HOME)使用一个不同的图标,我不得不隐藏原来的背景,为HOME菜单增加一个额外的id(frst):
#hMenu ul li#frst再另外一个(CONTACT)图标:
background: transparent url(menuBullet3.gif) no-repeat 615px 9px;我无法用CSS控制2列有一样的高度,幸运的是,我可以用背景图片来变通实现。我定义了"container"纵向重复背景。
background: #fff url(bgMain.gif) repeat-y;第3小时
CSS定义盒比表格方便多了,特别是边框的许多属性非常有用。