本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局。
一.元素可见性
使用 visibility 属性可以实现元素的可见性,这种样式一般可以配合 JavaScript来实现效果。样式表如下:
属性 | 值 | 说明 | 版本 |
visibility | visible | 默认值,元素在页面上可见。 | 1 |
hidden | 元素不可见,但会占据空间。 | 1 | |
collapse | 元素不可见,隐藏表格的行与列,如果不是表格,则和 hidden 一样。 | 2 |
设置元素隐藏,但占位
div {visibility: hidden;}
隐藏表格的行或列,但不占位低版本浏览器 不支持
table tr:first-child {
visibility: collapse;
};
二.元素盒类型
CSS 盒模型中的 display 属性,可以更改元素本身盒类型。那么元素有哪些盒类型呢?主要有:1.块级元素(区块);2 行内元素(内联);3 行内-块级元素(内联块);4.隐藏元素。
1.块级元素
所谓块级元素,就是能够设置元素尺寸、隔离其他元素功能的元素。比如:<div>、<p>等文档元素。
2.行内元素
所谓行内元素,不能够设置元素尺寸,它只能自适应内容、无法隔离其他元素,其它元素会紧跟其后。比如:<span>、<b>等文本元素。
3.行内-块元素
所谓行内-块元素,可以设置元素尺寸,但无法隔离其他元素的元素。比如<img>。
属性 | 值 | 说明 | 版本 |
display | block | 盒子为块级元素 | 1 |
inline | 盒子为行内元素 | 1 | |
inlinee-block | 盒子为行内-块元素 | 2 | |
none | 盒子不可见,不占位 | 1 |
将行内元素转成块级元素
span {
background: silver;
width: 200px;
height: 200px;
display: block;
}
将块级元素转换成行内元素
div {
background: silver;
width: 200px;
height: 200px;
display: inline;
}
将块级元素转化成行内-块元素
div {
background: silver;
width: 200px;
height: 200px;
display: inline-block;
}
将元素隐藏且不占位
div {
display: none;
}
display 属性还有非常多的值,有些后面部分讲解,而有些支持度不好或者尚不支持,从而省略。有兴趣的,可以参考 CSS3 手册
三.元素的浮动
CSS 盒模型有一种叫浮动盒,就是通过 float 属性建立盒子的浮动方向,样式表如下:
属性 | 值 | 说明 | 版本 |
float | left | 浮动元素靠左 | 1 |
right | 浮动元素靠右 | 1 | |
none | 禁用浮动 | 1 |
实现联排效果
#a {
background: gray;
float: left;
}
#b {
background: maroon;
float: left;
}
#c {
background: navy;
float: left;
}
实现元素右浮动
#c {
background: navy;
float: right;
}
取消元素的浮动
#c {
background: navy;
float: none;
}
刚才的浮动有一个问题:当一个元素盒子被浮动后,下面的元素会自动堆叠处理,导致元素不可见或部分不可见。我们可以使用 clear 属性来处理。
属性 | 值 | 说明 | 版本 |
clear | none | 允许两边均可浮动 | 1 |
left | 左边界不得浮动 | 1 | |
right | 右边界不得浮动 | 1 | |
both | 两边都不得浮动 | 1 |
两边均不可浮动
#c {background: navy; clear: both;}
源码实例
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CSS 盒模型[下]</title> <meta name="author" content="学生网页作业"> <link rel="stylesheet" href="css/base.css"> </head> <body> <!-- 元素可见性 --> <dl> <dt>元素可见性</dt> <style> .dd_01 .p1{ visibility: hidden; } .dd_01 table tr:first-child{visibility: collapse;} </style> <dd> <p>设置元素隐藏,但占位</p> <p>隐藏表格的行或列,但不占位</p> <table> <tr><td>HTML</td><td>1</td></tr> <tr><td>CSS</td><td>2</td></tr> <tr><td>javaScript</td><td>3</td></tr> <tr><td>jQuery</td><td>4</td></tr> </table> </dd> </dl> <!-- 元素区块 --> <dl> <dt>display元素</dt> <style> .dd_02{ color: #fff; } .dd_02 span{display: block; width: 100px; height: 100px; background: green;} .dd_02 p{ display: inline; width: 100px; height: 100px; background: green; } .dd_02 div{ display: inline-block; width: 100px; height: 100px; background: green; } .dd_02 h6{ display: none; } </style> <dd> <span>将行内元素转成块级元素</span> <p>将块级元素转换成行内元素(宽高失效)</p> <div>将块级元素转化成行内-块元素</div> <h6>将元素隐藏且不占位</h6> </dd> </dl> <!-- 元素浮动 --> <dl> <dt>float</dt> <style> .dd_03{ overflow: hidden; } .dd_03 a{ width:100px; height: 100px; line-height: 100px; color: #fff; display: block; background: green; text-align: center } .dd_03 a:nth-child(1){ float: left;} .dd_03 a:nth-child(2){ float: right; } .dd_03 a:nth-child(3){ clear: both; } </style> <dd> <a href="###">left</a> <a href="###">right</a> <a href="###">clear</a> </dd> </dl> </body> </html>