精通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


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




相关文章
|
2月前
|
前端开发 UED
CSS 盒模型
CSS盒模型是网页设计中一个重要的概念,它定义了HTML元素如何在页面上呈现及其相互关系。每个HTML元素都被视为一个矩形框,此模型涉及内容区、内边距、边框和外边距四个部分,通过控制这些部分的样式和布局,设计师可以实现多样化的页面效果。
|
2月前
CSS_定位_网页布局总结_元素的显示与隐藏
CSS_定位_网页布局总结_元素的显示与隐藏
25 0
|
3月前
|
前端开发
|
3月前
|
前端开发
【前端web入门第六天】01 CSS浮动
这是关于CSS布局第六天学习目标的介绍,主要解决多个`<div>`标签在同一行显示的问题,即一个在左边,另一个在右边。文中介绍了标准流、浮动及flex布局的概念,重点推荐使用flex布局。文章详细讲解了浮动的基本使用、布局技巧及清除浮动的方法,包括额外标签法、单伪元素法、双伪元素法和`overflow`隐藏法,并提供了示例代码帮助理解。
|
4月前
|
前端开发 容器
最新CSS3定位元素
【8月更文挑战第28天】
29 5
|
4月前
|
前端开发 容器
【CSS Flexbox 探秘】弹性盒模型:揭秘网页布局的终极神器!
【8月更文挑战第25天】Flexbox 是 CSS3 中的关键特性,为网页设计提供了强大的布局能力。本文通过问答形式全面解析 Flexbox 的核心概念与属性,包括容器与项目属性,并通过示例演示如何使用 Flexbox 实现水平与垂直居中、等间距布局及响应式设计。相较于传统布局方法,Flexbox 更加灵活且简化了样式设置,同时在现代浏览器中拥有良好的支持度。掌握 Flexbox 对于提升网页布局效率至关重要。
63 1
|
4月前
|
前端开发
HTML+CSS基础知识(5)相对定位、绝对定位、固定定位
这篇文章介绍了HTML和CSS中的三种定位方式:相对定位、绝对定位和固定定位,并通过代码示例展示了它们如何影响元素在页面上的布局和位置。
HTML+CSS基础知识(5)相对定位、绝对定位、固定定位
|
4月前
|
前端开发 容器
css中使用定位实现吸顶效果
css中使用定位实现吸顶效果
99 2
|
4月前
|
容器 C# 开发者
XAML语言大揭秘:WPF标记的魅力所在,让你轻松实现界面与逻辑分离,告别复杂代码!
【8月更文挑战第31天】XAML提供了一种直观且易于维护的界面设计方式,使得开发者可以专注于逻辑和业务代码的编写,而无需关心界面细节。通过数据绑定、布局管理和动画效果等特性,XAML可以实现丰富的界面交互和视觉效果。在实际开发过程中,开发者应根据具体需求选择合适的技术方案,以确保应用程序能够满足用户的需求。希望本文的内容能够帮助您在WPF应用程序开发中更好地利用XAML语言。
44 0
|
4月前
|
前端开发 容器
解锁CSS定位奥秘,从迷茫到精通,让你的网页布局“稳如老狗”,引领前端新潮流!
【8月更文挑战第23天】本文深入探讨了Web前端开发中CSS定位的三大基石:相对定位、绝对定位与固定定位。通过具体示例,展示了各种定位方式的特点及应用场景。相对定位可在不影响布局的情况下微调元素位置;绝对定位使元素完全脱离文档流,适用于精确控制位置的需求;固定定位则确保元素始终固定于浏览器窗口特定位置,不受页面滚动影响。这些技巧对于实现复杂网页布局至关重要。
61 0
下一篇
无影云桌面