探讨这种布局是因为最近对话框组件以及信息系统B/S界面布局的需要。无论是什么,我们在写CSS之前首先引入reset.css,我使用的是淘宝的reset。

01 /*
02 KISSY CSS Reset
03 */
04 /** 清除内外边距 **/
05 body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 结构元素 */
06 dl, dt, dd, ul, ol, li, /* list elements 列表元素 */
07 pre/* text formatting elements 文本格式元素 */
08 form, fieldset, legend, button, input, textarea, /* form elements 表单元素 */
09 th, td /* table elements 表格元素 */ {
10     margin0;
11     padding0;
12 }
13 /** 设置默认字体 **/
14 body,
15 button, input, select, textarea /* for ie */ {
16     font12px/1.5 tahomaarial, \5b8b\4f53sans-serif;
17 }
18 h1, h2, h3, h4, h5, h6 font-size100%; }
19 address, cite, dfn, em, var { font-stylenormal; } /* 将斜体扶正 */
20 code, kbd, pre, samp { font-familycourier new, couriermonospace; } /* 统一等宽字体 */
21 small font-size12px; } /* 小于 12px 的中文很难阅读,让 small 正常化 */
22 /** 重置列表元素 **/
23 ul, ol { list-stylenone; }
24 /** 重置文本格式元素 **/
25 a { text-decorationnone; }
26 a:hover { text-decorationunderline; }
27 sup { vertical-aligntext-top; } /* 重置,减少对行高的影响 */
28 sub vertical-aligntext-bottom; }
29 /** 重置表单元素 **/
30 legend { color#000; } /* for ie6 */
31 fieldset, img { border0; } /* img 搭车:让链接里的 img 无边框 */
32 button, input, select, textarea { font-size100%; } /* 使得表单元素在 ie 下能继承字体大小 */
33 /* 注:optgroup 无法扶正 */
34 /** 重置表格元素 **/
35 table { border-collapsecollapseborder-spacing0; }

声明DTD:

1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

使用display:inline-block属性

将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。我们知道在IE6.0以及IE7.0是使用了一个has layout的概念。使用display:inline-block仅仅触发了块状元素的has layout属性。而DIV本身就是块状元素,所以在IE<8.0 下依然会出现换行的情况。

解决问题:先将块元素设置为内联对象呈递(设置属性display:inline),然后触发块元素的layout去hack IE7.0-;

1 div{display:inline-block;zoom:1;*display:inline;}

HTML

1 <div class="content">
2 <div class="subMenuLeft"></div>
3 <div class="mainBoxCenter">
4 </div>
5 <div class="infoRight">
6 </div>
7 </div>

CSS

01 div.content{
02     padding-left:150px;
03     padding-right:200px;
04 }
05 div.subMenuLeft,div.mainBoxCenter,div.infoRight{
06    display:inline-block;
07    zoom:1; *display:inline;/*fix ie<8*/
08 }
09 div.mainBoxCenter{
10    width:100%;
11 }
12 div.subMenuLeft{
13   width:150px;
14   margin-left:-150px;
15 }
16 div.infoRight{
17  width:300px;
18  margin-right:-300px;
19 }

使用float负边距的布局

该属性的值指出了对象是否及如何浮动。当该属性不等于none引起对象浮动时,对象将被视作块对象(block-level),即display属性等于block。也就是说,浮动对象的display特性将被忽略。

其实CSS的float属性,作用就是改变块元素(block element)对象的默认显示方式。block对象设置了float属性之后,它将不再独自占据一行。可以浮动到左侧或右侧。

由此我们知道可以设置三个DIV默认全部向左浮动,然后设置后两个DIV的margin属性让其显示到必要的位置。

1 <div class="content">
2     <div class="mainBoxCenter">
3     </div>
4 </div>
5 <div class="subMenuLeft">
6 </div>
7 <div class="infoRight">
8 </div>
  1. 设置div.content的宽度为100%,充满整个窗口,并向左浮动;
  2. 设置div.mainBoxCenter的左外边距以及右外边距分别等于要显示的两个DIV的宽度;
  3. 设置div.subMenuLeft向左浮动,并且margin-left:100%;这样subMenuLeft偏移到屏幕的最左方;
  4. 设置div.infoRight向左浮动,并且margin-left值为自身的宽度,这样infoRight便偏移到屏幕的右侧。
01 div.content{
02 width:100%;
03 float:left;
04 }
05 div.subMenuLeft,div.infoRight{
06 float:left;
07 }
08 div.subMenuLeft{
09 width:150px;
10 margin-left:-100%;
11 }
12 div.infoRight{
13 width:200px;
14 margin-left:-200px;
15 }
16 div.mainBoxCenter{
17 margin-left:150px;
18 margin-right:200px;
19 }

CSS设计一个三列布局的页面的更多相关文章

  1. HTML/CSS学习之 三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化

    第一种方法:绝对定位 <!DOCTYPE html> <html> <head> <title>三列布局</title> <link ...

  2. CSS如何实现三列布局?如果两端固定、中间是自适应又该如何做?

    使用浮动布局来实现 左侧元素与右侧元素优先渲染,分别向左和向右浮动 中间元素在文档流的最后渲染,并将 width 设为 100%,则会自动压到左右两个浮动元素的下面,随后在中间元素中再添加一个div元 ...

  3. CSS 布局实例系列(三)如何实现一个左右宽度固定,中间自适应的三列布局——也聊聊双飞翼

    今天聊聊一个经典的布局实例: 实现一个三列布局,其中左侧和右侧的部分宽度固定,中间部分宽度随浏览器宽度的变化而自适应变化 可能很多朋友已经笑了,这玩意儿通过双飞翼布局就能轻松实现.不过,还请容我在双飞 ...

  4. 【css】css2实现两列三列布局的方法

    前言 对于 flex 弹性布局相信大家都有所了解,它是 css3 中的属性,然而它具有一定的兼容性问题.楼主前几天面试时遇到了面试官需要设计一个两列布局,我当然就说父元素 flex 吧哩吧啦,然而需要 ...

  5. html 三列布局(两列自适应,一列固定宽度)

    不做过多解释:主要是记录一个完整的布局样式,实现页面大致三列其中左右两列是自适应宽度,中间固定宽度效果. 不多少代码奉上: CSS样式代码: /******************** *公共标签样式 ...

  6. html5--6-67 阶段练习8-弹性三列布局

    html5--6-67 阶段练习8-弹性三列布局 学习要点 运用弹性盒子模型完成一个三列布局,加深对学过知识点的综合应用能力. 了解用百分比设置元素高度的方法. @charset="UTF- ...

  7. DIV+CSS 网页布局之:三列布局

    1.宽度自适应三列布局 三列布局的原理和两列布局的原理是一样的,只不过多了一列,只需给宽度自适应两列布局中间再加一列,然后重新计算三列的宽度,就实现了宽度自适应的三列布局. 同样的道理,更多列的布局, ...

  8. css常见的各种布局下----三列布局

    css 三列布局,左右固定宽度右边自适应 1不使用定位,只使用浮动可以实现左右固定,中间宽度自适应布局 1.1.1 自适应部分一定要放第一个位子,使用浮动,并且设置宽度为100%,不设置浮动元素内容不 ...

  9. CSS常用布局方式-两列布局、三列布局

    CSS基础 2.几种布局方式1)table布局 当年主流的布局方式,第一种是通过table tr td布局 示例: <style type="text/css"> ta ...

随机推荐

  1. 使用python中读取配置文件

    最近在接触利用python来写测试框架,本人也是个刚接触python,所以是个小菜鸟,今天开始,一点点的记录学习中的积累,方便以后的学习以及回顾,也希望能帮助跟我一样的小菜鸟们一步步的成长起来.那么, ...

  2. 监控系统cpu相关统计信息

    背景:需要测试监控各个操作系统平台机器上的cpu相关的各种统计信息 为了方便测试,我写了一个比较通用的shell脚本,目前可以兼容Redhat6+,Redhat7+,其他操作系统没测,可以实时监控机器 ...

  3. [wirtting] top01 independent

    Do you agree or disagree with the following statement? At universities and colleges, sports and soci ...

  4. Java基础知识:Java实现Map集合二级联动1

    Java实现Map集合二级联动 Map集合可以保存键值映射关系,这非常适合本实例所需要的数据结构,所有省份信息可以保存为Map集合的键,而每个键可以保存对应的城市信息,本实例就是利用Map集合实现了省 ...

  5. kafka stream 低级别的Processor API动态生成拓扑图

    public class KafkaSream { public static void main(String[] args) { Map<String, Object> props = ...

  6. Python最长连续数列的O(n)解法

    题目 输入一个乱序的连续数列,输出其中最长连续数列长度,要求算法复杂度为 O(n) . 输入样例 100,4,200,1,3,2 54,55,300,12 1 5,4,3,2,1 1,2,3,4,5, ...

  7. ZOJ 2760 How Many Shortest Path(最短路径+最大流)

    Description Given a weighted directed graph, we define the shortest path as the path who has the sma ...

  8. MySQL用户管理及权限管理

    MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL 命令行模式下输入如下命 ...

  9. VBA基础之Excel VBA 表格的操作(一)

    一.Excel VBA 表格的操作1. Excel表格的指定以及表格属性的设置 Sub main() '把表格B2的值改为"VBA Range和Cells函数" Range(&qu ...

  10. Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片

    一. Application用途 1. Application用途 创建Application时机 : Application在启动的时候会调用Application无参的构造方法创建实例; Appl ...