目录
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>