CSS学习笔记——布局之盒子模型

一. 文档流

1. 文档流

  • 网页是一层一层摞起来的,用户只能看见最上面的一层,网页最底层称为文档流,我们创建的元素都默认放置在文档流中
  • 元素有两种状态:
    在文档流中
    不在文档流中(脱离文档流)

2.元素在文档流中的特点

  • 块元素
    - 独占一行,自上而下垂直排列
    - 默认宽度为父元素的100%
    默认高度被内容和子元素撑开
  • 行内元素
    - 只占自身实际的大小,从左向右排列,一行满后自动换行
    - 默认高度和默认宽度都被内容撑开

二.盒子模型

1.简介

盒子模型也称为盒模型,边框模型。CSS将页面中的元素都设置成了矩形的盒子,每个盒子都由以下几部分组成:

  • 内容区(content),元素中的内容和子元素都排列在其中
  • 边框(border)
  • 内边距(padding),内容区与边框之间的距离
  • 外边距(margin),与其他盒子之间的距离

内容区,边框和内边距为盒子的可见框,外边距看不见

2.盒子的大小

width属性和height属性用来设置盒子的大小,box-sizing用来指定widthheight的作用范围。

box-sizing 取值作用
content-boxwidthheight只设置内容区的大小
border-boxwidthheight设置整个盒子可见框的大小(包括内容区,内边距和边框)

3.盒子的各个部分

1 > 内容区(content)
  • 元素中的内容和子元素都排列在内容区
  • 默认情况下,内容区的大小用width属性和height属性设置
    width 宽度,height 高度
2 > 边框(border)

边框会影响盒子的大小,要设置边框,必须要有以下三个属性:

属性说明
border-width边框的宽度
border-color边框的颜色
border-style边框的样式
边框的宽度

1.border-width默认值一般为3px,用来设置四个边框的宽度

border-width:10px 20px 30px 40px;   /* 上  右  下  左 */
border-width: 10px 20px 10px;  /* 上  左右  下 */
border-width: 10px 20px ;   /* 上下  左右 */
border-width: 10px;  /* 上下左右 */

2.border-xx-width,xx可以为top,right,bottom,left,用来单独设置一个边的边框宽度

border-top-width:10px; /* 设置上边框的宽度*/
border-right-width:10px; /* 设置右边框的宽度*/
border-bottom-width:10px; /* 设置下边框的宽度*/
border-left-width:10px; /* 设置左边框的宽度*/
边框的颜色

1.border-color默认值为color属性的值,用来设置四个边框的颜色(用法同宽度)

border-color:red green black blue;   /* 上  右  下  左 */
border-color: red green black;  /* 上  左右  下 */
border-color: red green ;   /* 上下  左右 */
border-color: red ;  /* 上下左右 */

2.border-xx-width,xx可以为top,right,bottom,left,用来单独设置一个边的边框颜色

border-top-color:red; /* 设置上边框的颜色*/
border-right-color:red; /* 设置右边框的颜色*/
border-bottom-color:red; /* 设置下边框的颜色*/
border-left-color:red; /* 设置左边框的颜色*/
边框的样式

1.border-style默认值为none,用来设置四个边框的样式

  • solid 实线
  • dashed 虚线
  • dotted 点状虚线
  • double 双实线
border-style:solid dashed dotted double;   /* 上  右  下  左 */
border-style: solid dashed dotted ;  /* 上  左右  下 */
border-style: solid dashed ;   /* 上下  左右 */
border-style: solid ;  /* 上下左右 */

2.border-xx-style,单独设置一个边样式

border-top-style:solid; /* 设置上边框样式*/
border-right-style:solid; /* 设置右边框的样式*/
border-bottom-style:solid; /* 设置下边框的样式*/
border-left-style:solid; /* 设置左边框的样式*/
边框的简写

1.border,可以同时设置四个边框的各个属性,没有顺序

border:solid 10px red;  /* 四个边都为10px宽的红色实线边框 */

2.border-xx,单独设置一个边框的各个属性

border-left:solid 10px red;/* 给左边框设置10px宽的红色实线边框 */
3 > 内边距(padding)

内边距是盒子的内容区与边框之间的距离,内边距会影响盒子的大小

1.padding,用来设置四个方向的内边距

padding:10px 20px 30px 40px;/* 上  右  下  左 */
padding:10px 20px 10px; /* 上  左右  下 */
padding:10px 20px;  /* 上下  左右 */
padding:10px;  /* 上下左右 */

2.padding-xx,用来单独设置一个方向的内边距,xx可取top,right,bottom,left

padding-left:10px; /* 左内边距 10px */
4 >外边距(margin)
外边距简介

外边距是当前盒子与其他盒子之间的距离,外边距不会影响盒子可见框的大小,但会影响盒子的位置和占地大小
1.margin-xx,单独设置一个方向的外边距

  • margin-top
    设置正值,盒子向下移动
    设置负值,向相反方向移动
  • margin-right
    默认情况下不起作用
  • margin-bottom
    设置正值,将其下边的元素向下移动
    设置负值,其下边的元素向相反方向移动
  • margin-left
    设置正值,盒子向右移动
    设置负值,向相反方向移动

margin,外边距的简写,同时设置四个方向的外边距

margin:10px 20px 30px 40px;/* 上  右  下  左 */
margin:10px 20px 10px; /* 上  左右  下 */
margin:10px 20px;  /* 上下  左右 */
margin:10px;  /* 上下左右 */
外边距的折叠

垂直方向上相邻的外边距会发生折叠

垂直相邻的兄弟元素之间
– 两个元素外边距都为正值,取较大的一个
– 一个正值一个负值,取两外边距之和
– 两个负值,取绝对值较大的一个
(在开发中是有利的,不需要解决)
父子元素之间
子元素的上外边距会传递给父元素
(需要解决)

4.水平的布局

1.水平方向的布局由以下几个属性决定:

  • margin-left
  • border-left
  • padding-left
  • width
  • padding-right
  • border-right
  • margin-right

一个元素在其父元素中,水平方向必须满足以下等式:

margin-left + border-left + padding-left + width + padding-right + border-right + margin-right = 父元素的宽度

2.上述等式不成立时,称为过度约束,这时浏览器会自动调整以使等式成立。

  • 没有auto值存在时
    默认调整margin-right
  • 有auto值存在时,调整值为auto的属性
width为auto
调整width为父元素的100%
margin-left为auto
调整margin-left
margin-right为auto
调整margin-right
margin-left与margin-right都为auto
将左右边距设置成相同的值
我们经常利用这一点将元素水平居中
width,margin-left和margin-right都为auto
width设置为父元素的100%,左右边距都为0

5.垂直的布局

子元素排列在父元素的内容区,当子元素的大小超过了父元素的大小时,子元素会从父元素中溢出

使用overflow属性来处理子元素的溢出

overflow: visible;  /* 默认值,子元素显示在父元素外部 */
overflow: hidden;  /* 溢出的部分隐藏 */
overflow: scroll;  /* 生成两个方向的滚动条 */
overflow: auto;  /* 根据情况自动生成滚动条 */

6.行内元素的盒模型

行内元素的盒模型
  • 行内元素不独占一行
  • 可以设置paddingbordermargin,不影响垂直方向上的布局
display属性与visibility属性
  • display,设置元素显示的类型,可以用来转换元素类型
取值
inline 以行内元素显示
block 以块元素显示
inline-block 以行内块元素显示
none 元素不显示,并且不占位置
  • visibility,用来设置元素显示的状态
取值
visible 默认值,元素正常显示
hidden 元素不显示,但是占位置

7.浏览器的默认样式

浏览器会默认为元素设置样式,默认样式会影响布局,所以通常情况下需要去除。

  • 使用通配选择器
*{
	margin: 0;
	padding: 0;
}
  • 使用重置样式表(专门用来处理默认样式)
    reset.css 去除所有默认样式
    normalize 将默认样式进行统一

8.轮廓,阴影和圆角

1> 轮廓(outline)

outline属性用来设置元素的轮廓,用法与border相同,但outline不会改变盒子的大小,不会影响布局。

outline: 10px solid red;
2> 阴影(box-shadow)

box-shadow用来设置元素的阴影

取值

  • 第一个值:水平方向上的偏移量,设置正值向右移动,设置负值向左移动。
  • 第二个值:垂直方向上的偏移量,设置正值向下移动,设置负值向上移动。
  • 第三个值:阴影的模糊半径,值越大越模糊。
  • 第四个值:阴影的颜色。
box-shadow: 10px 10px 10px red;
3> 圆角(border-radius)

border-radius用来设置元素的圆角

border-radius的取值

  • 圆角
border-radius:10px 20px 30px 40px; /* 左上 右上 右下 左下 */
border-radius:10px 20px 30px ; /* 左上  右上左下  右下 */
border-radius:10px 20px; /* 左上右下   右上左下 */
border-radius:10px; /* 四个角 */
  • 椭圆角
border-radius:10px/20px;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值