CSS学习三大重点:CSS盒子模型、浮动、定位
主体思路:

理解目标:
网页布局中,我们是如何把里面的文字,图片,按照美工给我们的效果图排列的整齐有序呢?
看透网页布局的本质:
所谓盒子模型:


小结:
(1)盒子模型由元素的内容、边框(border)、内边距(padding)、和外边距(margin)组成。
(2)盒子里面的文字和图片等元素是内容区域
(3)盒子的厚度:我们称为盒子的边距
(4)盒子内容与边距的距离是内边距(类似单元格的cellpadding)
(5)盒子与盒子之间的距离是外边距(类似单元格的cellspacing)
标准盒子模型


border : border-width || border-style || border-color
| 属性 | 作用 |
|---|---|
| border-width | 定义边框粗细,单位是px |
| border-style | 边框的样式 |
| border-color | 边框颜色 |

(1)none:没有边框即忽略所有边框的宽度(默认值)
(2)solid:边框为单实线(最为常用的)
(3)dashed:边框为虚线
(4)dotted:边框为点线
border : border-width || border-style || border-color
例如:
border : 1px solid red; 无顺序要求
很多情况下,我们不需要指定4个边框,我们是可以单独给4个边框分别指定的。


table{border-collapse:collapse;}
collapse单词是合并的意思
boder-collapse:collapse;表示相邻边框合并在一起

padding属性用于设置内边距,是指边框与内容之间的距离
| 属性 | 作用 |
|---|---|
| padding-left | 左内边距 |
| padding-right | 右内边距 |
| padding-top | 上内边距 |
| padding-bottom | 下内边距 |
| 当我们给盒子指定padding值之后,发生了2件事情: | |
| (1)内容和边框有了距离,添加了内边距 | |
| (2)盒子会变大 | |
| 注意:后面跟几个数值表示的意思是不一样的 |

新浪导航栏的核心就是因为里面的字数不同,所以不方便给宽度,还是给padding,让其撑开盒子。
新浪导航案例



会撑大原来的盒子
如果没有给一个盒子指定宽度,此时,如果给这个盒子指定padding,则不会撑开盒子

margin属性用于设置外边距,margin就是控制盒子和盒子之间的距离

.header{width:960px; margin:0 auto;}
常见的写法,以下三种都可以。
(1)margin-left:auto; margin-right:auto;
(2)margin:auto;
(3)margin:0 auto;
1.文字水平居中是 text-align : center,而且还可以让行内元素和行内块居中对齐
2.块级盒子水平居中,左右margin改为auto
text-align : center; /*文字 行内元素 行内块元素水平居中*/
margin : 10px auto; /*块级盒子水平居中,左右margin改为auto就可以了,上下margin都可以*/
1.插入图片,我们用的最多比如产品展示类,移动位置只能靠盒模型padding,margin
2.背景图片我们一般用于小图标背景或者超大背景图片。背景图片只能通过background-position
img {
width : 200px;
height: 210px;
margin-top:30px;
margin-left: 50px;
}
div{
width : 400px;
height : 400px;
border : 1px solid purple;
background: #fff url(images/heder.jpg) no-repeat;
background-position: 30px 50px; /*背景图片更改位置,用background-position*/
}

为了更灵活方便地控制网页的元素,制作网页时,我们需要将元素的默认内外边距清除
代码:
* {
padding:0;
margin:0;
}
注意:
行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置上下内外边距。
使用margin定义块元素的垂直外边距时,可能会出现外边距的合并
(1)相邻块元素垂直外边距的合并


width > padding > margin
因为网页美工大部分效果图都是利用ps来做的,所以以后大部分切图工作都是在ps里面完成。

