今天学习《十天学会web标准(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的空隙,大家可以试一下。


 提示:可以先修改部分代码后再运行

二、两列固定宽度

有了前面的基础,两列固定宽度就容易多了,只需要把#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居中,那么整体就居中了:


 提示:可以先修改部分代码后再运行

四、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即可。


 提示:可以先修改部分代码后再运行

七、三列固定宽度

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

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

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


 提示:可以先修改部分代码后再运行

八、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了

转载于:https://www.cnblogs.com/y0umer/archive/2011/06/22/2809550.html

第三天 二列和三列布局相关推荐

  1. 2022年全球新兴市场物流整体竞争力排名中国、印度、阿联酋列前三 | 美通社头条...

    要闻摘要:2022年全球新兴市场物流整体竞争力排名中国.印度.阿联酋列前三.开拓药业普克鲁胺治疗轻中症新冠全球III期临床完成中国首例患者给药.舍弗勒携手合作伙伴推动液态有机氢载体技术产业化发展.霍尼 ...

  2. 中国纯电动车新车质量蔚来、特斯拉、欧拉列前三;长城汽车计划将P系列皮卡推向全球市场 | 美通企业日报...

    今日看点 中国纯电动车新车质量蔚来.特斯拉.欧拉列前三.J.D. Power发布中国新能源汽车体验研究.研究显示,随着新能源汽车市场发展步入快车道,新能源汽车品牌间的质量差距也在逐渐拉大,国际品牌新能 ...

  3. ag-grid 学习笔记三:ag-grid设置(定义列、选择行、复选框、设置行高列宽、置顶合计行、底部合计行、行组、客户端排序)

    目录 一 定义列 二 选择行 三 设置复选框 四 设置行高列宽 五 置顶合计行 六 底部合计行 七 行组 八 客户端排序 一 定义列 表格的列有如下常用属性. 名称 说明 headerName 显示的 ...

  4. excel 删除空白列的三种方法,以及如何批量删除空行空列

    详见:excel删除空白列的三种方法,以及如何批量删除空行空列 本人更倾向于第三种方法: excel删除空白列方法三: 按ALT+F11,打开VBE编辑器,插入--模块,复制下面代码,然后按F5键,运 ...

  5. 实例三十九:卡布列克运算

    实例三十九:卡布列克运算 问题描述: 所谓卡布列克运算是指对任意一个四位数,只要它们各个位上的数字不完全相同,就是这样的规律: (1)把组成这个四位数的四个数字重新生成最大的四位数: (2)把组成这个 ...

  6. python numpy 获得数组的行和列(三种方法)

    通过shape属性获得 首先是用 shape 这个属性,学numpy的时候,知道,ndarray有shape这个属性,返回一个元组,里面放了每个维度的大小,所以直接就能想到,对于二维数组 print( ...

  7. Excel基础篇(三):vlookup根据A列查询B列

    单位要采购一批文具,具体清单如下: 文具店老板提供了一份价格表: 如果想计算一下采购这些文具需要申请多少资金,该怎么办呢?有的朋友可能擅长FCV大法--Ctrl+F.Ctrl+C.Ctrl+V--如果 ...

  8. FreeSql (三十二)Aop

    FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强. 审计 CRUD 马云说过,996是修福报.对于多数程序员来说,加班是好事...起码不是闲人,不会下岗. 当如果因为某个 sql ...

  9. NeHe OpenGL第三十二课:拾取游戏

    NeHe OpenGL第三十二课:拾取游戏 拾取, Alpha混合, Alpha测试, 排序: 这又是一个小游戏,交给的东西会很多,慢慢体会吧   欢迎来到32课. 这课大概是在我所写作已来最大的一课 ...

  10. 史记翻译-汉初三杰-韩信-淮阴侯列传第三十二

    淮阴侯列传第三十二 王学孟 译注 [说明]本传记载了韩信一生的事迹,突出了他的军事才能和累累战功.功高于世,却落个夷灭宗族的下场.注入了作者无限同情和感慨. 他登坛拜将后与刘邦的一篇宏论,使韩信崭露头 ...

最新文章

  1. 提示框样式说明android:windowFrame
  2. 字节面试现场,问我如何高效设计一个LRU
  3. 《Photoshop Lab修色圣典(修订版)》—第1课深入讨论
  4. 关于tensorflow和keras那些事儿
  5. if-else多级嵌套,输入3/4/5个数寻找最大值(太多了容易乱!!!)
  6. 常见人工智能比赛平台总结
  7. Docker学习总结(4)——Docker镜像与容器命令
  8. 创龙 C6000 DSP开发板众筹来袭
  9. python时间戳格式定义_关于Python时间戳是什么讲解
  10. python贪吃蛇游戏设计答辩_python编写贪吃蛇游戏
  11. promise对象---【阮一峰ES6】
  12. Magisk root 原理分析之一 :Magisk Andorid Root 流程
  13. S7-1200 PLC的常见扩展模块
  14. 计算机网易云不能一键升级音质,网易云电脑版怎么调音效(一览网易云音效最佳调节技巧)...
  15. 页面获取服务器图片路径问题
  16. 用于图像分割的卷积神经网络:从R-CNN到Mask R-CNN
  17. 第44章 MPU6050传感器—姿态检测—零死角玩转STM32-F429系列
  18. nvm介绍、nvm下载、安装与使用
  19. Python添加pywin32
  20. Autoware1.15 + OpenPlanner2.5 下的laneChange解析(1)

热门文章

  1. 【浙江第16届省赛:B】Element Swapping(分情况讨论--数学题)
  2. android 自定义相机,Android应用开发之android 7自定义相机预览及拍照功能
  3. 如何用计算机制作统计图,统计图制作_ai的环形统计图怎么制作
  4. linux 在线考试系统下载,在线考试系统-英文版
  5. 15拆分成3个不同的自然数_素数大概有多少个?15岁的高斯翻过素数表之后给出了答案...
  6. android程序设计背景,android – 以可编程方式设置drawable作为背景
  7. 柱状图如何添加数字标签_分类堆叠柱状图顺序排列及其添加合适条块标签
  8. flex 引入html,在Flex中嵌入完整HTML页面
  9. 翻译:自动驾驶相关术语的分类和定义Taxonomy and Definitions for Terms Related to On-Road Motor Vehicle Automated
  10. 阿里云云计算 46 阿里云DDoS防护