![](/data/00/00/01/35/44/avatar/dz_avatar.jpg)
了解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。写入整体层结构与CSS新建一个文件夹,命名为“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">
*本站禁止HTML标签噢*
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
*本站禁止HTML标签噢* 无标题文档</title>
<link href="css.css" rel="stylesheet" type="text/css" />
</head>
*本站禁止HTML标签噢*
</body>
</html>[/mw_shl_code]
这是XHTML的基本结构。下面,我们在 *本站禁止HTML标签噢* </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">*本站禁止HTML标签噢*
*本站禁止HTML标签噢* <a href="#">首页</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">博客</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">设计</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">相册</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">论坛</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">关于</a></li>
</ul>
</div>
<div id="banner">
</div>[/mw_shl_code]
以上 *本站禁止HTML标签噢* </ul>、 *本站禁止HTML标签噢* </li>这两个HTML元素主要的作用就是在HTML中以列表的形式来显示一些信息。对菜单使用列表 *本站禁止HTML标签噢* 形式,可以在以后方便对菜单定制样式。<li class="menuDiv"></li>这一段代码是可以方便地对菜单选项之间插入一些分隔样式,例如预览图中的竖线分隔。需要分清楚的是,当在HTML中定义为id="divID"时,在CSS对应的设置语法则是#divID{}存,如果在HTML中定义为class="divID"时,则在CSS中对应的设置语法是.divID。如果id="divID"这个层中包括了一个 *本站禁止HTML标签噢* </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">
*本站禁止HTML标签噢*
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
*本站禁止HTML标签噢* 无标题文档</title>
<link href="css.css" rel="stylesheet" type="text/css" media="all" />
</head>
*本站禁止HTML标签噢*
<div id="container">
<div id="header">
<div id="menu">
*本站禁止HTML标签噢*
*本站禁止HTML标签噢* <a href="#">首页</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">博客</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">设计</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">相册</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <a href="#">论坛</a></li>
<li class="menuDiv"></li>
*本站禁止HTML标签噢* <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]
Div+CSS常见错误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