ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 17.1.1.盒子的显示效果属性display 含义: 指设置一个盒子(元素,标签)在网页中的基本显示特性,最常见的就是显示为块元素特性还是行内元素特性。 tip:通过这个属性,则所有表现型元素,都可以任意将其作为块元素或者行内元素来使用! 常用的属性值有: block: 显示为块状元素 inline: 显示为行内元素 block-inline:显示为行内块元素 含义:整体表现为块元素(不会自动折行),但可以跟其他行内元素并行在一行(表现为行内元素)。 说明:一个img就是典型的行内块元素(它本身不会折行,但一行可以放置多个)。 none: 不显示(隐藏元素) 关于元素按显示特性分类: 块状元素: 元素独占“一行”。 典型标签:div, p, h1~h6, pre, hr, ul, ol, li, dl, dt, dd, table。 行内元素: 元素在一行内从左到右“流式显示”,直到碰到行尾,再自动换行下一行显示。 典型元素:span, a, b, strong, i, font, em, 行内块元素: 元素本身不换行(不折断),但只要能显示得下,则一行可以显示多个(跟行内元素一样)。 典型元素:img, input, select, textarea, button, video, audio 特别注意: 1,行内元素不能设置宽高值。行内元素的宽高值由其中的内容多少、文字大小和行高决定。 2,行内元素不能设置上下外边距和上下内边距(实际可以设置,但无效,不占空间)。 3,行内元素可以设置边框,但上下边框不占空间(左右边框会占空间)。 4,行内块和块元素都具有盒子的所有属性,唯一区别是行内块可以多个出现在一行中。 ## 17.1.2.浮动属性float ### 17.1.2.1.浮动的含义与作用: 浮动就是让一个元素往左或右边“尽量挤靠”,以使其周边文字(行内元素)可以围绕该浮动元素显示。 其典型的表现就是一张图片向左对齐(align=”left”)的时候,图片标签前后的文字都能够绕着图片展示。 这是“浮动”的原本含义和作用,如下图所示: ![](https://img.kancloud.cn/fe/20/fe2030252efb2869af79dd41582eb7d6_515x110.png) 实际其代码是这样的: ![](https://img.kancloud.cn/29/e5/29e5d39e8552a0e2b51f759ce089a0be_759x139.png) 即虽然文字看起来在图片的左边(前面),但因为图片向左“浮动”了,则其会先占据左边的区域空间,而文字(或其他行内元素)就只能顺在它的右边(后面)了。 而如果没有浮动(“align”不是left或right),则效果就完全不一样,如下所示: 代码: ![](https://img.kancloud.cn/3e/46/3e46efe77f2489198ca1d708e046f12a_752x143.png) 效果: ![](https://img.kancloud.cn/6a/56/6a5645b3b4fec1d7eefb1d7754af345a_734x167.png) 可以看到,此时文字和图片是在一行上的,因为他们是行内或行内块元素。 可见,让图片浮动,就能够使其本身优先靠在一边(左边或右边),而使“其他行内元素”围绕其展示。 上面是图片(img标签)使用align属性来达到该效果的,而使用css的浮动属性float,却可以使几乎所有盒子元素都能够实现这个效果(如果没有css,在html语法中则只有img标签可以做到这一点)。 浮动属性float的值包括: left(向左浮动), right(向右浮动), none(不浮动)。 语法: float:left; 或 float:right; 课堂练习:将一个span, div,一个img放在一行上,都设定边框,并且都一样宽高: 做法1:使用float:left; ![](https://img.kancloud.cn/dc/62/dc62badb26005508bada9e6b25378fd6_602x76.png) ![](https://img.kancloud.cn/79/d2/79d2b82ea4827ae289f2c7af50dd20e9_557x189.png) 结果为: ![](https://img.kancloud.cn/f6/77/f6772f4d156742e1936737b7ce0b8254_321x61.png) 做法2:使用display:inline-block; ![](https://img.kancloud.cn/71/4e/714e07ad7e1683f13cf65615383d93c3_631x117.png) ![](https://img.kancloud.cn/17/45/174520058f8e09b82b2a9fbc7bd0b363_418x276.png) 结果如下: ![](https://img.kancloud.cn/3c/6f/3c6fd48b3eb2984afa0bcd05fb8c76d4_363x82.png) 附有关字体的几根线: ![](https://img.kancloud.cn/0b/23/0b23b36566c1086ba4418b5e3e06128a_994x284.png) ### 17.1.2.2.浮动的特性: 1,对行内元素来说:浮动元素会先于同一行中的行内元素而占据其所设定方向的水平空间; 2,对块状元素来说:浮动元素相当于“浮起来了”,块状元素会被浮动元素“遮挡”; 3,多个浮动元素会依次往设定的方向“挤靠”,直到放不下,再往“下一行”,继续“挤靠”; 4,浮动元素往下一行挤靠时,如碰到“突出物”,则会被“卡住”,但仍然按挤靠规则进行显示; 5,浮动盒子失去“垂直支撑力”,表现为不占它外层盒子高度,但仍然有宽度; 表现盒子的浮动特性案例: 案例1: 对行内元素来说:浮动元素会先于同一行中的行内元素而占据其所设定方向的水平空间: ![](https://img.kancloud.cn/14/d6/14d6b803bbd7de44cd885fa30541cea8_424x624.png) 结果: ![](https://img.kancloud.cn/bf/ab/bfab267ef42282021b3a8aacf0860603_616x376.png) 案例2: 对块状元素来说:浮动元素相当于“浮起来了”,块状元素会被浮动元素“遮挡”: ![](https://img.kancloud.cn/6a/e3/6ae399e8b11891541de06732ca96968a_479x128.png) 代码如下: ![](https://img.kancloud.cn/27/26/272628e438d6a363ff01a2c7d043361a_516x552.png) 案例3: 多个浮动元素会依次往设定的方向“挤靠”,直到放不下,再往“下一行”,继续“挤靠”: ![](https://img.kancloud.cn/d5/02/d5021817334cf2a87ebb4d28b4220c94_456x127.png) 代码: ![](https://img.kancloud.cn/d9/89/d98911c0d1af0af56fb8204834079a80_412x393.png) 案例4: 浮动元素往下一行挤靠时,如碰到“突出物”,则会被“卡住”,但仍然按挤靠规则进行显示,类似如下效果:: ![](https://img.kancloud.cn/db/c1/dbc154041704247fb5a89b12bc0aac6a_458x122.png) 演示代码: ![](https://img.kancloud.cn/f8/80/f88069dfd3ee337a3e7bca37aac58cc3_354x220.png) ![](https://img.kancloud.cn/cb/dc/cbdc28225ff998d9a7330f27332bbef0_409x466.png) 结果如下: ![](https://img.kancloud.cn/9a/19/9a19dc359d9b60585e2aada9ecd616ea_538x262.png) 案例5: 浮动盒子失去“垂直支撑力”,表现为不占它外层盒子高度,但仍然有宽度: ![](https://img.kancloud.cn/3b/57/3b5742da0fcc1febfd0118fd0fbbd5ab_465x111.png) 代码演示: ![](https://img.kancloud.cn/6c/19/6c193b316c000d2552de29fe5d8a8513_399x512.png) 结果如下: ![](https://img.kancloud.cn/45/cb/45cb8e6184a7583ec040411baf395b2a_757x94.png) 有关案例5的特别提示: 内层浮动盒子在版面(视觉上)超出了它的的父盒子。 在绝大多数实际应用中,这不能忍!我们要清除浮动! ### 17.1.2.3.浮动的清除: 当一个盒子内部出现浮动元素,则该盒子不会被该浮动元素“撑高”,也就是说,父盒子失去了理应包住子盒子的高度。 (当然,如果父盒子中有其他非浮动元素撑着,也就具有该其他非浮动元素所应该撑出的高度) 这通常都不符合正常的文档布局的需要——正常的需要就是外层盒子需要包住内层盒子。 怎么办? ——清除浮动。 使用属性clear,有常见的3个值: clear: left:表示该元素左边不要出现浮动元素; clear: right:表示该元素右边不要出现浮动元素; clear:both:表示该元素两边都不要出现浮动元素;——这是最常见的需求(场景)。 所谓清除浮动,其实就是让父盒子中的浮动特性“终止”(结束)。这样父盒子就具有了正常的高度,可以正常包住其内部的浮动盒子。 做法1: 设置父盒子的overflow属性为hidden; ![](https://img.kancloud.cn/d9/f8/d9f8b6fec6c10f1a8e031caf15b65158_521x575.png) 做法2: 在父盒子内部的末尾添加一个“清除浮动”的空盒子。 ![](https://img.kancloud.cn/8f/61/8f6145ffc472ac260843dd5c374b3b67_568x618.png) 做法3: 给父盒子的末尾添加一个“清除浮动”的伪元素(::after)。 ——推荐做法! ![](https://img.kancloud.cn/5a/b3/5ab3f6b6c130ee4249f155703432c1b2_505x629.png) 案例:实现如下经典两栏布局效果: 总宽度为960px。黄色盒子左侧空隙5px,其右侧空隙10px。 整体版面窗口居中! ![](https://img.kancloud.cn/ca/a6/caa693d9301fc753cc3bb156c1ff4487_939x315.png) 代码如下: ![](https://img.kancloud.cn/5a/56/5a56d9d196be82f3ade21ab0f77e2121_625x90.png) ![](https://img.kancloud.cn/2e/39/2e39a78a053a5fc30337100cc40c06b8_634x597.png) ## 17.1.3.溢出属性overflow 当一个盒子里面有浮动元素,则: 1,如果该盒子不设置高度,就应该清除浮动。 2,如果该盒子设置了高度,此时就应该考虑溢出时的处理效果! 3,如果该盒子设置了高度,则里面盒子的浮动,清不清除都无关紧要。 含义: 就是设置一个盒子内部的内容,超出了该盒子的设定大小的时候,怎么显示该内容的问题。 overflow常用值有: auto: 自动,按浏览器的默认设置自动处理,可能各浏览器会有所不同。 scroll: 滚动,就是超出范围的时候,盒子出现滚动条(像浏览器的滚动条那样)。 hidden: 隐藏,就是将超出部分隐藏起来(视觉上不可见)。 visible: 显示,就是虽然,超出去了,但仍然显示出来,这是这个属性的默认值,无需设置。 此时,虽然可能超出外层盒子,但不会影响外层盒子后续的位置(布局)。 ![](https://img.kancloud.cn/21/00/210092cb5a4dc96d6dfd1f882f3d0966_645x556.png) ## 17.1.4.可见性属性visibility 含义: 设置元素的可见性。主要有两个值: visible: 可见; hidden: 隐藏。 特别注意: 设置visibility为hidden,虽然元素不可见了,但元素原本所占的空间仍然存在(效果是一片空白) 对比:设置display为none,也是隐藏,但此时该元素不但不可见,而且不占版面空间。 ![](https://img.kancloud.cn/4f/3b/4f3b7889ddd3d48865ffdee05160f11e_515x406.png)