HTML组件中呈现一片空白区域的组件都可当成盒模型(box model),比如<div.../>
元素、<span.../>
、<section.../>
等元素。而CSS则提供了display属性来控制盒模型的外观。
两种最基本的盒模型
就最基本的盒模型组件来说,HTML组件的盒模型可分为两种。
➢ block类型:这种盒模型的组件默认占据一行,允许通过CSS设置宽度、高度。例如<div.../>
、<p.../>
元素。
➢ inline类型:这种盒模型的组件不会占据一行(默认允许在一行放置多个组件),即使通过CSS设置宽度、高度也不会起作用。例如<span.../>
、<a.../>
元素。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 基础盒模型 </title>
<style type="text/css">
div,span{
width: 300px;
height: 40px;
border: 1px solid black;
}
</style>
</head>
<body>
<div>div元素一</div>
<div>div元素二</div>
<span>span元素一</span>
<span>span元素二</span>
</body>
</html>
结果
上面页面中定义了两个<div.../>
元素和两个<span.../>
元素,页面的CSS代码设置了<div....>
、<span.../>
元素的高度为40px,宽度为300px。但由于<span.../>
元素默认是inline盒模型,因此设置的高度、宽度对它不起作用。
改变默认的盒模型
CSS为display属性提供了block、inline两个属性值,用于改变HTML组件默认的盒模型。例如,将上面页面的CSS样式部分改为如下形式。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 基础盒模型 </title>
<style type="text/css">
div,span{
width: 300px;
height: 40px;
border: 1px solid black;
}
/* 将div元素改为inline盒模型 */
body>div{
display:inline;
}
/* 将span元素改为block盒模型 */
body>span{
display:block;
}
</style>
</head>
<body>
<div>div元素一</div>
<div>div元素二</div>
<span>span元素一</span>
<span>span元素二</span>
</body>
</html>
none值
display属性可指定为none值,用于设置目标对象隐藏,一旦该对象隐藏,其占用的页面空间也会释放。与此类似的还有visibility属性,该属性也可用于设置目标对象是否显示。与display属性不同,当通过visibility隐藏某个HTML元素后,该元素占用的页面空间依然会被保留。visibility属性的两个常用值为visible和hidden,分别用于控制目标对象的显示和隐藏。
例子
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title> 隐藏元素 </title>
<style type="text/css">
/* 设置div元素的宽度、高度、背景色和边框 */
div{
width:300px;
height:40px;
background-color:#ddd;
border:2px solid black;
}
</style>
</head>
<body>
<input type="button" value="隐藏"
onclick="document.getElementById('test1').style.display='none';"/>
<input type="button" value="显示"
onclick="document.getElementById('test1').style.display='';"/>
<div id = "test1">
使用display控制对象的显示和隐藏
</div>
<input type="button" value="隐藏"
onclick="document.getElementById('test2').style.visibility ='hidden'"/>
<input type="button" value="显示"
onclick="document.getElementById('test2').style.visibility ='visible'"/>
<div id = "test2">
使用visibility控制对象的显示和隐藏
</div>
<hr/>
</body>
</html>
注:本博客内容节选自李刚编著的疯狂HTML 5/CSS 3/JavaScript讲义 ,详细内容请参阅书籍。