`
ko8e
  • 浏览: 52131 次
  • 性别: Icon_minigender_1
  • 来自: 龙岩
社区版块
存档分类
最新评论

div+css学习之二列和三列布局

阅读更多
  • 二列自适应宽度
  • 二列固定宽度
  • 二列固定宽度居中
  • xhtml的块级元素(div)和内联元素(span)
  • float属性
  • 三列自适应宽度
  • 三列固定宽度
  • 三列固定宽度居中
  • IE6的3像素bug

一、两列自适应宽度
下面以常见的左列固定右列自适应为例,因为div为块状元素,默认情况下占据一行的空间,要想让下面的div跑到右侧,就需要做助css的浮动来实现。首先创建html代码如下:

<div id="side">此处显示 id "side" 的内容</div>
<div id="main">此处显示 id "main" 的内容</div>



按照如图所示的创建方法,把两个div都创建出来,或手工写出代码。div创建完成后,开始创建css样式表,代码如下:

#side { background: #99FF99; height: 300px; width: 120px; float: left; }
#main { background: #99FFFF; height: 300px; width: 70%; margin-left: 120px; }




先创建#side的样式,为了便于查看,设置了背景色。注意,side的浮动设置为向左浮动;



然后创建#main样式,注意这里设置#main的左边距为120px。预览结果如下:

当我们拖动浏览器窗口变大变小时,#main的宽度也会跟着改变。这里设置margin-left:120px;正好让出#side占去的120px宽度,如果这里设置为122px的话,中间将出现2px的空隙,大家可以试一下。


<!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" />
<style>
#side { background: #99FF99; height: 300px; width: 120px; float: left; }
#main { background: #99FFFF; height: 300px; width: 70%; margin-left: 120px; }
</style>
</head>
<body>
<div id="side">此处显示 id "side" 的内容</div>
<div id="main">此处显示 id "main" 的内容</div>
</body>
</html>


二、两列固定宽度
有了前面的基础,两列固定宽度就容易多了,只需要把#main的宽度由百分比改为固定值,如下图:

三、两列固定宽度居中
两列固定宽度居中,需要在两列固定宽度的基础上改进,在学一列固定宽度居中时,我们知道让它居中的方法,所以这里需要在这两个div之外再加一个父div:

<div id="content">
<div id="side">此处显示 id "side" 的内容</div>
<div id="main">此处显示 id "main" 的内容</div>
</div>

操作方法:在源代码里选中这两个div的代码后,点击工具栏上插入div按钮,填写id后确定,得到如上的代码

下面就需要设置#content的样式了,我们知道,#side的宽度为120px,#main宽度为350px,那么#content的宽度应该为这两者之和,然后设置#content居中,那么整体就居中了:



<!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" />
<style>
#content { width:470px; margin:0 auto;}
#side { background: #99FF99; height: 300px; width: 120px; float: left; }
#main { background: #99FFFF; height: 300px; width: 350px; margin-left: 120px; }
</style>
</head>
<body>
<div id="content">
  <div id="side">此处显示 id "side" 的内容</div>
  <div id="main">此处显示 id "main" 的内容</div>
</div>
</body>
</html>

四、xhtml的块级元素(div)和内联元素(span)
块级元素:就是一个方块,像段落一样,默认占据一行出现;

内联元素:又叫行内元素,顾名思义,只能放在行内,就像一个单词,不会造成前后换行,起辅助作用。

一般的块级元素诸如段落<p>、标题<h1><h2>...、列表,<ul><ol><li> 、表格<table>、表单<form>、DIV<div>和BODY<body>等元素。而内联元素则如: 表单元素<input>、超级链接<a>、图像<img>、<span> ........ 块级无素的显著特点是:每个块级元素都是从一个新行开始显示,而且其后的无素也需另起一行进行显示。

从上图的例子可以看出,块级元素默认占据一行,相当于在它之前和之后各插入了一个换行;而内联元素span没对显示效果造成任何影响,事实也是如此;em只是让字体变成了斜体,也没有单独占据一行。这就是块级元素和内联元素,正因为有了这些元素,才使我们的网页变得丰富多彩。

如果没有css的作用,块元素会顺序以每次另起一行的方式一直往下排。而有了css以后,我们可以改变这种html的默认布局模式,把块元素摆放到你想要的位置上去。而不是每次都愚蠢的另起一行。也就是说,可以用css的display:inline将块级元素改变为内联元素,也可以用display:block将内联元素改变为块元素。

五、float属性
回到我们的例子当中,理解了块级元素和内联元素,对理解浮动就容易多了。float是个重点,希望大家都能理解。上例中用float让元素向左浮动,在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素;且要指明一个宽度,否则它会尽可能地窄;另外当可供浮动的空间小于浮动元素时,它会跑到下一行,直到拥有足够放下它的空间。

想必大家都用过word排过版,当中有个图文混排功能,如下图:

这个功能非常类似于css中的浮动,下面我们用css来实现这一功能:
<div id="side"><img src="http://www.aa25.cn/uploadfile/taobao0903/20090212165039036721.gif" width="192" height="142" /></div>
<div id="main"> 标准之路[www.aa25.cn]提供DIV+CSS教程,DIV+CSS视频教程,web2.0标准,DIV+CSS布局入门教程,网页布局实例,css布局实例,div+css模板,div+css实例解析,网站重构,网页代码,水晶图标,幻灯广告图片.教程适合初学者循序渐进学习!</div>

创建完以上代码后,在浏览器中预览会显示如下结果:

下面用css让side浮动,再看看效果

body { font-size:18px; line-height:200%; }
#side { float:left;}


大家看看,是不是和word的效果已经很像相了,但这里的文字和图片右侧贴的很近,怎么办呢?刚才已经说了,当元素浮动过之后,需要指定一个宽度,否则它会尽可能窄。那么把side的宽度设置为大于图片的宽度,它们中间应该就有空隙了。图片的宽度是192px,设置side为202px,中间将会有10px的空隙了。
body { font-size:18px; line-height:200%; }
#side { float:left; width:202px;}


细心的朋友已经发现,上例中#main的div还定义了margin-left:120px;而这里没有定义,但它多出的文字却跑到了图片(#side)的下方,是不是设置margin-left:后,它就不会跑到#side的正文呢?如果你能想到这一点,你的确是太聪明了,事实确实是这样,在css样式表中加上下面一行
#main { margin-left:202px;}


这就是如何应用浮动实现两列布局的原理。那么三列呢?

六、三列自适应宽度
三列自适应宽度,一般常用的结构是左列和右列固定,中间列根据浏览器宽度自适应。下面在二列自适应宽度基础上修改一下
<div id="side">此处显示 id "side" 的内容</div>
<div id="side1">此处显示 id "side1" 的内容</div>
<div id="main">此处显示 id "main" 的内容</div>


增加以下css样式:
#side1 { background: #99FF99; height: 300px; width: 120px; float: right; }




把原来#main样式的width:70%去掉,然后设置左右外边距各120px,让出左右列的宽度
#main { background: #99FFFF; height: 300px; margin:0 120px; }


预览一下效果如下:

也许预览出来的效果和我的不一样,别急,还有一项设置,默认body是有外边距的,所以这里还得设置body的外边距为0;点击css面板上的新建按钮,然后在新建面板中选择:标签(重定义标签外观),然后选择body,设置body的边界为0即可。


<!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" />
<style>
body { margin:0;}
#side { background: #99FF99; height: 300px; width: 120px; float: left; }
#side1 { background: #99FF99; height: 300px; width: 120px; float: right; }
#main { background: #99FFFF; height: 300px; margin:0 120px; }
</style>
</head>
<body>
<div id="side">此处显示 id "side" 的内容</div>
<div id="side1">此处显示 id "side1" 的内容</div>
<div id="main">此处显示 id "main" 的内容</div>
</body>
</html>

七、三列固定宽度
三列固定宽度可以在三列自适应基础上添加一个父div,并设置这个div的宽度即可,如下,添加一个id为content的父容器。

在源代码里选中这三个div,然后点击工具栏上的“插入div标签”按钮,这时弹出的窗口插入项会默认为:在选定的内容旁换行,输入id为content,然后给这个div定义个宽度



三列固定宽度出来了,要想实现三列固定宽度居中就更方便了,只需设置#content {margin:0 auto;}即可


<!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" />
<style>
body { margin:0;}
#content { width:470px; margin:0 auto;}
#side { background: #99FF99; height: 300px; width: 120px; float: left; }
#side1 { background: #99FF99; height: 300px; width: 120px; float: right; }
#main { background: #99FFFF; height: 300px; margin:0 120px; }
</style>
</head>
<body>
<div id="content">
  <div id="side">此处显示 id "side" 的内容</div>
  <div id="side1">此处显示 id "side1" 的内容</div>
  <div id="main">此处显示 id "main" 的内容</div>
</div>
</body>
</html>

八、IE6的3像素bug
3像素bug是IE6的一个著名的bug,当浮动元素与非浮动元素相邻时,这个3像素的Bug就会出现。看下面这个左列固定,右列液态的例子,css代码如下:
body { margin:0;}
#side { float: left; background:#99FF99; height: 300px; width: 120px;}
#main { background: #99FFFF; height: 300px;}

html代码如下:
<div id="side">此处显示 id "side" 的内容</div>
<div id="main">此处显示 id "main" 的内容</div>

下面看看IE6和IE7中的显示效果:


从截图中明显看出,IE6会在两个div中间加上3px的空隙,那么要解决这个问题,请在#side上加上_margin-right:-3px;记住,前边加上一下划线,这样这个样式专门针对IE6生效。IE7和FF下还会正常显示。
body { margin:0;}
#side { float: left; background:#99FF99; height: 300px; width: 120px; _margin-right:-3px;}
#main { background: #99FFFF; height: 300px; }


看看,是不是问题已经解决了。但它不能通过W3C验证。当两列固定宽度时,最好把#main也固定宽度且向右浮动,这样就可以避免IE6的3像素bug了。


分享到:
评论

相关推荐

    十天学会DIV+CSS(WEB标准)

    第三天 二列和三列布局 第四天 纵向导航菜单及二级弹出菜单 第五天 超链接伪类 第六天 html列表 第七天 横向导航菜单 第八天 下拉及多级弹出菜单 第九天 CSS表单设计 第十天 div+css网页标准布局实例...

    DIV+CSS教程——第三天二列和三列布局借鉴.pdf

    【标题】和【描述】提及的是一个关于使用`DIV+CSS`进行网页布局的教程,主要涵盖二列和三列布局的学习。以下是相关知识点的详细解释: 1. **二列自适应宽度**: - 在这种布局中,通常左侧列(如`side`)的宽度是...

    div+css十天学会

    第三天 二列和三列布局 第四天 纵向导航菜单及二级弹出菜单 第五天 超链接伪类 第六天 html列表 第七天 横向导航菜单 第八天 下拉及多级弹出菜单 第九天 CSS表单设计 第十天 div+css网页标准布局实例教程(一)...

    十天学会DIV+CSS(WEB标准).CHM

    第三天 二列和三列布局 第四天 纵向导航菜单及二级弹出菜单 第五天 超链接伪类 第六天 html列表 第七天 横向导航菜单 第八天 下拉及多级弹出菜单 第九天 CSS表单设计 第十天 div+css网页标准布局实例...

    十天学会DIV+CSS(WEB标准) CHM格式文件

    第十天 div+css网页标准布局实例教程(二) 第十天 div+css网页标准布局实例教程(一) 第九天 CSS表单设计 第八天 下拉及多级弹出菜单 ...第三天 二列和三列布局 第二天 一列布局 第一天 XHTML CSS基础知识

    10天学会DIV.CSS

    第三天 二列和三列布局 第四天 纵向导航菜单及二级弹出菜单 第五天 超链接伪类 第六天 html列表 第七天 横向导航菜单 第八天 下拉及多级弹出菜单 第九天 CSS表单设计 第十天 div+css网页标准布局实例...

    2天驾驭DIV+CSS(全新发布2.0.3版本)

    基础二和三,CSS选择器的使用和命名规则:这部分内容讲解了如何用选择器来选取页面上的元素,并为它们应用样式。选择器的命名则关系到代码的可读性和维护性。 基础四和五,深入盒子模型和块级元素、内联元素的区别...

    经典CSS+div样例

    一列布局是最基础的,但两列和三列布局则更具有挑战性。在CSS中,可以使用浮动、Flexbox或Grid布局来实现这些结构。样例可能包含如何创建响应式布局,使页面在不同设备和屏幕尺寸上都能正常显示。 图文元素的布局...

    网页设计与制作-1期 单元4CSS的应用单元设计.pdf

    而任务三,学生将深入理解DIV+CSS布局,学习单行单列、两列和三列布局的构建,这是网页设计中常见的布局模式。 教学难点在于页面CSS样式的定义规范、CSS定位方式和DIV+CSS布局技巧。为解决这些难点,教师会通过实例...

    最简单的divcss网页设计报告及其代码.docx

    【标题】:“最简单的divcss网页设计报告及其代码” 【描述】:该文档是一份关于“最简单的div+css网页设计”的实验报告,包含了不同类型的网页布局代码示例,如单行一列、两行一列、三行一列、单行两列、两行两列...

    CSS网页布局,html布局

    最后的章节提供了DIV+CSS布局的一些实用技巧,如设置网页整体居中、内容垂直居中、层的透明度以及CSS缩写。这些技巧可以帮助优化代码,提高效率,并实现更精细的控制。 颜色、盒尺寸、边框和背景是CSS中基本且重要...

    一文汇总 CSS 两列布局和三列布局的具体使用

    但是,基础的 CSS 依然需要我们熟练掌握,今天就来总结写下 CSS 布局的方式。 两列布局 左列定宽,右列自适应 float + margin 布局 html 代码 &lt;body&gt; &lt;div id=left&gt;左列定宽&lt;/div&gt; &lt;div id=right&gt;右列...

    ASP C#程序--我的博客系统实例(未完成,待续...)

    总的来说,这个博客系统实例展示了ASP.NET C#结合DIV+CSS布局和三层架构的综合应用,是学习和提升Web开发技术的宝贵资源。尽管目前处于未完成状态,但它已经具备了基本的博客功能,如用户注册、文章发布和评论功能,...

    DIV CSS常用的网页布局代码

    在网页设计中,`DIV CSS` 是一种常用的技术,用于实现复杂的网页布局。它通过定义 `div` 元素的样式来控制网页内容的排列方式。以下是对标题和描述中涉及的知识点的详细解释: 1. **清除默认边距与填充**: - 在...

    CSS布局实例代码 两列布局实例

    本实例探讨了常见的CSS布局模式,包括两列布局和三列布局,以及等高布局的实现方法。 首先,我们来看两列布局。两列布局通常用于创建一个有侧边栏和主要内容区域的网页结构。在描述中提到了两种不同的两列布局方式...

    网站布局练习div模板

    1. **基础布局**:在网页设计中,常见的基础布局有单列布局、两列布局和三列布局。单页布局则是一种将所有内容放在一个长页面上的设计,通常用于简化导航和提高用户体验。在练习中,你可以尝试使用`div`来创建这些...

    jQuery+CSS3指针时钟特效

    5. **HTML结构**:为了展示时钟,需要创建一个HTML布局,包括一个表示钟面的容器和三个表示指针的元素。例如: ```html &lt;div class="clock"&gt; &lt;div class="hand hour-hand"&gt;&lt;/div&gt; &lt;div class="hand minute-hand"&gt;...

Global site tag (gtag.js) - Google Analytics