CSS盒子模型

1.1 盒子模型的定义

     “盒子模型(box model)是CSS中一个很重要的概念,因为它决定了元素在浏览器窗口中如何定位。CSS模型在本质上是一个盒子,用于封装周围的HTML元素,包括外边距(margin)、边框(border)、内边距(padding)、和内容(content)。

 


border:边框用来将一个盒子的边界和周围其他盒子彼此分开,即便不可见,每个盒子也有边框

margin:从盒子打下一个盒子的距离(即外边距)

padding:元素内容与盒子边框的距离(即外边距)


1.2 border属性

border属性用来指代某一元素的盒子的边框应如何呈现。边框有三个可修改的属性。

border-color:指定边框应具有的颜色

border-style:指定边框应为实线、虚线、还是双股线,也可以是其他可能的取值

border-width:指定边框应具有的宽度

1.2.1 border-style属性 

border-style属性的取值
描述
none不存在边框(等价于border-width:0;)
solid边框是一条实线
dotted边框是一系列的点
dashed边框是一系列的断线
double边框是两条实线
groove边框具有切入效果
ridge边框效果与groove相反
inset边框使盒子看起来内嵌于页面中
outset边框使盒子看起来突出于画布之外
hidden与none相同,但用于作为表格元素的边框冲突解决方案(用于隐藏元素)

 

 

 

 

 

 

 

 

 

 

 

 

 

1.2.2 border-color属性

    border-color属性能够改变盒子周围边框的颜色,与color属性一样,可以用下面的方法来表示

第一种:英文单词 red black yellow blue

第二种:#rrggbb  或者十六进制 #000000 #ffffff   其中r--red g--green b--blue

    还可以为四个边框指定不同的颜色,使用以下属性分别指定盒子边框的底部、左侧、顶部、以及右侧的颜色:border-bottom-color、border-left-color、border-top-color、border-right-color。

 1.3 padding属性

    padding属性用来指定元素内容与边框之间的距离,也叫作内边距。该属性的值通常使用像素指定,也可以长度单位、百分比关键字inherit

    如果使用百分比,这一包含盒子的百分比计算。如果指定为10%,则每一边取盒子的5%作为内边距。

    与边框一样,也可以使用如下属性指定盒子每一边的不同内边距的大小:padding-bottom、padding-top、padding-left、padding-right。

1.4 margin属性

    margin属性用来控制盒子之间的空间,取值可以是长度、百分比或关键字inherit,取值的含义与padding属性完全相同 

1.5 border-radius属性

    border属性分别设置了四个角的圆角效果的半径,也可以为每个角单独设置,对应的四个属性分别是:border-top-left-radius(左上角)、border-top-rightradius(右上角)、border-bottom-left-radius(左下角)、border-bottom-rightradius(右下角)。border-radius属性的值可以是em、像素和百分比作为单位。

#test{
    border:3px solid red;
    height:100px;
    width:200px;
    border-radius:50px 0px;
}

1.6 border-image属性

border-image属性的基本语法:

border-image:source slice width outset repeat|initial|inherit; 

source是准备用作边框图像文件的URL地址。

slice由四个值决定,决定了切片的尺寸,值可以是百分比或数字。

repeat是指边框进行平铺的方式,可以使用round、stretch、space和repeat中的两个值。

#test1{
    border-width:15px;
    border-image:url(images/border.png)15 15 15 15 repeat;
}

2. 使用CSS定位和布局

2.1 浮动布局

float元素能够将某个元素从正常流中抽取出来,并将其可能远地放置在包含盒子的左侧或右侧

float属性的取值:

描述
none默认值,盒子不浮动,并保持在原位
left盒子左浮动到包含元素的左侧,而包含元素的其他内容浮动至右侧
right盒子右浮动到包含元素的左侧,而包含元素的其他内容浮动至左侧
inherit从父元素继承float属性的值

 

 

 

 

 

 

 

<head>
	<meta charset="UTF-8">
	<title>浮动布局</title>
	<style type="text/css">
	.one{
		width:100px;
		height:100px;
		background-color: blue;
		float: left;
	}
	.two{
		width:100px;
		height:100px;
		background-color: red;
        float:left;
	}
	.three{
		width:100px;
		height:100px;
		background-color: purple;
		float: left;
	}
	</style>
</head>
<body>
	<div class="one">1</div>
	<div class="two">2</div>
	<div class="three">3</div>
</body>

2.1.1 clear属性

clear属性定义元素的那边不允许出现浮动的元素

clear属性的取值;

left:不允许左边有任何浮动 (清除左侧的浮动)

right:不允许右边有任何浮动(清除右侧的浮动)

both:不允许左右两侧有任何浮动(清除左、右俩侧的浮动)

none:默认值,允许两边出现浮动

2.2 定位布局

2.2.1 position属性

    position属性是一个使用较多的重要属性,很多特殊容器的定位必须使用position属性来完成。该属性有四个取值。

static(默认值)静态定位,根据每个元素的默认值。

absolute:绝对定位将对象从文档流分离出来,通过设置topleftrightbottom这四个 方向的值进行定位(相较于父级的定位),如果没有这样的父级,默认的父级是body。

relative: 相对定位 : 对象不从文档流里面分离,通过设置 top left right bottom 这四个方向
的值进行定位(相较于自身的定位)。
 
fixed:固定在屏幕的某个位置,位置通过left、top、right和bottom属性指定,并且不随用户滚动窗口而改变位置。
<head>
	<meta charset="UTF-8">
	<title>定位布局</title>
	<style type="text/css">
	.main{
		width:600px;
		height:600px;
		border:1px solid red;
		margin: 200px;
		position: relative;
	}
	.box{
		width: 200px;
		height:200px;
		border:1px solid red;
		background-color: red;
		position: absolute;
		top:100px;
		left:100px;
	}
	.box1{
		width: 200px;
		height:200px;
		border:1px solid red;
		background-color: blue;
		/*top:100px;
		left:100px;*/
	}
	.box2{
		width: 200px;
		height:200px;
		border:1px solid red;
		background-color: purple;
		/*top:100px;
		left:100px;*/
	}
	</style>
</head>
<body>
	<div class="main">
		<div class="box">
			这是一个div
		</div>
		<div class="box1">
			这是一个div
		</div>
		<div class="box2">
			这是一个div
		</div>
	</div>
</body>

 2.3 其他属性

2.3.1 overflow属性

visible:默认。溢出没有被剪裁。内容在元素框外渲染
 
hidden:溢出被剪裁,其余内容将不可见
 
scroll:溢出被剪裁,同时添加滚动条以查看其余内容
 
auto: scroll 类似,但仅在必要时添加滚动条(总是显示滚动条)
 

2.3.2 zoom属性

 
缩放   zoom : number 百分比
<head>
	<meta charset="UTF-8">
	<title>溢出</title>
	<style type="text/css">
	#box{
		width:400px;
		height:400px;
		border:1px solid black;
		/*overflow: scroll;*/
		/*background: url("../images/哆啦A梦.jpg");*/
	}
	img{
		zoom:0.5;
	}
	</style>
</head>
<body>
	<div id="box">
		<img src="../images/哆啦A梦.jpg">
	</div>
</body>

2.4 弹性盒子(Flexbox)布局

 
    CSS弹性盒子由 弹性容器弹性子元素组成。弹性容器通过 设置display属性的值为 flex而定义为弹性容器。弹性容器内 包含一个或多个弹性子元素。弹性子元素通常在示 CSS弹性盒子的一行中显示。默认情况下每个容器只有一行。
 
flex-direction ------- 指定了弹性盒子(弹性容器)中子元素的排列方式
 
flex-wrap ------------指定了弹性盒子(弹性容器)中子元素的换行方式
 
flex-flow ---------flex-directionflex-wrap的简写
 
justify-content------修改了flex-wrap属性的行为,类似align-items,但不是设置子元素的对齐,
而是设置行对齐
 
align-items----设置了弹性盒子子元素在侧轴的(纵轴)的对齐方式
 
align-content-----设置了弹性盒子子元素在主轴的(横轴)的对齐方式
 

2.4.1 flex-direction属性

 
flex-direction属性的取值:
 
flex-direction:column------- 从上到下
 
flex-direction:column-reverse------- 从下到上
 
flex-direction:row------- 从左到右
 
flex-direction:column------- 从右到下左
 
<head>
	<meta charset="UTF-8">
	<title>FlexBox</title>
	<style type="text/css">
	#main{
		width:400px;
		height:400px;
		display:flex;
		flex-direction:column;/*从上到下*/
		flex-direction:column-reverse;/*从下到上*/
		flex-direction:row;/*从左到右*/
		flex-direction:row-reverse;/*从右到左*/
		border:1px solid black;
	}
	.box1{
		width:100px;
		height:100px;
		background-color: red;
	}
	.box2{
		width:100px;
		height:100px;
		background-color: blue;
	}
	.box3{
		width:100px;
		height:100px;
		background-color: green;
	}
	</style>
</head>
<body>
	<div id="main">
		<div class="box1">1</div>
		<div class="box2">2</div>
		<div class="box3">3</div>
	</div>
</body>

 2.4.2 flex-wrap属性

flex-wrap属性规定弹性盒子容器是单行还是多行,同时横轴的方向决定了新行堆叠的方向。

该属性的取值如下:

flex-wrap: wrap; ------ 必要的时候换行
 
flex-wrap: nowrap; ------- 默认值,不换行
 
flex-wrap:wrap-reverse --------值规定如有必要,弹性项目将以相反的顺序换行
 
 

2.4.3 flex-flow属性

 
flex属性是 flex-direction属性和flex-wrap属性的简写形式,默认值为 row nowrap
 

2.4.4 justify-content属性

 
justify-content属性用于设置或检索弹性子元素在主轴(横轴)方向上的对齐方式。
 
justify-content属性的取值如下:
 
center ------ 居中对齐
 
flex-start------ 默认值,左对齐,弹性容器(弹性盒子)开头对齐
 
flex-end --------弹性容器(弹性盒子)末端对齐
 
space-around ---------显示行(子元素)之前、之间和之后带有空格
 
space-between--------- 显示行(子元素)之间有空格
 
 

2.4.5 align-items属性

 
align-items属性定义弹性盒子子元素在弹性容器的当前行的侧轴(纵轴)方向上的对齐方式。
 
align-items属性的取值如下:
 
center------------ 垂直方向的居中
 
flex-start -------- 顶部对齐
 
flex-end --------  底部对齐
 
stretch ---------- 子元素会拉伸占用剩余的空间(子元素不设置高度)
 
 

 2.4.6 align-content

stretch -----默认(子元素不设置高度的时候会拉伸)。各行将会伸展以占用剩余的空间。
 
flex-start ----- 各行向弹性盒容器的起始位置堆叠。
 
flex-end- ---各行向弹性盒容器的结束位置堆叠。
 
center ---------各行向弹性盒容器的中间位置堆叠。
 
space-between -----------各行在弹性盒容器中平均分布。
 
space-around - ------各行在弹性盒容器中平均分布,两端保留子元素与子元素之间间距大小 的一
 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值