目录

45.display和visibility

46.overflow

47.文档流

48.浮动

49.简单布局

50.高度塌陷问题

51.解决高度塌陷问题

52.导航条

53.清除浮动

54.

55.

56.

57.

58.

59.

60.

61.

62.

63.

64.

65.

66.

67.

68.

69.

70.

71.

72.

73.

74.

75.

76.

77.

78.


45.display和visibility

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			a{
				background-color: #bfa;

				/*
				 * 将一个内联元素变成块元素,
				 * 	通过display样式可以修改元素的类型
				 * 		可选值:
				 * 			inline:可以将一个元素作为内联元素显示
				 * 			block: 可以将一个元素设置块元素显示
				 * 			inline-block:将一个元素转换为行内块元素
				 * 					- 可以使一个元素既有行内元素的特点又有块元素的特点
				 * 						既可以设置宽高,又不会独占一行
				 * 			none: 不显示元素,并且元素不会在页面中继续占有位置
				 */
				display: none;

				/*为其设置一个宽和高*/
				width: 500px;
				height: 500px;
			}

			.box{
				width: 100px;
				height: 100px;
				background-color: orange;

				/*
				 * display: none;
				 * 	使用该方式隐藏的元素,不会在页面中显示,并且不再占据页面的位置
				 */
				/*display: none;*/

				/*
				 * visibility
				 * 	- 可以用来设置元素的隐藏和显示的状态
				 * 	- 可选值:
				 * 		visible 默认值,元素默认会在页面显示
				 * 		hidden 元素会隐藏不显示
				 *
				 * 使用 visibility:hidden;隐藏的元素虽然不会在页面中显示,
				 * 		但是它的位置会依然保持
				 */
				visibility:hidden ;
			}

		</style>
	</head>
	<body>

		<div class="box"></div>

		<a href="#">我是一个大大的超链接</a>

		<span>hello</span>

	</body>
</html>

46.overflow

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			.box1{
				width: 200px;
				height: 200px;
				background-color: #bfa;
				/*
				 * 子元素默认是存在于父元素的内容区中,
				 * 		理论上讲子元素的最大可以等于父元素内容区大小
				 * 	如果子元素的大小超过了父元素的内容区,则超过的大小会在父元素以外的位置显示,
				 * 		超出父元素的内容,我们称为溢出的内容
				 *  父元素默认是将溢出内容,在父元素外边显示,
				 * 	通过overflow可以设置父元素如何处理溢出内容:
				 * 		可选值:
				 * 			- visible,默认值,不会对溢出内容做处理,元素会在父元素以外的位置显示
				 * 			- hidden, 溢出的内容,会被修剪,不会显示
				 * 			- scroll, 会为父元素添加滚动条,通过拖动滚动条来查看完整内容
				 * 					- 该属性不论内容是否溢出,都会添加水平和垂直双方向的滚动条
				 * 			- auto,会根据需求自动添加滚动条,
				 * 						需要水平就添加水平
				 * 						需要垂直就添加垂直
				 * 						都不需要就都不加
				 */
				overflow: auto;
			}

			.box2{
				width: 100px;
				height: 500px;
				background-color: red;
			}

		</style>
	</head>
	<body>

		<div class="box1">
			在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。
这上面的夜的天空,奇怪而高,我生平没有见过这样奇怪而高的天空。他仿佛要离开人间而去,使人们仰面不再看见。然而现在却非常之蓝,闪闪地䀹着几十个星星的眼,冷眼。他的口角上现出微笑,似乎自以为大有深意,而将繁霜洒在我的园里的野花草上。


		</div>

	</body>
</html>

47.文档流

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>

		<!--
			文档流
				文档流处在网页的最底层,它表示的是一个页面中的位置,
				 我们所创建的元素默认都处在文档流中

			元素在文档流中的特点
				块元素
					1.块元素在文档流中会独占一行,块元素会自上向下排列。
					2.块元素在文档流中默认宽度是父元素的100%
					3.块元素在文档流中的高度默认被内容撑开
				内联元素
					1.内联元素在文档流中只占自身的大小,会默认从左向右排列,
						如果一行中不足以容纳所有的内联元素,则换到下一行,
						继续自左向右。
					2.在文档流中,内联元素的宽度和高度默认都被内容撑开
		-->

		<!--
			当元素的宽度的值为auto时,此时指定内边距不会影响可见框的大小,
				而是会自动修改宽度,以适应内边距
		-->
		<div style="background-color: #bfa;">
			<div style="height: 50px;"></div>
		</div>
		<div style="width: 100px; height: 100px; background-color: #ff0;"></div>


		<span style="background-color: yellowgreen;">我是一个span</span>
		<span style="background-color: yellowgreen;">我是一个span</span>
		<span style="background-color: yellowgreen;">我是一个span</span>
		<span style="background-color: yellowgreen;">我是一个span</span>
		<span style="background-color: yellowgreen;">我是一个span</span>
		<span style="background-color: yellowgreen;">我是一个span</span>
	</body>
</html>

48.浮动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			.box1{
				width: 600px;
				height: 200px;
				background-color: red;
				/*
				 * 块元素在文档流中默认垂直排列,所以这个三个div自上至下依次排开,
				 * 	如果希望块元素在页面中水平排列,可以使块元素脱离文档流
				 * 使用float来使元素浮动,从而脱离文档流
				 * 	可选值:
				 * 		none,默认值,元素默认在文档流中排列
				 * 		left,元素会立即脱离文档流,向页面的左侧浮动
				 * 		right,元素会立即脱离文档流,向页面的右侧浮动
				 *
				 * 当为一个元素设置浮动以后(float属性是一个非none的值),
				 * 	元素会立即脱离文档流,元素脱离文档流以后,它下边的元素会立即向上移动
				 * 	元素浮动以后,会尽量向页面的左上或这是右上漂浮,
				 * 	直到遇到父元素的边框或者其他的浮动元素
				 * 	如果浮动元素上边是一个没有浮动的块元素,则浮动元素不会超过块元素
				 * 	浮动的元素不会超过他上边的兄弟元素,最多最多一边齐
				 */
				float: left;
			}

			.box2{
				width: 600px;
				height: 200px;
				background-color: yellow;

				float: left;
			}

			.box3{
				width: 200px;
				height: 200px;
				background-color: green;

				float: right;
			}


		</style>
	</head>
	<body>

		<div class="box1"></div>
		<div class="box2"></div>
		<div class="box3"></div>

	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			*{
				margin: 0;
				padding: 0;
			}
			.box1{
				width: 100px;
				height: 100px;
				background-color: #bfa;
				/*
				 * 浮动的元素不会盖住文字,文字会自动环绕在浮动元素的周围,
				 * 	所以我们可以通过浮动来设置文字环绕图片的效果
				 */

				/*box1向左浮动*/
				float: left;

			}

			.p1{
				background-color: yellow;
			}

		</style>
	</head>
	<body>

		<div class="box1"></div>

		<p class="p1">
			在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。
这上面的夜的天空,奇怪而高,我生平没有见过这样奇怪而高的天空。他仿佛要离开人间而去,使人们仰面不再看见。然而现在却非常之蓝,闪闪地䀹着几十个星星的眼,冷眼。他的口角上现出微笑,似乎自以为大有深意,而将繁霜洒在我的园里的野花草上。
我不知道那些花草真叫什么名字,人们叫他们什么名字。我记得有一种开过极细小的粉红花,现在还开着,但是更极细小了,她在冷的夜气中,瑟缩地做梦,梦见春的到来,梦见秋的到来,梦见瘦的诗人将眼泪擦在她最末的花瓣上,告诉她秋虽然来,冬虽然来,而此后接着还是春,蝴蝶乱飞,蜜蜂都唱起春词来了。她于是一笑,虽然颜色冻得红惨惨地,仍然瑟缩着。
枣树,他们简直落尽了叶子。先前,还有一两个孩子来打他们,别人打剩的枣子,现在是一个也不剩了,连叶子也落尽了。他知道小粉红花的梦,秋后要有春;他也知道落叶的梦,春后还是秋。他简直落尽叶子,单剩干子,然而脱了当初满树是果实和叶子时候的弧形,欠伸得很舒服。但是,有几枝还低亚着,护定他从打枣的竿梢所得的皮伤,而最直最长的几枝,却已默默地铁似的直刺着奇怪而高的天空,使天空闪闪地鬼䀹眼;直刺着天空中圆满的月亮,使月亮窘得发白。
鬼䀹眼的天空越加非常之蓝,不安了,仿佛想离去人间,避开枣树,只将月亮剩下。然而月亮也暗暗地躲到东边去了。而一无所有的干子,却仍然默默地铁似的直刺着奇怪而高的天空,一意要制他的死命,不管他各式各样地䀹着许多蛊惑的眼睛。
哇的一声,夜游的恶鸟飞过了。
		</p>

	</body>
</html>

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			.box1{
				/*
				 * 在文档流中,子元素的宽度默认占父元素的全部
				 */
				background-color: #bfa;

				/*
				 * 当元素设置浮动以后,会完全脱离文档流.
				 * 	块元素脱离文档流以后,高度和宽度都被内容撑开
				 */
				/*float: left;*/
			}

			.s1{
				/*
				 * 开启span的浮动
				 * 	内联元素脱离文档流以后会变成块元素
				 */
				float: left;
				width: 100px;
				height: 100px;
				background-color: yellow;
			}

		</style>
	</head>
	<body>

		<div class="box1">a</div>

		<span class="s1">hello</span>

	</body>
</html>

 

49.简单布局

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			/*清除默认样式*/
			*{
				margin: 0;
				padding: 0;
			}

			/*设置头部div*/
			.header{
				/*设置一个宽度*/
				width: 1000px;
				/*设置一个高度*/
				height: 120px;
				/*设置一个背景颜色*/
				background-color: yellowgreen;
				/*设置居中*/
				margin: 0 auto;
			}

			/*设置一个content*/
			.content{
				/*设置一个宽度*/
				width: 1000px;
				/*设置一个高度*/
				height: 400px;
				/*设置一个背景颜色*/
				background-color: orange;
				/*居中*/
				margin: 10px auto;
			}

			/*设置content中小div的样式*/
			.left{
				width: 200px;
				height: 100%;
				background-color: skyblue;
				/*向左浮动*/
				float: left;
			}

			.center{
				width: 580px;
				height: 100%;
				background-color: yellow;
				/*向左浮动*/
				float: left;
				/*设置水平外边距*/
				margin: 0 10px;
			}

			.right{
				width: 200px;
				height: 100%;
				background-color: pink;
				/*向左浮动*/
				float: left;
			}



			/*设置一个footer*/
			.footer{
				/*设置一个宽度*/
				width: 1000px;
				/*设置一个高度*/
				height: 120px;
				/*设置一个背景颜色*/
				background-color: silver;
				/*居中*/
				margin: 0 auto;
			}

		</style>
	</head>
	<body>
		<!-- 头部div -->
		<div class="header"></div>

		<!-- 主体内容div -->
		<div class="content">

			<!-- 左侧div -->
			<div class="left"></div>
			<!-- 中间div -->
			<div class="center"></div>
			<!-- 右侧div -->
			<div class="right"></div>

		</div>

		<!-- 底部信息div -->
		<div class="footer"></div>

	</body>
</html>

50.高度塌陷问题

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">

			.box1{
				/*为box1设置一个边框*/
				border: 10px red solid;

			}

			.box2{
				width: 100px;
				height: 100px;
				background-color: blue;

				/*
				 * 在文档流中,父元素的高度默认是被子元素撑开的,
				 * 	也就是子元素多高,父元素就多高。
				 * 但是当为子元素设置浮动以后,子元素会完全脱离文档流,
				 * 	此时将会导致子元素无法撑起父元素的高度,导致父元素的高度塌陷。
				 * 	由于父元素的高度塌陷了,则父元素下的所有元素都会向上移动,这样将会导致页面布局混乱。
				 *
				 * 所以在开发中一定要避免出现高度塌陷的问题,
				 * 	我们可以将父元素的高度写死,以避免塌陷的问题出现,
				 * 	但是一旦高度写死,父元素的高度将不能自动适应子元素的高度,所以这种方案是不推荐使用的。
				 */

				/*为子元素设置向左浮动*/
				float: left;
			}

			.box3{
				 height: 100px;
				 background-color: yellow;
			}

		</style>
	</head>
	<body>

		<div class="box1">
			<div class="box2"></div>
		</div>

		<div class="box3"></div>

	</body>
</html>

51.解决高度塌陷问题

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">

			.box1{
				border: 10px red solid;
				/*
				 * 根据W3C的标准,在页面中元素都一个隐含的属性叫做Block Formatting Context
				 * 	简称BFC,该属性可以设置打开或者关闭,默认是关闭的。
				 * 当开启元素的BFC以后,元素将会具有如下的特性:
				 * 	1.父元素的垂直外边距不会和子元素重叠
				 * 	2.开启BFC的元素不会被浮动元素所覆盖
				 * 	3.开启BFC的元素可以包含浮动的子元素
				 *
				 * 如何开启元素的BFC
				 * 	1.设置元素浮动
				 * 		- 使用这种方式开启,虽然可以撑开父元素,但是会导致父元素的宽度丢失
				 * 			而且使用这种方式也会导致下边的元素上移,不能解决问题
				 * 	2.设置元素绝对定位
				 * 	3.设置元素为inline-block
				 * 		- 可以解决问题,但是会导致宽度丢失,不推荐使用这种方式
				 * 	4.将元素的overflow设置为一个非visible的值
				 *
				 * 推荐方式:将overflow设置为hidden是副作用最小的开启BFC的方式。
				 */

				/*overflow: hidden;*/

				/*
				 *但是在IE6及以下的浏览器中并不支持BFC,所以使用这种方式不能兼容IE6。
				 * 在IE6中虽然没有BFC,但是具有另一个隐含的属性叫做hasLayout,
				 * 该属性的作用和BFC类似,所在IE6浏览器可以通过开hasLayout来解决该问题
				 * 开启方式很多,我们直接使用一种副作用最小的:
				 * 	直接将元素的zoom设置为1即可
				 *
				 */

				/*
				 * zoom表示放大的意思,后边跟着一个数值,写几就将元素放大几倍
				 * zoom:1表示不放大元素,但是通过该样式可以开启hasLayout
				 * zoom这个样式,只在IE中支持,其他浏览器都不支持
				 */
				zoom:1;
				overflow: hidden;

			}

			.box2{
				width: 100px;
				height: 100px;
				background-color: blue;
				float: left;

			}

			.box3{
				 height: 100px;
				 background-color: yellow;
			}

		</style>
	</head>
	<body>

		<div class="box1">
			<div class="box2"></div>
		</div>

		<div class="box3"></div>

	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			.box1{
				border: 1px solid red;
			}

			.box2{
				width: 100px;
				height: 100px;
				background-color: blue;

				float: left;
			}

			/*
			 * 解决高度塌陷方案二:
			 * 	可以直接在高度塌陷的父元素的最后,添加一个空白的div,
			 * 	由于这个div并没有浮动,所以他是可以撑开父元素的高度的,
			 * 	然后在对其进行清除浮动,这样可以通过这个空白的div来撑开父元素的高度,
			 * 	基本没有副作用
			 *
			 * 使用这种方式虽然可以解决问题,但是会在页面中添加多余的结构。
			 */
			.clear{
				clear: both;
			}

		</style>
	</head>
	<body>
		<div class="box1">
			<div class="box2"></div>
			<div class="clear"></div>
		</div>
	</body>
</html>

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">

			.box1{
				border: 1px solid red;
			}

			.box2{
				width: 100px;
				height: 100px;
				background-color: blue;

				float: left;
			}

			/*通过after伪类,选中box1的后边*/
			/*
			 * 可以通过after伪类向元素的最后添加一个空白的块元素,然后对其清除浮动,
			 * 	这样做和添加一个div的原理一样,可以达到一个相同的效果,
			 * 	而且不会在页面中添加多余的div,这是我们最推荐使用的方式,几乎没有副作用
			 */
			.clearfix:after{
				/*添加一个内容*/
				content: "";
				/*转换为一个块元素*/
				display: block;
				/*清除两侧的浮动*/
				clear: both;
			}

			/*
			 * 在IE6中不支持after伪类,
			 * 	所以在IE6中还需要使用hasLayout来处理
			 */
			.clearfix{
				zoom:1;
			}


		</style>
	</head>
	<body>
		<div class="box1">
			<div class="box2"></div>
		</div>
	</body>
</html>

52.导航条

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>导航条</title>
		<style type="text/css">

			/*
			 * 清除默认样式
			 */
			*{
				margin:0;
				padding:0;
			}

			/*
			 * 设置ul
			 */
			.nav{
				/*去除项目符号*/
				list-style: none;
				/*为ul设置一个背景颜色*/
				background-color: #6495ED;
				/*设置一个宽度*/
				/*
				 * 在IE6中,如果为元素指定了一个宽度,则会默认开启hasLayout
				 */
				width: 1000px;
				/*设置元素居中*/
				margin: 50px auto;
				/*解决高度塌陷*/
				overflow: hidden;
			}

			/**
			 * 设置li
			 */
			.nav li{
				/*设置li向左浮动*/
				float: left;
				width: 12.5%;
			}

			.nav a{
				/*将a转换为块元素*/
				display: block;
				/*为a指定一个宽度*/
				width: 100%;
				/*设置文字居中*/
				text-align: center;
				/*设置一个上下内边距*/
				padding: 5px 0;
				/*去除下划线*/
				text-decoration: none;
				/*设置字体颜色*/
				color: white;
				/*设置加粗*/
				font-weight: bold;
			}

			/*
			 * 设置a的鼠标移入的效果
			 */
			.nav a:hover{
				background-color: #c00;
			}


		</style>
	</head>
	<body>

		<!-- 创建导航条的结构 -->
		<ul class="nav">
			<li><a href="#">首页</a></li>
			<li><a href="#">新闻</a></li>
			<li><a href="#">联系</a></li>
			<li><a href="#">关于</a></li>
			<li><a href="#">首页</a></li>
			<li><a href="#">新闻</a></li>
			<li><a href="#">联系</a></li>
			<li><a href="#">关于</a></li>
		</ul>

	</body>
</html>

53.清除浮动

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>

		<style type="text/css">

			.box1{
				width: 100px;
				height: 100px;
				background-color: yellow;
				/*
				 * 设置box1向左浮动
				 */
				float: left;
			}
			.box2{
				width: 200px;
				height: 200px;
				background-color: yellowgreen;
				/*
				 * 由于受到box1浮动的影响,box2整体向上移动了100px
				 * 我们有时希望清除掉其他元素浮动对当前元素产生的影响,这时可以使用clear来完成功能
				 * clear可以用来清除其他浮动元素对当前元素的影响
				 * 可选值:
				 * 		none,默认值,不清除浮动
				 * 		left,清除左侧浮动元素对当前元素的影响
				 * 		right,清除右侧浮动元素对当前元素的影响
				 * 		both,清除两侧浮动元素对当前元素的影响
				 * 				清除对他影响最大的那个元素的浮动
				 */

				/*
				 * 清除box1浮动对box2产生的影响
				 * 清除浮动以后,元素会回到其他元素浮动之前的位置
				 */
				/*clear: left;*/
				float: right;
			}
			.box3{
				width: 300px;
				height: 300px;
				background-color: skyblue;

				clear: both;
			}

		</style>

	</head>
	<body>

		<div class="box1"></div>

		<div class="box2"></div>

		<div class="box3"></div>

	</body>
</html>

 

54.

55.

56.

57.

58.

59.

60.

61.

62.

63.

64.

65.

66.

67.

68.

69.

70.

71.

72.

73.

74.

75.

76.

77.

78.

07-09 10:45