首先对于之前的拖更表示抱歉,因公派,前往上海,所以耽误了几天,以后会尽量按时更新.
今天课程主要介绍盒模型的基本概念,同时告诉大家,盒模型具体元素的构成。在最后面会介绍一下定位。
今日课程预览
CSS 盒模型 概述
首先大家看到的是什么?
有月饼和月饼盒,对么?
所以,我们今天的课程就叫做“一个月饼盒引发的深思”。
大家首先看到的是什么?
是不是一个盒子,很像我们中秋节的时候包装月饼的月饼盒子,对么?
其中两个月饼盒子之间的距离就是咱们要介绍的–>margin
(外边距).<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPrb41NvDx8O/uPbUwrH9trzSqtPQ1+7N4rLjtcSw/NewutCjrLb41eK49rD817C60LXEuvG2yKOsvs3Kx9Tbw8e1xCZuZGFzaDsmZ3Q7IDxjb2RlPmJvcmRlcjwvY29kZT6jqLHfv/KjqS48L3A+DQo8cD7Ex9Tbw8e1xNTCsf2yu7/JxNy2vMrH1rG907Ck1NrSu8bwtcSjrLbUsMmjrMTHw7+49tTCsf3WrrzktcS85L7go6zU28PHvs290Nf2Jm5kYXNoOyZndDsgPGNvZGU+cGFkZGluZzwvY29kZT6jqMTasd++4KOpLjwvcD4NCjxwPsTH1NvDx73pydzBy9TCsf260KOs1NvDx7XE1MKx/dfc06a4w9PQsMmhozwvcD4NCjxwPrbUtcSjrNTbw8fUwrH9tcS/7bbIvs3KxyAmbmRhc2g7Jmd0OyA8Y29kZT53aWR0aDwvY29kZT4uPC9wPg0KPHA+uN+2yL7NyscgJm5kYXNoOyZndDsgPGNvZGU+aGVpZ2h0PC9jb2RlPi48L3A+DQo8cD62+NTbw8e1xNTCsf2+zb3Q1/YgJm5kYXNoOyZndDsgPGNvZGU+ZWxlbWVudDwvY29kZT6jqNSqy9ijqS48L3A+DQo8cD48aW1nIGFsdD0="css box" src="/uploadfile/Collfiles/20160315/20160315091311168.gif" title="\" />
内边距、边框和外边距都是可选的,默认值是零。
但是,许多元素将由用户代理样式表设置外边距和内边距。
可以通过将元素的 margin 和 padding 设置为零来覆盖这些浏览器样式。
这可以分别进行,也可以使用通用选择器对所有元素进行设置:
* {
margin: 0;
padding: 0;
}
在 CSS 中,width 和 height 指的是内容区域的宽度和高度。
增加内边距、边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸。
假设框的每个边上有 10 个像素的外边距和 5 个像素的内边距。
如果希望这个元素框达到 100 个像素,就需要将内容的宽度设置为 70 像素,请看下图:
提示:内边距、边框和外边距可以应用于一个元素的所有边,也可以应用于单独的边。
提示:外边距可以是负值,而且在很多情况下都要使用负值的外边距。
代码和效果演示
在网页中,添加一个p标签,并设置class的值
HTML代码:
我是一个p哦
设置自身大小
通常class选择器来设置属性值,首先是width(宽)
、hegiht(高)
、background-color(背景颜色)
CSS代码:
.box_model {
width: 200px;
height: 200px;
background-color: cyan;
}
效果如下:
上述操作只是添加了一个p标签,并设置了文字、大小和颜色,并没有特殊操作。下面,我们继续:
设置padding 内边距
看上面的图,发现文字紧贴着边框,看着不是特别友好,如果想要添加一些边距,可以使用padding
属性,来添加内边距
CSS代码:
.box_model {
width: 200px;
height: 200px;
background-color: cyan;
/*内边距*/
padding: 20px;
}
效果如下:
现在已经实现了文字和边框中间有了20像素的宽度,看着不是那么的紧凑了
注意:我们修改了
padding
的值,会导致p整体变大,因为padding
属于p内部
如果我们希望p还是原来得大小,当我们设置了padding为20px,我们就需要修改width和height,分别减去40,才可以保证p大小不变
设置border 边框
看这样一个色块比较单调,来设置个有颜色的边框
CSS代码:
.box_model {
width: 200px;
height: 200px;
background-color: cyan;
/*内边距*/
padding: 20px;
/*边框*/
border: 50px solid black;
}
效果图如下:
当设置了非常变态的50像素的边框之后,看到如下效果。通常,边框不会有那么大的值,1像素足够了
设置了边框的值,p标签的大小也会增加。边框也属于p本身
设置margin 外边距
外边距的主要作用就是设置该标签距离其它标签之间的距离
先来看下我们没有添加外边框代码时候p在浏览器中的样子
大家发现,在p标签的上部和左侧都有一段间距,这段间距是body的间距值(8px),先暂时忽略,不管它
然后我们添加外边距代码
CSS代码:
.box_model {
width: 200px;
height: 200px;
background-color: cyan;
/*内边距*/
padding: 20px;
/*边框*/
border: 50px solid black;
/*外边距*/
margin: 50px;
}
添加代码之后,效果如下:
现在,p标签距离浏览器的上部和左侧就有很大一段距离了,原因就是我们设置了外边框
注意事项
看下如下情况:
上面的p和下面的p标签,外边距都分别是50px,但是我们可以注意到,上面和下面之间的间距并不是100px,而同样也是50px,这是因为什么呢?
外边距在垂直距离上,并不会相加,而是取较大值。
举个例子: 如果上面的标签设置的外边距为100px,下面的标签这是外边距为80px,那么上下两个元素之间的距离九会为100px,取较大值。
这是两个元素竖直排列,那如果横排呢??
想多了,如果元素横排,那两个标签之间的间距就是两个元素的外边距之和
属性详写
内边距属性
padding
padding-left
padding-top
padding-right
padding-bottom
padding: 20px; 代表上下左右内边距均为20px
padding: 10px 20px; 代表上下内边距为10px,左右内边距为20px。第一个数字代表上下,第二个代表左右内边距的值。注意中间是空格哦
边框属性
border
: 同时设置上下左右的边框相关
border-left
: 设置左侧边框相关
border-left-width
: 设置左侧边框厚度 border-left-color
: 设置左侧边框的颜色
border-left-style
: 设置左侧边框的样式
border-top
: 设置上部边框相关
border-top-width
: 设置上部边框厚度 border-top-color
: 设置上部边框颜色
border-top-style
: 设置上部边框样式
border-right
: 设置右侧边框相关
border-right-width
: 设置右侧边框厚度 border-right-color
: 设置右侧边框颜色
border-right-style
: 设置右侧边框样式
border-bottom
: 设置下部边框相关
border-bottom-width
: 设置下部边框厚度 border-bottom-color
: 设置下部边框颜色 border-bottom-style
: 设置下部边框样式
border: 1px solid red; 代表上下左右边框厚度为1px,样式为solid,颜色为red.
border-left: 2px double red; 代表设置左侧边框厚度为2px,样式为double,颜色为red.
外边距属性
margin
: 可以同时设置上下左右外边距 margin-left
: 设置左侧外边距 margin-top
: 设置上部外边距 margin-right
: 设置右侧外边距 margin-bottom
: 设置下部外边距
margin: 20px; 代表上下左右外边距均为20px
margin: 10px 20px; 代表上下外边距为10px,左右外边距为20px。第一个数字代表上下,第二个代表左右外边距的值。注意中间是空格哦
display
display 属性规定元素应该生成的框的类型。
这个属性用于定义建立布局时元素生成的显示框类型。
对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定义的显示层次结构。
对于 XML,由于 XML 没有内置的这种层次结构,所有 display 是绝对必要的。
在这里咱们只介绍四个属性。
*none
*inline : 行标签,占一小块区域
*block : 块标签,独占一行,可以设置宽高
*inline-block :块标签,但是具有一些行标签的属性
注释:CSS2 中有值 compact 和 marker,不过由于缺乏广泛的支持,已经从 CSS2.1 中去除了。
附录:
值 | 描述 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
none | 此元素不会被显示。 | ||||||||||||||||||||||
block | 此元素将显示为块级元素,此元素前后会带有换行符。 | ||||||||||||||||||||||
inline | 默认。此元素会被显示为内联元素,元素前后没有换行符。 | ||||||||||||||||||||||
inline-block | 行内块元素。(CSS2.1 新增的值) | ||||||||||||||||||||||
list-item | 此元素会作为列表显示。 | ||||||||||||||||||||||
run-in | 此元素会根据上下文作为块级元素或内联元素显示。 | ||||||||||||||||||||||
compact | CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。 | ||||||||||||||||||||||
marker | CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。 | ||||||||||||||||||||||
table | 此元素会作为块级表格来显示(类似 ),表格前后带有换行符。
|