精通css(4)-盒模型,定位,浮动

终于到了css最重要的3个部分:盒模型,定位,浮动。先讲盒模型吧。

1.盒模型概述

页面上的每个元素都被看成一个矩形框。这个框由元素的内容、内边距、边框和外边距组成。

内边距、边框和外边距都是可选的默认为0。但是许多元素由用户代理样式表设置外边距和内边距。所以不见的一定是0。

在css中,width和height是指内容区域的宽度和高度,对边距没有影响。所以增加width/height/内容/边框/内外边距中的任何一个都会使盒子变大。值得高兴的是,IE6在混杂模式的使用的是非标准的盒模型。他的width不是内容的宽度,而是内容+内边距+边框的总宽度。

1.1外边距叠加

外边距叠加条件:只有普通文档流中块框的垂直外边距才会发生叠加。行内框,浮动框,绝对定位框的外边距都不会叠加。外边距叠加有3类:

当两个或更多垂直外边距相遇时,大的外边距会包含小的外边距。这个外边距的总和等于两个叠加者中外边距较大者;

当一个元素包含在另外一个元素中时,他们的顶外边距也会叠加;

如果给一个空元素设置外边距,那么顶外边距和底外边距就会叠加:

2.可视化格式模型

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框,行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。因此,修改行内框尺寸的唯一方法是修改行高或者水平边距。

顺便说一下display属性

display:

display:none将元素隐藏起来,visible:hidden也是隐藏元素,但二者有区别:前者不占用空间,而后者虽然看不见,但还是占着地方!

display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。IE6,7不支持inline-block属性,但是可以触发块元素。解决方法是先设置inline-block触发块元素,具有layout的特性,然后设置display:inline,使块元素呈现内联元素,此时layout的特性不会消失;或者直接设置display:inline,然后使用zoom:1触发layout。下面是通用做法:


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

3.定位

先说一下position属性:

绝对定位(absolute):要注意的是绝对定位元素的位置与文档流无关,因此不占据空间!就好比普通流中的元素看不见他,但是我们看的见!

固定定位(fixed):绝对定位的一种,区别上面说了(fixed相对浏览器窗口定位,absolute相对第一个非static父元素定位)。不过高兴的是,IE6不支持固定定位,IE7部分支持,但有许多bug。

相对定位:相对于普通流中正常位置位移,但是元素仍然占据原来的空间,所以移动元素可能会覆盖其他框。

4.浮动

浮动的框可以左右移动,直到它的外边缘碰到包含框或另外一个浮动框边缘。浮动不在文档的普通流中。

有浮动就可能会要clear清浮,以下是clear属性:

清浮常用伪类的方法:

.clearfix:after {
       content: ".";
       visibility: hidden;
       display: block;
       height: 0;
       clear: both;
   }

这个方法在IE6,7下有bug,需要给浮动块添加haslayout来撑高:

.clearfix {
 zoom:1;
}

还可以用overflow:hidden属性。因为overflow会迫使父元素贴紧其内对象的内容,从而达到清浮的作用,但也可能触发滑动条或者隐藏内容。

浮动的具体说明参考w3c:http://www.w3school.com.cn/css/css_positioning_floating.asp

理论的东西就先讲这些吧,接下来开始实践了!

时间: 2024-08-22 14:33:07

精通css(4)-盒模型,定位,浮动的相关文章

CSS基础知识 - 盒模型/定位/浮动

1. Box Model (盒模型)       Box Model 是CSS的指定元素如何显示和交互,是CSS的基石之一.       页面上的每个元素被看成是一个矩形框,它由内容,填充(padding),边框(border),空白边(margin)组成.       他们之间的关系如下:       [ margin [ border [ padding [ content ] ] ] ]       margin, border, padding 都是可选的,他们的默认值为0.      

跨浏览器的Flexbox:CSS Flexible盒模型3

文章简介:CSS Flexible盒模型3又简称为Flexbox.摒弃我们传统上使用的一些hack和组件,Flexbox给网络的发展带来了很多正能量和兴奋济,让我们一起把复杂的网站布局变得简易和快速. 简介 CSS Flexible盒模型3又简称为Flexbox.摒弃我们传统上使用的一些hack和组件,Flexbox给网络的发展带来了很多正能量和兴奋济,让我们一起把复杂的网站布局变得简易和快速.早前在Flexbox: fast track to layout nirvana?一文中介绍了Flex

深入讲解CSS中盒模型的用法

  视觉类型的媒体根据CSS的视觉格式化模型(Visual formatting model)的规则来处理文档树中的元素,从而将(X)HTML转化成制作者设计的样子. 例如: 如何生成元素框; 处理各元素之间的关系; 根据框的尺寸.定位等CSS属性来确定元素的位置等; 因此,要掌握使用CSS控制页面内元素的技巧,就需要深入了解框模型(Box Model)及视觉格式化模型的原理. 文档树中的元素都产生矩形的框(Box),这些框影响了元素内容之间的距离.元素内容的位置.背景图片的位置等等.而浏览器根

w3c系列之CSS(四):深入理解盒模型

盒模型是一个老生常谈的话题,本身并不复杂,它描述了文档树所产生的矩形框以及根据可视化格式模型(visual formatting model)所产生的布局结构. 曾经看到一道面试题:说说CSS中的盒模型?网上的回答都是margin,border,padding,width,height之类的,尼玛都是复制粘贴的吧= =.....要是这篇文章也这么写的话就跟前面三篇没啥区别了,既然要深入理解,那就谈点高大上的东西. 1.要深入,先入门 首先还是得对盒模型做个简单而详细的介绍,想要跑,基础要打好~,

CSS基础:CSS2盒模型

css CSS2盒模型 CSS2中的盒模型是关系到设计中排版定位的关键,任何一个选择符都遵循盒模型规范,例如<div>.<p>.<a>--盒模型包含(外补丁)margin,(背景颜色)background-color,(背景图片)background-image,(内补丁)padding ,(内容)content,(边框)border.下图是CSS盒模型的示意图 平面示意图Flash示意模型 需要说明的是:IE5.x 和 IE 6.0在quirks模式下使用自己的错误的

CSS盒模型制定网页的宽度和高度的原理

  当我们布局一个网页的时候,经常会遇到这样的一种情况,那就是最终网页成型的宽度或是高度会超出我们预先的计算,其实就就是所谓的CSS的盒模型造成的. #test{margin:10px;padding:10px;width:100px;height:100px;} 如上一段的代码,很多时候我们会把它所占的位置计算成width:120px,height:120px,因为在正常的理解下,padding是内边距,应该是包括在width里面的,而margin是外边距,所以width=margin-lef

深入理解css中的position定位和z-index属性

由于平时不太用到,所以过去写css的时候对于position属性的absolute. relative值理解比较模糊,对于z-index的层叠更是摸不着头脑,除了理解的因素外,各个浏览器的不同解析结果也是一个大问题.今天仔细阅读了一下css文档,总算是对盒模型的浮动.定位有了比较深刻的理解. 我们在实践中很有可能遇到这样的问题: 1.做一个横向导航,然后鼠标经过之后出现下拉菜单,那么这个下拉菜单的位置控制就是一个关键: 2.我们想在一个正常的页面布局中放入几个浮在页面上的气泡提示,这时既不想让气

推荐深入理解css中的position定位和z-index属性_经验交流

作者:Cutsin 原文地址:http://www.moonless.net/blog/2007/09/csspositionz-index.html 注:本文仅供交流使用,如有不当之处欢迎批评指正,但请注明详由,谢谢! 由于平时不太用到,所以过去写css的时候对于position属性的absolute.relative值理解比较模糊,对于z-index的层叠更是摸不着头脑,除了理解的因素外,各个浏览器的不同解析结果也是一个大问题.今天仔细阅读了一下css文档,总算是对盒模型的浮动.定位有了比较

CSS入门:CSS2盒模型

css CSS2盒模型 CSS2中的盒模型是关系到设计中排版定位的关键,任何一个选择符都遵循盒模型规范,例如<div>.<p>.<a>--盒模型包含(外补丁)margin,(背景颜色)background-color,(背景图片)background-image,(内补丁)padding ,(内容)content,(边框)border.下图是CSS盒模型的示意图 平面示意图 3D示意图(原图出自:hicksdesign) Flash示意模型 需要说明的是:IE和Mozi