了解DIV+CSS
DIV元素是html(超文本语言)中的一个元素,是标签,用来为HTML文档内大块(block-level)的内容提供结构和背景的元素。DIV的起始标签和结束标签之间的所有内容都是用来构成这个块的,其中所包含元素的特性由DIV标签的属性来控制,或者是通过使用样式表格式化这个块来进行控制。css是英语Cascading Style Sheets(层叠样式表单)的缩写,它是一种用来表现 HTML 或 XML 等文件式样的计算机语言。
DIV+CSS是网站标准(或称“WEB标准”)中常用术语之一,通常为了说明与HTML网页设计语言中的表格(table)定位方式的区别,因为XHTML网站设计标准中,不再使用表格定位技术,而是采用DIV+CSS的方式实现各种定位。
HTML语言自HTML4.01以来,不再发布新版本,原因就在于HTML语言正变得越来越复杂化、专用化。即标记越来越多,甚至各个浏览器生产商也开发出只适合于其特定浏览器的HTML标记,这显然有碍于HTML网页的兼容性。于是W3C组织进而重新从SGML中获取营养,随后,发布了XML,XML是一种比HTML更加严格的标记语言,全称是可扩展标记语言。但是XML过于复杂,且当前的大部分浏览器都不完全支持XML。于是XHTML这种语言就派上了用场,XHTML语言就是一种可以将HTML语言标准化,用XHTML语言重写后的HTML页面可以应用许多XML应用技术。使得网页更加容易扩展,适合自动数据交换,并且更加规整。CSS布局标签
什么时候应该用DIV?
DIV元素是一个标签,但多层嵌套的DIV会严重影响代码的可阅读性。什么时候应该用DIV虽然没有什么硬性的规定,但DIV更适用于大体框架的定位。例如我们要定义一块头部的区域,一般会这样定义一个DIV:
[mw_shl_code=html,true] <ul id="navbar"> <li id="articles"> Articles</li> <li id="topics"> Topics</li> <li id="about"> About</li> <li id="contact"> Contact</li> <li id="contribute"> Contribute</li> <li id="feed"> Feed</li> </ul> <h1 id="masthead"> <a href="/"> <img src="/pix/alalogo.gif" alt="A LIST Apart: For People Who Make Websites" /> </h1> No. 214[/mw_shl_code]
这个例子定义了最上面的导航(ul部分),左边的logo和No.214的标记.
网页制作设计中,第一步就是构思,可以用PhotoShop或FireWorks等图片处理软件将需要制作的页面布局简单的构画出来,然后根据布局图设计。
一般来说,页面包括:顶部部分,其中又包括了LOGO、MENU和一幅Banner图片;内容部分,又可分为侧边栏、主体内容;底部,包括一些版权信息。可以命名为:顶部层Header、内容层PageBody、侧边栏层SideBar、主体内容层MainBody、底部层Footer。
新建一个文件夹,命名为“DIV+CSS布局练习”,在文件夹下新建两个空的记事本文档。
将一个记事本文档命名为index.htm,输入以下内容:
[mw_shl_code=html,true] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <link href="css.css" rel="stylesheet" type="text/css" /> </head> <body> </body> </html>[/mw_shl_code]
这是XHTML的基本结构。下面,我们在<body></body>标签对中写入DIV的基本结构,为了使以后阅读代码更简易,我们添加相关注释:[mw_shl_code=html,true] <div id="container"><!--页面层容器--> <div id="Header"><!--页面头部--> </div> <div id="PageBody"><!--页面主体--> <div id="Sidebar"><!--侧边栏--> </div> <div id="MainBody"><!--主体内容--> </div> </div> <div id="Footer"><!--页面底部--> </div> </div>[/mw_shl_code]
将另一个记事本文档命名为css.css,写入CSS信息,代码如下:
[mw_shl_code=html,true] /*基本信息*/ body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;} /*页面层容器*/ #container {width:100%} /*页面头部*/ #Header {width:800px;margin:0 auto;height:100px;background:#FFCC99} /*页面主体*/ #PageBody {width:800px;margin:0 auto;height:400px;background:#CCFF00} /*页面底部*/ #Footer {width:800px;margin:0 auto;height:50px;background:#00FFFF}[/mw_shl_code]把以上文件保存,用浏览器打开,这时我们已经可以看到基础结构了,这个就是页面的框架了。
一些常用的CSS代码的含义
font:12px Tahoma;这里使用了缩写,说明字体为12像素大小,字体为Tahoma格式。完整的代码是:font-size:12px;font-family:Tahoma;
margin:0px;使用了缩写,完整的是:margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px,也可以写成margin:0px 0px 0px 0px,顺序是 上 / 右 / 下 / 左,还可以书写为margin:0(缩写);这个样式说明body部分对上右下左边距为0像素,如果使用auto则是自动调整边距,另外还有以下几种写法:margin:0pxd auto;说明上下边距为0px,左右为自动调整;以后使用到的padding属性和margin有许多相似之处,他们的参数是一样的,只不过各自表示的含义不相同,margin是外部距离,而padding则是内部距离。
text-align:center 文字对齐方式,可以设置为左、右、中,这里设置为居中对齐。
background:#FFF 设置背景色为白色,这里颜色使用了缩写,完整的应该是background:#FFFFFF。background可以用来给指定的层填充背景色、背景图片,以后会用到这个格式:background:#ccc:url('bg.gif') top left no-repeat;表示使用#CCC(灰度色)填充整个层,使用bg.gif做为背景图片,top left表示图片位于当前层的左上端,no-repeat表示仅显示图片大小而不填充满整个层。top/right/bottom/left/center用于定位背景图片,分别表示上 / 右 / 下 / 左 / 中;还可以使用background:url('bg.gif') 20px 100px;表示X座标为20像素,Y座标为100像素的精确定位;repeat/no-repeat/repeat-x/repeat-y分别表示 填充满整个层 / 不填充 / 沿X轴填充 / 沿Y轴填充。height / width / color 分别表示高度(px)、宽度(px)、字体颜色(HTML色系表)。
当我们写好了页面大致的DIV结构后,我们就可以开始细致地对每一个部分进行制作了。我们把css.css中的样式全部清除掉,重新写入以下样式代码:
/*基本信息*/
body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;}
a:link,a:visited {font-size:12px;text-decoration:none;}
a:hover{}
/*页面层容器*/
#container {width:800px;margin:10px auto}
以上样式说明如下:
a:link,a:visited {font-size:12px;text-decoration:none;} ;a:hover {}
这两项分别是控制页面中超链接的样式。
#container {width:800px;margin:10px auto}指定整个页面的显示区域。
width:800px指定宽度为800像素,这里根据实际所需设定。
margin:10px auto,则是页面上、下边距为10个像素,并且居中显示。
接下来,开始制作TOP部分,TOP部分包括了LOGO、菜单和Banner,首先在FW下对设计好的图片进行切片,第一部分 为LOGO部分,由于LOGO图片并没有太多的颜色,这里我于是将这一部分保存为GIF格式(这样能使页面载入的速度更快,当然使用此格式之前必须确定图片并没有使用太多的颜色),调色板选择为精确,选择Alpha透明度,色版为白色(此处颜色应与背景色相同),导出为logo.gif,图像宽度为800px。第二部分为Banner部分,因为Banner部分是一个细致的图片,如果使用GIF格式颜色会有太大的损失,所以必须使用JPEG格式,将文件导出为banner.jpg。
然后我们在css.css中再写入以下样式:
/*页面头部*/
#header {background:url(logo.gif) no-repeat}
这个样式给页面头部分加入一个背景图片LOGO,并且不作填充。这里,我们没有指定header层的高度,因为header层中还有菜单和banner项,所以层的高度暂时是未知的,而层的属性又可以让层根据内容自动设定调整,因此我们并不需要指定高度。
下面我们制作菜单,代码如下:
[mw_shl_code=html,true] <div id="menu"> <ul> <li><a href="#">首页</a></li> <li class="menuDiv"></li> <li><a href="#">博客</a></li> <li class="menuDiv"></li> <li><a href="#">设计</a></li> <li class="menuDiv"></li> <li><a href="#">相册</a></li> <li class="menuDiv"></li> <li><a href="#">论坛</a></li> <li class="menuDiv"></li> <li><a href="#">关于</a></li> </ul> </div> <div id="banner"> </div>[/mw_shl_code]
以上<ul></ul>、<li></li>这两个HTML元素主要的作用就是在HTML中以列表的形式来显示一些信息。
对菜单使用列表<li>形式,可以在以后方便对菜单定制样式。<li class="menuDiv"></li>这一段代码是可以方便地对菜单选项之间插入一些分隔样式,例如预览图中的竖线分隔。需要分清楚的是,当在HTML中定义为id="divID"时,在CSS对应的设置语法则是#divID{}存,如果在HTML中定义为class="divID"时,则在CSS中对应的设置语法是.divID。如果id="divID"这个层中包括了一个<img></img>,则这个img在CSS中对应的设置语法应该是#divIDx img {},同样,如果是包含在class="divID"这个层中时,则设置语法应该是.divID img {}。另外,HTML中的一切元素都是可以定义的,例如table、tr、td、th、form、img、input...等等,如果你要在CSS中设置它们,则直接写入元素的名称加上一对大括号{}就可以了。所有的CSS代码都应该写在大括号{}中。
然后我们在css.css中再写入以下样式:
#menu ul {list-style:none;margin:0px;}
#menu ul li {float:left;}
第一个样式list-style:none,这一句是取消列表前点,因为我们不需要这些点。margin:0px,这一句是删除UL的缩进,这样做可以使所有的列表内容都不缩进。第二个样式使用了浮动属性(float),float:left是让内容都在同一行显示。
我们在#menu ul li {}再加入代码margin:0 10px,改成:
#menu ul li {float:left;margin:0 10px}
margin:0 10px的作用是让列表内容之间产生一个20像素的距离(左:10px,右:10px)。
明白了这些,我们再来固定菜单的位置,把代码改成如下:
#menu {padding:20px 20px 0 0}
/*利用padding:20px 20px 0 0来固定菜单位置*/
#menu ul {float:right;list-style:none;margin:0px;}
/*添加了float:right使得菜单位于页面右侧*/
#menu ul li {float:left;margin:0 10px}
这样,位置就确定了。下面在菜单间加入竖线,对留好的空的<li class="menuDiv"></li>,再添加以下代码:
.menuDiv {width:1px;height:28px;background:#999}
保存预览一下,竖线已经出来。不过,菜单选项的文字却在顶部,我们再修改成以下代码:
#menu ul li {float:left;margin:0 10px;display:block;line-height:28px}
效果基本上已经实现了,剩下的就是修改菜单的超链接样式,在css.css中添加以下代码:
#menu ul li a:link,#menu ul li a:visited {font-weight:bold;color:#666}
#menu ul li a:hover{}
页面顶部的完整代码
下面给出本例页面顶部的完整代码,供学习参考:
index.htm的内容:
[mw_shl_code=html,true] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <link href="css.css" rel="stylesheet" type="text/css" media="all" /> </head> <body> <div id="container"> <div id="header"> <div id="menu"> <ul> <li><a href="#">首页</a></li> <li class="menuDiv"></li> <li><a href="#">博客</a></li> <li class="menuDiv"></li> <li><a href="#">设计</a></li> <li class="menuDiv"></li> <li><a href="#">相册</a></li> <li class="menuDiv"></li> <li><a href="#">论坛</a></li> <li class="menuDiv"></li> <li><a href="#">关于</a></li> </ul> </div> <div id="banner"> </div> </div> </div> </body> </html>[/mw_shl_code]
css.css的代码:
[mw_shl_code=html,true] /*基本信息*/ body {font:12px Tahoma;margin:0px;text-align:center;background:#FFF;} a:link,a:visited {font-size:12px;text-decoration: none;} a:hover{} /*页面层容器*/ #container {width:800px;height:600px;margin:10px auto} /*页面头部*/ #header {background:url(logo.gif) no-repeat} #menu {padding:20px 20px 0 0} #menu ul {float:right;list-style:none;margin:0px;} #menu ul li {float:left;display:block;line-height:30px;margin:0 10px} #menu ul li a:link,#menu ul li a:visited {font-weight:bold;color:#666} #menu ul li a:hover{} .menuDiv {width:1px;height:28px;background:#999} #banner {background:url(banner.jpg) 0 30px no-repeat;width:730px;margin:auto;height:240px;border-bottom:5px solid #EFEFEF;clear:both} /*页面主体*/ #pagebody {width:800px;margin:0 auto;height:400px;background:#CCFF00} /*页面底部*/ #footer {width:800px;margin:0 auto;height:50px;background:#00FFFF}[/mw_shl_code]
1. 检查HTML元素是否有拼写错误、是否忘记结束标记
即使是老手也经常会弄错div的嵌套关系。可以用dreamweaver的验证功能检查一下有无错误。
2. 检查CSS是否正确
检查一下有无拼写错误、是否忘记结尾的 } 等。可以利用CleanCSS来检查 CSS的拼写错误。CleanCSS本是为CSS减肥的工具,但也能检查出拼写错误。
3. 确定错误发生的位置
如果错误影响了整体布局,则可以逐个删除div块,直到删除某个div块后显示恢复正常,即可确定错误发生的位置。
4. 利用border属性确定出错元素的布局特性
使用float属性布局一不小心就会出错。这时为元素添加border属性确定元素边界,错误原因即水落石出。
5. float元素的父元素不能指定clear属性
MacIE下如果对float的元素的父元素使用clear属性,周围的float元素布局就会混乱。这是MacIE的著名的bug,倘若不知道就会走弯路。
6. float元素务必指定width属性
很多浏览器在显示未指定width的float元素时会有bug。所以不管float元素的内容如何,一定要为其指定width属性。另外指定元素时尽量使用em而不是px做单位。
7. float元素不能指定margin和padding等属性
IE在显示指定了margin和padding的float元素时有bug。因此不要对float元素指定margin和padding属性(可以在float元素内部嵌套一个div来设置margin和padding)。也可以使用hack方法为IE指定特别的值。
8. float元素的宽度之和要小于100%
如果float元素的宽度之和正好是100%,某些古老的浏览器将不能正常显示。因此请保证宽度之和小于99%。
9. 是否重设了默认的样式?
某些属性如margin、padding等,不同浏览器会有不同的解释。因此最好在开发前首先将全体的margin、padding设置为0、列表样式设置为none等。
10. 是否忘记了写DTD?
如果无论怎样调整不同浏览器显示结果还是不一样,那么可以检查一下页面开头是不是忘了写下面这行DTD:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
失效http://115.com/file/dpa8u8hq#DIV+CSS基础教程.doc