盒布局
各种盒模型
盒的基本类型
在CSS3中使用display属性来定义盒的类型,总体来说盒分为block类型和inline类型。
例如:
div元素和p元素属于block类型;span和a属于inline类型。
-
1 inline-block类型
inline-block类型是CSS2.1中追加的一个盒类型。
inline-block类型盒属于block盒的一种,但是在显示时具有inline类型盒的特点。示例:
在div元素中分别将display设置为inline-block和inline后它们的效果一样。代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>盒的基本类型</title>
<style>
/*div{background: green}*/
/*span{background: red}*/
div{background: green;width: 50px;height: 50px}
.div1{display: inline-block}
.div2{display: inline}
</style>
</head>
<body>
<h1>盒的基本类型</h1>
<div class="div1">在css3中使用display属性来定义盒的类型,总体来说盒分为block类型和inline类型。</div>
<div class="div2">在css3中使用display属性来定义盒的类型,总体来说盒分为block类型和inline类型。</div>
<!--<span>在css3中使用display属性来定义盒的类型,总体来说盒分为block类型和inline类型。</span>-->
</body>
</html>
-
2 使用inline-block类型来执行分列显示
在CSS2.1之前,如果需要在一行中并列显示多个block类型的元素,需要用float属性或者position属性,但是会造成样式变复杂。
CSS2.1中追加的inline-block类型使得并列显示多个block类型的元素变得简单。示例:
block类型
首先新建三个div元素,给前两个div使用float让其并列显示,第三个div就会显示在前两个div元素的下面,用clear属性清除因前两个高度不一造成的浮动。代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>使用inline-block类型来执行分列显示</title>
<style>
div.div{
width:400px
}
div.div1{
width: 200px;
background-color: green;
float: left;
}
div.div2{
width: 200px;
background-color: #ff6600;
float: left;
}
div.div3{
clear: both;
background-color: #d829ff;
}
</style>
</head>
<body>
<h1>使用inline-block类型来执行分列显示</h1>
<div class="div">
<div class="div1">
inline-block类型是css2.1中追加的一个盒类型。
inline-block类型盒属于block盒的一种,但是在显示时具有inline类型盒的特点。
在DIV元素中分别将display设置为inline-block和inline后他们的效果一样。
</div>
<div class="div2">
在css2.1之前,如果需要在一行中并列显示多个block类型的元素,需要用float属性或者position属性,但是这样会让我们的样式变的复杂,
</div>
<div class="div3">
css2.1之前,如果需要在一行中并列显示多个block类型的元素,需要用float属性或者position属性,但是这样会让我们的样式变的复杂,所以在CSS2.1中就追加了inline-block类型,使得并列显示多个block类型的元素操作变的很简单。
首先新建三个div元素,给前两个DIV使用float让前两个div元素并列显示,第三个div的话就会显示在前两个div元素的下部,但是因为前两个的高度不一样所以我们要使用clear属性清除浮动。
</div>
</div>
</body>
</html>
inline-block类型
使用inline-block类型可以直接将两个div元素进行并列显示,不需要使用float属性,也不需要使用clear属性。
代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>使用inline-block类型来执行分列显示</title>
<style>
div.div1{
width: 200px;
background-color: green;
display: inline-block;
}
div.div2{
vertical-align: top;
width: 200px;
background-color: #ff6600;
display: inline-block;
}
div.div3{
width: 400px;
background-color: #d829ff;
}
</style>
</head>
<body>
<h1>使用inline-block类型来执行分列显示</h1>
<div class="div">
<div class="div1">
2、inline-block类型
inline-block类型是css2.1中追加的一个盒类型。
inline-block类型盒属于block盒的一种,但是在显示时具有inline类型盒的特点。
例如:
在DIV元素中分别将display设置为inline-block和inline后他们的效果一样。
如果我们给他们都指定宽度和高度结果会是怎样?
</div><div class="div2">
2.2使用inline-block类型来执行分列显示
在css2.1之前,如果需要在一行中并列显示多个block类型的元素,需要用float属性或者position属性,但是这样会让我们的样式变的复杂,
</div>
<div class="div3">
css2.1之前,如果需要在一行中并列显示多个block类型的元素,需要用float属性或者position属性,但是这样会让我们的样式变的复杂,所以在CSS2.1中就追加了inline-block类型,使得并列显示多个block类型的元素操作变的很简单。
示例对比:
block类型
首先新建三个div元素,给前两个DIV使用float让前两个div元素并列显示,第三个div的话就会显示在前两个div元素的下部,但是因为前两个的高度不一样所以我们要使用clear属性清除浮动。
</div>
</div>
</body>
</html>
- 3 使用inline-block类型来显示水平菜单
在CSS2.1之前,如果要实现水平菜单,那么我们需要使用float属性,大多数菜单是利用ul列表盒li列表项目来显示的。li元素隶属于block类型下的list-item类型,所以要并列显示的话就要使用float属性。
使用float属性的代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>使用inline-block类型来显示水平菜单</title>
<style>
ul{
margin:0;
padding: 0;
}
li{
padding: 10px 20px;
background-color: #2292ff;
border-right: solid 1px #2066c7;
width: 100px;
text-align: center;
list-style: none;
float: left;
}
a{
color: #fff;
text-decoration: none;
}
</style>
</head>
<body>
<h1>使用inline-block类型来显示水平菜单</h1>
<ul>
<li><a href="index1.html">首页</a> </li>
<li><a href="index1.html">首页</a> </li>
<li><a href="index1.html">首页</a> </li>
<li><a href="index1.html">首页</a> </li>
<li><a href="index1.html">首页</a> </li>
</ul>
</body>
</html>
使用inline-block类型的代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>使用inline-block类型来显示水平菜单</title>
<style>
ul{
margin:0;
padding: 0;
}
li{
display: inline-block;
padding: 10px 20px;
background-color: #2292ff;
border-right: solid 1px #2066c7;
width: 100px;
text-align: center;
}
a{
color: #fff;
text-decoration: none;
}
</style>
</head>
<body>
<h1>使用inline-block类型来显示水平菜单</h1>
<ul>
<li><a href="index1.html">首页</a></li><li><a href="index1.html">首页</a></li><li><a href="index1.html">首页</a></li><li><a href="index1.html">首页</a></li><li><a href="index1.html">首页</a></li>
</ul>
</body>
</html>
-
inline-table类型
inline-table类型是CSS2中新增的盒模型。示例:
在CSS中使用table,做一个表格,前后都有文字将其环绕。
代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>inline-table类型</title>
<style>
table{
display: inline-table;
vertical-align: bottom;
border: solid 3px #ccc;
}
td{
border: solid 3px #898989;
}
</style>
</head>
<body>
<h1>inline-table类型</h1>
这里是文字内容
<table>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
</tr>
</table>
这里是文字内容
</body>
</html>
- list-item类型
list-item类型,可以将多个元素作为列表来显示,同时在元素的开头加上列表的标记。
代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>list-item类型</title>
<style>
div{
display: list-item;
list-style-type: circle;
margin-left: 30px;
}
</style>
</head>
<body>
<h1>list-item类型</h1>
<div>list-item类型</div>
<div>list-item类型</div>
<div>list-item类型</div>
<div>list-item类型</div>
<div>list-item类型</div>
<div>list-item类型</div>
<div>list-item类型</div>
</body>
</html>
- run-in类型与compact类型
将元素指定为run-in类型或compact类型时,如果元素后面还有block类型的元素,run-in类型的元素将被包括在后面的block类型的元素的内部,而compact类型的元素将被放置在block类型的元素的左边。
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>run-in类型或compact类型</title>
<style>
dl.run-in dt{
display: run-in;
border: solid 2px #d829ff;
background-color: #cccccc;
}
dl.compact dt {
display: compact;
border: solid 2px #d829ff;
background-color: #cccccc;
}
</style>
</head>
<body>
<h1>run-in类型或compact类型</h1>
<dl class="run-in">
<dt>run-in类型</dt>
<dd>run-in类型的元素将被包括在后面的block类型的元素的内部</dd>
</dl>
<dl class="compact">
<dt>compact类型</dt>
<dd>ompact类型的元素将被放置在block类型的元素左边</dd>
</dl>
</body>
</html>
效果图:
- 表格相关类型
在CSS3中所有与表格相关的元素及其所属类型表:
元素 | 所属类型 | 说明 |
---|---|---|
table | table | 代表整个表格 |
table | inline-table | 代表整个表格可以被指定为table类型也可以是inline-table类型 |
tr | table-row | 代表表格中的一行 |
td | table-cell | 代表表格中的单元格 |
th | table-cell | 代表单元格中的列标题 |
tbody | table-row-group | 代表表格中行中的所有行 |
thead | table-header-group | 代表表格中的表头部分 |
tfoot | table-footer-group | 代表表格中的脚注部分 |
col | table-column | 代表表格中的一列 |
colgroup | table-column-group | 代表表格中的所有列 |
caption | table-caption | 代表整个表格的标题 |
代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>CSS3中所有与表格相关的元素</title>
<style>
div.table{
display: table;
border: solid 3px #ccc;
}
div.table-caption{
display: table-caption;
}
div.thead{
display: table-header-group;
}
div.tr{
display: table-row;
}
div.td{
display: table-cell;
border: solid 3px #898989;
padding: 5px;
}
</style>
</head>
<body>
<h1>CSS3中所有与表格相关的元素</h1>
<div class="table">
<div class="table-caption">表格标题</div>
<div class="thead">
<div class="tr">
<div class="td">1</div>
<div class="td">2</div>
<div class="td">3</div>
</div>
<div class="tr">
<div class="td">1</div>
<div class="td">2</div>
<div class="td">3</div>
</div>
<div class="tr">
<div class="td">1</div>
<div class="td">2</div>
<div class="td">3</div>
</div>
</div>
</div>
</body>
</html>
效果:
- none类型
当元素被指定了none类型后,这个元素将不会被显示。
利用伪类选择器实现鼠标移动上去隐藏,移开显示的效果:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>none类型</title>
<style>
div#a{
width: 500px;
height: 500px;
background-color: #cccccc;
}
div#b{
display: block;
width: 200px;
height: 200px;
background-color: green;
}
div#a:hover div#b{
display: none;
}
</style>
</head>
<body>
<h1>none类型</h1>
<div id="a">
<div id="b"></div>
</div>
</body>
</html>
- 各种浏览器对各种盒模型的支持情况