WEB开发的那些基础知识(3)--CSS的布局

 

CSS布局很难。这是我初学布局的感受,

想要画画一样将hmtl的各种元素排列起来呈现给用户,没有捷径,只能够多次尝试,总结经验,形成风格。

一个人的风格一旦形成,就会达到一种事半功倍的效果,当你想要实现什么样式的时候,脑海中就会立即浮现出一套实现的方法,先不论这个方法是不是最好的,起码它能解决问题。

 

想要做到这个,对基础的掌握,必不可少。最近看到有人说自己不懂这个不懂那个,是因为以前没接触过,但是等到用的时候,只要百度一下,1分钟就能搞定,以此认定现在招聘程序员的方式有问题。我对此表示不以为然。

没有足够的知识积累,很多事情你是做不到的,现在给你提出一个你从来没有接触过的概念,你对此很茫然,什么都不知道,却又信誓旦旦的说:只要给我一星期的时间我保证精通此道。

看过《棋魂》吗?进藤光问塔矢亮,把所有的围棋头衔都拿到手有多少钱。塔矢说:1亿3千多万。进藤光很激动,说那我也成为职业棋手好了,随便玩玩就能挣那么多钱。

塔矢亮当时就火了,说:你侮辱了所有下围棋的人,你知道有多少人为了成为职业棋手,不停的努力努力,放弃了一切,经历多少苦痛,辛酸,最终还是没能成功的,那些成为大师的人物都是身经百战,付出比别人更多的努力才能享有今天的荣誉,而你竟然说随便玩玩?

 

那些说用百度一分钟解决问题的人,也是侮辱了所有的开发人员。

 

难道百度一下你就有了几十年的积累,百度一下你就省去别人多少年的努力学习,百度一下,你就能成为专家大师了?

 

扯远了,回头来看我们的CSS布局。

CSS布局有3个概念:框,定位,浮动,

框模型有2种,块框(div,p,ul)和行框(span) 块框占据一行或多行,行框只会是一行

 

1、框模型

 

框模型是CSS的基石之一,页面上每个元素被看做一个矩形框,元素包括:内容(width,height),填充(padding),边框(border),和空白边(margin)

其中,填充(padding)和空白边(margin)的语法差不多,后跟若干数字,顺序为 上,右,下,左,他们的不同 如果该元素设置了背景色,margin是不会显示此背景色的,padding区域才会。

margin|padding: 5px 10px 15px 20px;表示上>5px,右>10px,下>15px,左>30px,

margin|padding: 5px 10px;表示 上下>5px,左右>10px

margin|padding: 10px;表示 上下左右>10px

 

空白边叠加

当两个垂直空白边相遇时,它们将形成一个空白边。这个空白边的高度等于两个发生叠加的空白边的高度中的较大者。

当一个元素出现在另一个元素上面时,第一个元素的底空白边与第二个元素的顶空白边发生叠加

只有普通文档流中块框的垂直空白边才会发生空白边叠加。行内框、浮动框或绝对定位框之间的空白边不会叠加。

 

2、定位

 

p、h1或div等元素常常称为块级元素。这意味着这些元素显示为一块内容,即“块框”

与之相反,strong和span等元素称为行内元素,因为它们的内容显示在行中,即“行内框”.

可以使用display属性改变生成的框的类型。这意味着,通过将display属性设置为block,可以让行内元素(比如锚)表现得像块级元素一样。还可以通过将display属性设置为none,让生成的元素根本没有框。这样,这个框及其所有内容就不再显示,不占用文档中的空间。

 

CSS的三种基本定位机制: 普通流,浮动,绝对定位,默认是普通流定位

普通流

普通流中的块级框从上到下一个接一个的排列,框之间的垂直距离由框的空白边(margin)计算出来(注意空白边叠加)

由一行形成的水平框称为行框,行框的高度总是足以容纳它,包含的所有行内框。设置行高可以增加(不能降低)这个框的高度。

框可以按照(X)HTML元素的嵌套方式包含其他框。大多数框由显式定义的元素形成。但是,在一种情况下,即使没有进行显式定义,也会创建块级元素。这种情况发生在将一些文本添加到一个块级元素(比如div)的开头时。即使没有把这些文本定义为段落,它也会被当作段落对待:

<div>Some text<p>Some more text</p></div>

在这种情况下,这个框称为无名块框,因为它不与专门定义的元素相关联。

 

相对定位

如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。如果将top设置为20像素,那么框将出现在原位置顶部下面20像素的地方。如果将left设置为20像素,那么会在元素左边创建20像素的空间,也就是将元素向右移动

#myBox{

position:relative;

left: 20px;

top: 20px;

}

在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其他框

 

绝对定位 position:relative;

绝对定位使元素的位置与文档流无关,因此不占据空间。普通文档流中其他元素的布局就像绝对定位的元素不存在时一样

绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块

 

对于定位的主要问题是要记住每种定位的意义。相对定位是“相对于”元素在文档流中的初始位置,而绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么是最初的包含块。

 

固定定位 position:fixed

固定定位是绝对定位的一个子类别。博客评论表单采用固定定位,这使它在页面滚动时一直出现在屏幕上的相同位置。这有助于改进易用性,用户不必为了发表评论而一直滚动到页面底部。

 

浮动 float

浮动的框可以左右移动,直到它的外边缘碰到包含框或另一个浮动框的边缘,想想一个布局分为上下层,浮动就在上层,它对下层没有任何影响,只是以包含框架的起点为起点(或者终点为起点),你可以设置浮动的位置,top,left,right,bottom.

 

清理 clear:left|right|both

clear能够清理,让本标签跟在浮动层后而不是在浮动层下被覆盖掉。

 

以上属性在我们设计布局的时候是最常用的属性,他们之间的组合可以满足大部分页面需求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值