CSS布局技术的根本是3个基本概念:定位、浮动、外边距操纵。

只需要设置希望定位的元素的宽度,然后将它们向左或向右浮动。因为浮动的元素不再占据文档流中的任何空间,它们就不再对包围他们的块框产生任何影响,为解决这个问题:

  1. 需要对布局中各个点上的浮动元素进行清理,常见的做法不是连续的浮动和清理元素,而是浮动几乎所有东西,然后在整个文档的“战略点”(比如页脚)上进行一次或者两次清理;
  2. 还可以使用溢出方法清理某些元素的内容。

1.两列的浮动布局

<div class="wrapper">
<div class="content">
<div class="primary"> </div>
<div class="secondary"> </div>
</div>
<div class="footer"> </div>
</div>

一般来说,将两列都向左浮动,然后使用外边距或内边距在两列之间创建一个隔离带,使用这种方法,列在可用空间被包的很紧,没有喘息的空间,若浏览器表现良好则没有问题,但是差劲的浏览器会打乱紧密的布局,迫使一列退到另一列的下面,例如在IE上,IE考虑元素内容的尺寸,而不是元素本身的尺寸,标准的浏览器中,如果内容太大(可能只是把文本设置为斜体),它只会超出框之外,而IE中整个元素都会扩展,这样的话在紧密的布局中,没有足够的空间可以让元素并排出现,就会有一个浮动元素退到下面去。
解决方法:不使用水平外边距或内边距来建立隔离带,而是让一个元素向左浮动,让另一个向右浮动,从而创建视觉上的隔离,如果一个元素的尺寸增加了,它不会立刻占满水平空间并下降,而只是扩展到视觉隔离带中:

代码实现:

.wrapper{
width:920px;
}
.content .primary{
width : 650px;
padding-right : 20px;// 设置内边距,避免其包含的文本紧挨着元素的右边缘
float:right;
display:inline;//用来防止IE中双外边距浮动产生的bug
}
.content .secondary{
width:230px;
float:left;
display:inline;//用来防止IE中双外边距浮动产生的bug
}
.content{
overflow:hidden;//上述元素是浮动的,不占据文档流的空间,造成页脚上升,则需要对父元素content应用溢出方法来清理浮动元素
}

总宽度是920px,代码的结果是在浮动元素之间有20px的隔离带,用来防止内容扩展导致浮动元素下降。

2.三列的浮动布局

<div class="content">
<div class="primary">
<div class="primary"> </div>
<div class="secondary"> </div>
</div>
<div class="secondary"> </div>
</div>

方法:其实就是将主内容区域分为两列,从而形成三列的效果。将次要内容向左浮动,主内容区向右浮动,再在主内容div中,将次要div向右浮动。

.content .primary{
width : 670px;
float:right;
display:inline; //用来防止IE中双外边距浮动产生的bug
}
.content .secondary{
width:230px;
float:left;
display:inline; //用来防止IE中双外边距浮动产生的bug
}
.content .primary .primary{
width:400px;
float:left;
display:inline;
}
.comtent .primary .secondary{
width:230px;
padding-right:20px; //设置内边距,避免其包含的文本紧挨着元素的右边缘
float:right;
display:inline;
}

ch8 基于浮动的布局(两列浮动布局、三列浮动布局)的更多相关文章

  1. 两列布局(浮动、定位、flex)和三列布局(圣杯、双飞翼、flex)

    demo 各种布局演示 https://jsfiddle.net/mayufo/qp890peq/1/ 两栏布局 浮动 <div class="box1"> <d ...

  2. CSS三列布局

    × 目录 两侧定宽中间自适应 两列定宽一侧自适应 中间定宽两侧自适应一侧定宽两列自适应三列自适应总结 前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中 ...

  3. web标准(复习)--3 二列和三列布局

    今天学习二列和三列布局,将涉及到以下内容和知识点 二列自适应宽度 二列固定宽度 二列固定宽度居中 xhtml的块级元素(div)和内联元素(span) float属性 三列自适应宽度 三列固定宽度 三 ...

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

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

  5. css 三列布局

    前面的话 前面已经介绍过单列定宽单列自适应和两列自适应的两列布局.本文介绍三列布局,分为两侧定宽中间自适应.两列定宽一侧自适应.中间定宽两侧自适应.一侧定宽两列自适应和三列自适应这五种情况 两侧定宽中 ...

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

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

  7. Web标准:三、二列和三列布局

    知识点: 1.二列自适应宽度 2.二列固定宽度 3.二列固定宽度居中 4.xhtml的块级元素(div)和内联元素(span) 5.float属性 6.三列自适应宽度 7.三列固定宽度 8.三列固定宽 ...

  8. 简单的CSS网页布局--三列布局

    三列布局其实不难,不过要用到position:absolute这个属性,因为这个属性是基于浏览器而言,左右部分各放在左右侧,空出中间一列来实现三列布局. (一)三列布局自适应 <!DOCTYPE ...

  9. CSS学习笔记(6)--浮动,三列布局,高度宽度自适应

    百度ife任务三,要求中间宽度自适应,高度取三列最高者. 开始用position的relative和absolute,但是relative不能自适应宽,absolute不能加float浮动,撑不起来外 ...

随机推荐

  1. 微信小程序中promise的使用

    简介 相信看到这篇文章的同学,都已经对微信小程序的api文档有所了解了,也都经历了微信小程序api回调函数嵌套的痛苦,才会想要通过Promise解决回调地狱这个问题,我下面就直接介绍怎么在小程序中使用 ...

  2. Git主库私库相关操作操作

    命令1: git remote add 库名称 库地址 说明:写好的代码提交到两个git远端,git remote add是将另一个库地址设置进来 命令2: git fetch 库名称 分支名称 说明 ...

  3. react组件之间传值方式

    1.父向子(通过props传值) 2.父向更深层的子(通过context传值) 3.子向父(通过回调函数传值:在父组件中创建一个函数来接收子组件传过来的参数值,通过父组件将这个函数做为子组件的属性传递 ...

  4. datename()计算一个日期是星期几

  5. 【JavaScript基础#1】

    "   目录 #. 概述 1. ECMAScript与JavaScript的关系 2. ECMAScript版本历史 3. 简单总结 #. 用法 1. 引入方式 2. 规范 3. 变量声明 ...

  6. 《JavaScript高级程序设计》读书笔记(三)基本概念第二小节 Number类型

    内容---语法 上一小节---数据类型 本小节 number类型---流程控制语句---理解函数 number类型--使用IEEE754格式来表示整数和浮点数值(双精度数值)--规定了数值字面量格式, ...

  7. 解决 C# .NET WebClient WebRequest请求缓慢的问题

    [编程环境]Visual Studio 2010, NET4.0 [开发语言]C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响 [问题描述] 使用HttpWebRequ ...

  8. python:布尔类型

    bool:有两个值,True 和 False bool 其实是int类型的一个子类,True一般为1,False一般为0 判断前一个是否是后一个的子类:issubclass(A, B) 内建函数boo ...

  9. 虚拟机设置固定IP从而使同一局域网可以访问

    没有ifcfg-eth0 时:https://www.cnblogs.com/itboxue/p/11186910.html (1)关机,将网络模式设置成桥接模式 (2)开机 进入 cd /etc/s ...

  10. 【原】Docker学习_Docker上传镜像至docker hub(4)

    构造镜像的两种方式:1.commit  2.Dockerfile Docker提供了一个docker commit命令,可以将容器的存储层保存下来成为镜像.换句话说,就是在原有镜像的基础上,再叠加上容 ...