💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 第 16 章 CSS 盒模型[下] 学习要点: 1.元素可见性 2.元素盒类型 3.元素的浮动 **主讲教师:李炎恢** 本章主要探讨 HTML5 中 CSS 盒模型,学习怎样了解元素的外观配置以及文档的整体布局。 **一.元素可见性** 使用 visibility 属性可以实现元素的可见性,这种样式一般可以配合 JavaScript 来实现效果。样式表如下: | **属性** | **值** | **说明** | **CSS 版本** | | --- | --- | | visible | 默认值,元素在页面上可见。 | 2 | | visibility | hidden | 元素不可见,但会占据空间。 | 2 | | collapse | 元素不可见,隐藏表格的行与列,如果不是表格,则和 hidden 一样。 | 2 | //设置元素隐藏,但占位  ``` div { visibility: hidden; } ``` //隐藏表格的行或列,但不占位,Chrome 和 Opera 不支持  ``` table tr:first-child { visibility: collapse; } ``` **二.元素盒类型** CSS 盒模型中的 display 属性,可以更改元素本身盒类型。那么元素有哪些盒类型呢?主要有:1.块级元素(区块);2 行内元素(内联);3 行内-块级元素(内联块);4.隐藏元素。 **1.****块级元素** 所谓块级元素,就是能够设置元素尺寸、隔离其他元素功能的元素。比如:<div>、<p>等文档元素。 **2.****行内元素** 所谓行内元素,不能够设置元素尺寸,它只能自适应内容、无法隔离其他元素,其它元素会紧跟其后。比如:<span>、<b>等文本元素。 **3.****行内****-****块元素** 所谓行内-块元素,可以设置元素尺寸,但无法隔离其他元素的元素。比如<img>。 | **属性** | **值** | **说明** | **CSS 版本** | | --- | --- | | block | 盒子为块级元素 | 1 | | display | inline | 盒子为行内元素 | 1 | | inline-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 属性建立盒子的浮动方向,样式表如下: | **属性** | **值** | **说明** | **CSS 版本** | | --- | --- | | | left | 浮动元素靠左 | 1 | | float | 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 属性来处理。 | **属性** | **值** | **说明** | **CSS 版本** | | --- | --- | | clear | none | 允许两边均可浮动 | 1 | | left | 左边界不得浮动 | 1 | | right | 右边界不得浮动 | 1 | | both | 两边都不得浮动 | 1 | //两边均不可浮动 ``` #c { background: navy; clear: both; } ```