什么是布局: 浏览器以正确的大小将元素摆放在正确的位置上。
布局:元素摆放的模式。
影响元素大小和位置的css属性: display position float flex
display
设置元素的显示方式 ,包括 大小和位置 , display的取值有:
block
inline
inline-block
none
display : block
block元素又称为『块级元素』
特性:
1 .默认宽度为父元素宽度
2. 可以设置宽高
3. 换行显示( 前序元素 相对于 display : block 是换行显示的, 后续元素相对于 display : block 也是换行显示的。)
默认的html 元素中, div, p , h1-h6, ul, form, … 默认的display 是 block
display : inline
红色边框为父级元素
display: line的特性:
1.默认宽度为内容宽度
2.不可设置宽高 ,因为行级元素是不可设置宽高的
3.同行显示。 如果 前序元素和后续元素都是 display:inline (行级元素) ,那么他们是同行显示的。可以在元素内部换行。
默认display: inline 元素 span , a , label, cite , em, …
举个栗子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>display_inline</title>
<style type="text/css">
.sample{
background-color: pink;
} /* 行级元素设置宽高无效 */
.sample{
width: 200px;
height: 200px;
} /* 指定em为块级元素 ,块级元素换行显示(自身相对前序元素是换行的)*/
em{
display: block;
} </style>
</head>
<body> <span>before inline</span>
<span class="sample">display : inline;</span>
<em>after inline</em>
</body>
</html>
block vs inline 对比
display | 默认宽度 | 可设置高度 | 起始位置 |
block |
父元素宽度 |
是 |
换行 |
inline |
内容宽度 |
否 |
同行 |
display : inline-block
图1
图二
图三
display: inline-block 特性
1.默认宽度为内容宽度 (图一所示)
2.可设置宽高
3.同行显示 (图三所示)
4.整块换行 如果超过了 inline-block的宽度,会『整行换行』。而『inline』是可以在『元素内』换行的。
默认 display: inline-block 元素 input , textarea , select , button …
举一个栗子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>display_inline-block</title>
<style type="text/css">
.sample{
background-color: pink;
}
.sample{
display: inline-block;
}
.sample{
width: 200px;
height: 200px;
}
/* inline-block元素还具有其他inline元素的特征 , 比如设置垂直居中(由于sample比较高,所以sample的前序和后序两个元素在『一行』垂直居中)*/
.sample{
vertical-align: middle;
}
</style>
</head>
<body>
<span>before inline-block</span>
<span class="sample">display : inline-block;</span>
<em>after inline-block</em>
</body>
</html>
display : none
设置元素不显示
dislplay: none vs visibility:hidden
visibility:hidden会继续占据位置。
举个栗子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>display_none vs visibility_hidden</title>
<style type="text/css">
.parent{
margin: 30px;
border: 1px solid pink;
}
.dn{
/*display: none;*/
} .vh{
/*visibility: hidden;*/
} </style>
</head>
<body>
<div class="parent">
<div class="dn">display : none;</div>
</div>
<div class="parent">
<div class="vh">visibility : hidden;</div>
</div> </body>
</html>
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓