盒子是css中最重要的概念。
盒子
首先先建立一个观念: 几乎所有标签其实都是一个盒子——而所谓盒子,无非就是一个“矩形的区域范围而已”。其实所谓网页,无非是一个盒子套一个盒子。
一个盒子有如下一些区域(结构)构成:
边框(border):一个线型的区域,可以是实线或虚线或其他形状。
外边距(margin):也叫“边界”,边框线之外的一块空白区域,其含义是“不能放置物体”
内边距(padding):也叫“补白”,边框线之内的一块空白区域,其含义也是“不能放置物体”
内容区(没有对应的css属性名):指一个盒子中可以放置“物体”的区域——也就是盒子的主要区域。其中放置的物体可以是普通的文字或其他标签——对应我们之前学的html中的“内容部分”。内容区通常只能设置其宽高属性(width,height)。
一个盒子的合个组成部分由下图所示:
练习:
网页设计中的“内容与表现分离”思想
我们以前学习html,说,标签具有“表形表意”之作用。其实也可以说,内容和其表现混在一起。
现在:
css技术其实可以将一个网页中的各个标签的表现都“提出来”放到一个专门的地方(比如style标签中),剩余的部分(标签和文字内容等)被整体上称为“结构/内容”。这种做法就被称为“内容与表现分离思想”
盒子的两种初始状态(基本表现)
类似div的盒子:一个盒子自动“占据一行”(不管其内部内容多少):这就是“块盒子”(块元素)。常用块盒子:
p, hr, h1~h6, table, form, ul, li, ol, dl, dt, dd, blockquote, pre,
特点:可以设置固定的宽高,margin,padding,
类似span盒子:一个盒子中的内容会跟同类的盒子并排在一行出现,除非该行已满,则会自然到下一行——类似文字的表现特性。:这就是行内盒子(行内元素)。行内盒子通常放“最终的数据内容”,比如文本,图片。其他行内盒子:
b, strong, font, i, u, a, img, input, textarea, select,
特点:宽高不能设定,而是由其内容“撑出”,margin和padding没有上下方面的表现。
通常,行内盒子是“小盒子”,块盒子是“大盒子”。
练习
布局初步(原理)
所谓布局,其实是指的将网页内容以一定的方式放到合适的位置上去。
布局的基本步骤:
1, 将“当前版面”以视觉上界限明显的方式进行划分若干个区块,划分只用两种方式:
a) 上下结构:此时,只要使用若干个盒子,自然就是上下结构,无需其他设置。
b) 左右结构:此时使用若干个盒子,并进行相应的浮动,通常的模式:
i. 2个盒子:一左一右
ii. 3个盒子:两左一右或两右一左,或一边倒。
iii. 更多盒子:通常一边倒。
浮动解释:
浮动就像水中的气泡,会“网上浮”
更形象的比喻:大家(所有标签)都在“地面上平铺着”,各自占据着一定的面积,浮动元素却“浮”到天花板上去了,其并占据大家通常的“地面面积”。
浮动除了表现上不跟别的元素抢占地盘之外,其最主要的特性(也就是破坏效果)其实是:使其父盒子失去合理高度——父盒子已经包不住其这些浮动的内部盒子了!这在布局中基本上是不允许的!那么我们就必须使用补充的做法来实现合理包含——父盒子包住子盒子。让父盒子获得正确有效高度的方法有3个:
1, 给父盒子设置一个固定的高度——通常设计时已知高度且不回改变的时候。
2, 给父盒子的内部最末尾加一个清除浮动的空盒子,如下:<div style=”clear:both”></div>
3, 给父盒子设置一个css属性:overflow:hidden;
则最好总结:布局需要左右排列,左右排列需要浮动,浮动需要修正其破坏效果——让父盒子合理包住其子盒子。