正常情况下都应该保持元素 height 属性的默认值 auto  .

多栏布局,某一栏目占的总宽度包括它的,Width,margin,padding ,border。

  CSS3中,应用 box-sizing 属性之后,给盒子 添加边框和内边距都不会增大盒子,相反会导致内容变窄(像没有设置width的auto一样;)

比如 :

如果 section 的总宽度超出,可以用4种方法处理,

  1. 从width中减去添加的外边距,边框和内边距的宽度和。
  2. 用行内的元素设定外边距,边框和内边距(行内元素不设置宽度)
  3. 在栏中再添加一个宽度默认值的 div,让它包含所有内容元素,然后再给这个 div 应用边框和内边距。
  4. section {box-sizing:border-box;}。   

2:section > * {margin:0 10px;} (选择section的所有子元素,设定它们的外边距,边框和内边距)

3:浮动了,设定了栏宽,最好不要修改,而直接添加一个内部 div ,把padding margin border 给这个 div。

<div id="wrapper"> 

<nav><div class="inner"></div></nav>

<article> <div class="inner"></div></article>  

<aside><div class="inner"></div> </aside>

 </div>

nav {float :left; width:XZX;}

article{float :left; width:XYZ;}

aside {float :left; width:ZZY;}

nav .inner {padding:XXpx; margin:XXpx;}
article .inner {padding:XZpx XYpx; margin:XXpx;}
aside .inner {padding:ZZpx; margin:XXpx;}

4:nav {

box-sizing:border-box; }

article {

box-sizing:border-box; }

aside {box-sizing:border-box; }

即可。

IE6 和 IE7 不支持 box-sizing
属性。不过,有一个专门解决这个问题的腻子脚本(polyfill),名叫 borderBoxModel.js。
你可以使用条件注释(以便只有 IE6 和 IE7 加载)把它添加到 HTML 标记之后、结
束的</body>标签之前,以保证在加载 DOM 之后再执行该脚本:
<!--[if lt IE 8 ]>
<script src="helpers/borderBoxModel.js"></script>
<![endif]-->

PS:

设计一个将来可能由他人维护的动态网站时,需要考虑得更长远一些。比如,应该预见到可能

出现一些过大的元素。如果将来有一张比浮动栏更宽的图片被放到栏中,就会导致布局变宽,

而 右 边 的 栏 又 会 滑 到 下 方 。 为 此 , 一 个 简 单 的 预 防 措 施 就 是 添 加 一 条
.inner img{max-width:100%;}
声明,以便限制图片的宽度不超过其父元素(在此就是内部 div)。
HTML 只会在单词间空格的地方换行。一些长 URL,甚至一些长单词,在栏比较窄的情况下,都会导致栏宽过大。
因此,还应该给所有栏的外包装元素应用
{word-wrap:break-word;}
声明,

流动布局:

1.用负外边距实现

解决方案是控制两个外包装,其中一个外包装threecolwrap包围所有三栏,另一个栏twocolwrap外包装只包围左栏和中栏。

把twocolwrap的margin设置为右栏(它不包括)的负值,width:100%。然后把中间栏设置margin-right 设置为右栏的值(正值),width:auto;但是左栏要固定值。

<div id="main_wrapper">
<header>
<!-- 页眉-->
</header>
<div id="threecolwrap">/*三栏外包装(包围全部三栏) */
<div id="twocolwrap">/*两栏外包装(包围左栏和中栏) */
/*左栏*/
<nav>
<!-- 导航 -->
</nav>
/*中栏*/
<article>
<!-- 区块 -->
</article>
</div>/*结束两栏外包装( twocolwrap) */
/*右栏*/
<aside>
<!-- 侧栏 -->
</aside>
</div>/*结束三栏外包装( threecolwrap) */
<footer>
<!-- 页脚 -->
</footer>
</div>

* {margin:0; padding:0;}
body {font:1em helvetica, arial, sans-serif;}
div#main_wrapper{
min-width:600px; max-width:1100px;
/*超过最大宽度时,居中布局*/
margin:0 auto;
/*背景图片默认从左上角开始拼接*/
background:url(images/bg_tile_150pxw.png) repeat-y #eee;
}
header {
padding:5px 10px;
background:#3f7ccf;
}
div#threecolwrap {
/*浮动强制它包围浮动的栏*/
float:left;
width:100%;
/*背景图片右对齐*/
background:url(images/bg_tile_210pxw.png) top right repeat-y;
}
div#twocolwrap {
/*浮动强制它包围浮动的栏*/
float:left;
width:100%;
/*把右栏拉到区块外边距腾出的位置上*/
margin-right:-210px;
}
nav {
float:left;
width:150px;
background:#f00;
padding:20px 0;
}
/*让子元素与栏边界保持一定距离*/
nav > * {margin:0 10px;}或者里面加一个div
article {
width:auto;/*不浮动*/
margin-left:150px;
/*在流动居中的栏右侧腾出空间*/
margin-right:210px;
background:#eee;
padding:20px 0;
}
*让子元素与栏边界保持一定距离*/
article > * {margin:0 20px;} 或者里面加一个div
aside {
float:left;
width:210px;
background:#ffed53;
padding:20px 0;
}
*让子元素与栏边界保持一定距离*/
aside > * {margin:0 10px;}
footer {
clear:both;
width:100%;
text-align:center;
background:#000;}
background:#000;
}

为了给右栏腾出空间,中栏 article 元素有一个 210 像素的右外边距。当然,
光有这个外边距只能把右栏再向右推 210 像素。别急,包围左栏和中栏的两栏外包
装上 210 像素的负右外边距,会把右栏拉回 article 元素右外边距(在两栏外包装内
部右侧)创造的空间内。

2.用CSS3 单元格 实现

仅仅是把三栏的display 属性设定为 table-cell 就可以了。

<nav><!-- 内容 --></nav>
<article><!-- 内容 --></article>
<aside><!-- 内容 --></aside>
和以下 CSS:
nav {display:table-cell; width:150px; padding:10px;
background:#dcd9c0;}
article {display:table-cell; padding:10px 20px;
background:#ffed53;}
aside {display:table-cell; width:210px; padding:10px;
background:#3f7ccf;}

这个简单、功能完备的布局对 IE7 和 IE6 可没有任何腻子脚本,甚至连个退化的后备方案都没有。

多行多栏布局 :

把每行用一个div盒子包起来,设置一个id,

在行内设置行内元素的width 和float (使变成一行),

然后在行内小盒子中,增加div,以改变padding ,margin,border属性,又不会改变行内小盒子的宽度。

CSS 多栏布局 固定布局 流动布局的更多相关文章

  1. css多栏自适应布局

    css多栏自适应布局还是需要总结一下的,都是基本功. 一般使用position属性布局,或者用float属性布局,也可以使用display属性. 看资料说position适合首页布局,因为首页内容往往 ...

  2. 三种方法实现CSS三栏布局

    本文由云+社区发表 作者:前端林子 本文会分别介绍三种CSS实现三栏布局的方法,可在浏览器中打开查看效果 1.方法一:自身浮动的方法 实现方法:需要左栏向左浮动,右栏向右浮动,中间设左右margin来 ...

  3. css三栏布局方案整理

    日常开发中,经常会用到css三栏布局,现将工作中常用的css 三栏布局整理如下: 什么是三栏布局: 三栏布局,顾名思义就是两边固定,中间自适应. 一. float布局 <!DOCTYPE htm ...

  4. HTML学习笔记 css定位(静态,相对,固定,绝对布局)偏移案例 第十二节 (原创) 参考使用表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. 【CSS-flex】圣杯布局(Holy Grail Layout)、输入框的布局、悬挂式布局、固定的底栏

    1.圣杯布局(Holy Grail Layout) 其指的是一种最常见的网站布局.页面从上到下,分成三个部分:头部(header),躯干(body),尾部(footer).其中躯干又水平分成三栏,从左 ...

  6. Css三栏布局自适应实现几种方法

    Css三栏布局自适应实现几种方法 自适应实现方法我们可以从三个方法来做,一个是绝对定位 ,自身浮动法 和margin负值法了,下面我们一起来看看这三个例子吧,希望例子能帮助到各位同学. 绝对定位法三栏 ...

  7. CSS三栏布局的四种方法

    总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具 ...

  8. CSS百分比padding实现比例固定图片自适应布局

    一.CSS百分比padding都是相对宽度计算的 在默认的水平文档流方向下,CSS margin和padding属性的垂直方向的百分比值都是相对于宽度计算的,这个和top, bottom等属性的百分比 ...

  9. CSS技巧 (2) · 多列等高布局

    前言  最近,面试的时候都碰到一些关于利用CSS实现多列等高布局或者一侧宽度固定,另一侧宽度自适应的问题,下面稍微总结一下: 先看一道题目 巧妙的多列等高布局 规定下面的布局,实现多列等高布局,要求两 ...

  10. Bootstrap页面布局3 - BS布局以及流动布局

    1. <h1 class='page-header'>布局<small> 使用bootstrap网格系统布局网页</small></h1> 得到如图所示 ...

随机推荐

  1. LeetCode-442 数组中重复的数据

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-all-duplicates-in-an-array 题目描述 给你一个长度为 n 的整 ...

  2. (四)Mysql之索引介绍

    索引数据结构的选择:Hash表.二叉树.平衡二叉树.(红黑树近似于平衡二叉树).B树.B+树1)Hash表:Java的HashMap.TreeMap就是Hash表结构,以键值对存储,时间复杂度是O(1 ...

  3. Java学习笔记(一)环境安装与java基础

    学习笔记01 两年前学的Java,现在已经忘得差不多了,跟着狂神说Java的视频从头开始学,希望能救一救ww 一.JDK JRE JVM 1. JDK java development kit 2. ...

  4. 前端有关请求的相关内容axios

    在请求头中常见的类型有 类型一 查看消息体 此时的请求拦截器中不需要对数据( 对象的形式 ) 进行修饰,默认会将数据修复为json的格式 类型二,当我们使用qs库对数据进行转换后(qs库的存在旨在是将 ...

  5. charles证书安装-客户端证书

    1.iOS设置教程: 1)wifi中配置代理 2)浏览器中输入chls.pro/ssl,进行证书下载 3)证书下载成功后,设置--通用--描述文件–安装刚下载的证书 4)设置--通用--关于本机--证 ...

  6. vue 事件传递原始 DOM 事件

    vue 事件传递原始 DOM 事件 在事件传参中传递特殊变量 $event @click= "warn('1', $event)"

  7. pgsql中物化视图的使用

    1.创建物化视图 CREATE MATERIALIZED VIEW "view_xxx" as  select * from 表 2.刷新物化视图 refresh material ...

  8. Appium 入门

    Appium安装总体需要以下几个步骤: 安装JDK 官网www.oracle.com去下载安装,尽量下载JDK7及以上的版本.然后去设置环境变量: 在系统变量下新建变量JAVA_HOME变量值指向JD ...

  9. React函数式组件值之useRef()和useImperativeHandle()

    一.useRef useRef共有两种用法,获取子组件的实例(只有类组件可用),在函数组件中的一个全局变量,不会因为重复 render 重复申明, 类似于类组件的 this.xxx. 1. useRe ...

  10. js-防抖(简易版)

    /**  * 节流函数  */ var count = 1; var container = document.getElementById('container'); function getUse ...