说说CSS+Div布局中的结构与表现

作者:dudo 来源:dudo博客 时间:2008-06-05 18:22:00 

在Web标准中一个很重要的概念就是强调页面的结构与表现分离。说的通俗一点就是XHTML中应该没有样式化的东西,而且Web在浏览器中除内容外都应该由CSS表现,这包括布局与其它样式。一旦一个标准的XHTML代码写完之后,那么CSS可以实现其实百变面孔。其实XHTML是一个演员,CSS是编剧,XHTML演什么角色,都由CSS来决定的。

这听起来似乎有点理想主义,实现起来似乎就没有那么容易了。不过我还是想通过一个简单的例子来说问题。

我们在设计页面的时候遵循的一个原则就是:重要内容首先加载,将要内容稍后加载。因此我们会发现像我的博客一样,主内容代码是写在侧边栏前面的。但是我们却可以通过CSS使侧边栏位于左侧,如果不看代码只看在页面中的表现,这和先加载侧边栏没有什么不同。这就是结构和表现分离的好处。

假设我们有一个三栏的布局,其中两个是主内容区域,一个是侧边栏的次内容区域。那么按照上面的原则,我们应该把两个主内容区域的代码写在侧边栏次内容区域的前面,这样浏览器才会首先加载他们。那么我们就要构建下面的代码段:

<div id="content">  
  <div id="primaryContent"></div>  
   <div id="secondaryContent"></div>  
 <div id="sideContent"></div>  
</div>  

前面已经说过,结构和表现分离的好处就是我们可以任意地安排这三栏的位置。比如我们要把“sideContent”放在页面的左侧,主内容区位于中间和左侧,同时栏与栏之间有10px的间距。我们设定页面宽度为760px,扣除两个10px的间隔,那么内容区的共有740px的宽度,我们可以设定请内容区为290px,侧边栏为160px。于是有

#primaryContent {   
 float:left;   
   width:290px;   
  height:300px;   
}   
#secondaryContent {   
 float:left;   
   width:290px;   
  height:300px;   
}   
#sideContent {   
  float:left;   
   width:160px;   
  height:300px;   
}  

注:为了演示方便没有优化代码。
float:left为使三个div元素水平对齐的常用方法。这样我们预览页面的时候,三个div便会出现在同一行内。

接下来,我们要移动它们的位置。把primaryContent移动到160+10px的位置(10px)为间距,那么可以设置为

margin-left:170px;

把sendcondary依此向右移动,和primaryContent的距离也是10px,需要

margin-left:10px;

那么这个时sideContent已经被挤出content了,并且其左边缘正好是content的右边缘,因此我们要使用负的边距把它拉回到正常位置:

margin-left:-760px;

这样位置就正好了。

演示地址:标签示例.htm (1.97 KB)(修正bug,请使用Internet Explorer 7、Firefox等浏览器查看)

对于两样一段XHTML代码,我们只需要修改CSS样式就可以实现多种布局:
点击此处查看运行效果(1)
点击此处查看运行效果(2)

其实还能实现更复杂的布局。我举这个例子当然不是在讲布局的技巧,只是说说为什么一下强调结构与表现分例,光说不练可不好理解它的真谛。

标签:布局,div,内容,设计
0
投稿

猜你喜欢

  • 数据库应用经验:如何简单安装MySQL数据库

    2009-01-04 12:58:00
  • 有效LOGO设计的最重要的提示

    2010-06-09 12:05:00
  • 10个值得关注的优秀CSS框架

    2009-05-29 18:11:00
  • 好用的JS图片预加载类

    2007-08-13 13:49:00
  • 网页中常用数字/字母序号与代码对照表

    2009-03-19 14:00:00
  • SqlServer 基础知识 数据检索、查询排序语句

    2011-11-03 16:46:12
  • asp检测文件编码方法

    2007-10-03 14:27:00
  • VS 2010 Ultimate架构代码探索

    2010-05-02 20:38:00
  • 用AspJpeg调整文字水印透明,生成图片水印的效果

    2008-12-29 19:43:00
  • MYSQL教程:检查数据表和修复数据表

    2009-03-11 15:24:00
  • asp如何做一个看他爱不爱你的小测验?

    2010-07-11 21:16:00
  • AspJpeg组件:介绍、注册、高级使用方法

    2010-01-25 12:42:00
  • 一些关于SQL2005+ASP.NET2.0的问题

    2007-09-23 13:01:00
  • 两个2008北京奥运会倒计时js代码

    2008-06-11 13:26:00
  • 使用IP地址来统计在线人数方法

    2007-08-13 12:51:00
  • HTML与javascript中常用编码浅析

    2008-12-23 12:20:00
  • 不同浏览器空格的宽度

    2007-08-22 08:29:00
  • 链接与文本标签们

    2008-04-04 18:07:00
  • 使用Dreamweaver便捷技巧方法十六则

    2010-07-02 16:28:00
  • asp select下拉菜单选择图标并实时显示

    2011-04-03 10:33:00
  • asp之家 网络编程 m.aspxhome.com