css中的流,元素,基本尺寸

元素 基本尺寸

流之所以影响整个css世界,是因为它影响了css世界的基石 --HTML

HTML 常见的标签有虽然标签种类繁多,但通常我们就把它们分为两类: 块级元素(block-level element)和内联元素(inline element)。

1.块级元素 1.1 概念相关

“块级元素”对应的英文是 block-level element,常见的块级元素有 div,li,table等。

块级元素和 display:block 不是一个概念

例如块级元素 li 和 table ,他们的 display 的值分别为 list-item 和 table

块级元素具有换行性质,也就是一个水平流上只能单独显示一个元素,多个块级元素则换行显示;

由于这种 换行性质,理论上块级元素都可以配合 clear 属性来清除浮动带来的影响

.clear:after { content: ''; display: table; // 也可以是 block,或者是 list-item clear: both; }

实际开发中,display的值要么是block,要么是table,并不会使用list-item

1.2 为什么 list-item会出现项目符号

所有的块级元素都有一个主盒子,而list-item除了主盒子,还有一个附加盒子

list-item 之所以会出现项目符号(小黑点),是因为生成了一个附加盒子,学名为 “标记盒子”,专门来存放圆点,数字这些项目符号

IE不支持display:list-item 的原因可能就是因为IE无法创建 这个标记盒子的原因。

1.3 display:inline-block

display:inline-block 我们可以把一个这样的元素分为两个部分组成,外在的inline内联盒子,里面的block块级盒子组成。这样,由于外在的外联盒子,它的呈现方式既可以和文字等元素同为一行,又因为内在的块级盒子,它可以设置元素的宽高。

于是,按照display的属性值不同

display 外盒子 内盒子
block   block   block  
inline   inline   inline  
inline-block   inline   block  
table   block   table  
inline-table   inline   table  

外盒子影响着流的走向,内盒子控制元素的基本属性

2. width/height 作用的具体细节

我们在上面已经说过, width/height等属性作用在内盒子中,也就是容器盒子中。接下来我们说一下具体的作用细节。

流特性体现在水平方向上,我们来讨论width

2.1 width:auto

width的默认值就是auto

充分利用空间 -- div的默认宽度一般都是100%

收缩和包裹

收缩到最小 -- min-content

当每一列空间都不够的时候,文字能断就断,但中文是随便断的,英文单词不能断。

超出容器限制

没有相关设置的情况下,一般元素不会主动超过父级宽度容器,除非一些特殊情况

例如:内容而很长的连续英文和数字

​ 或者内联元素被设置了 white-space:nowrap 属性

在 CSS 世界中,盒子分“内在盒子”和“外在盒子”,显示也分“内部显示”和“外部显示”,同样地,尺寸也分“内部尺寸”和“外部尺寸”。

上述的width:auto 的四条特性里面,是默认宽度 100%显示,是“外部尺寸”,其余全部是“内部尺寸”。而这唯一的“外部尺寸”,是“流”的精髓所在。

2.2 外部尺寸与流体特性

正常流宽度。

当我们在一个容器里倒入足量的水时,水一定会均匀铺满整个容器。

a { display: block; width: 100%; }

默认为inline的a元素display设置为block,本身就是表示宽度铺满整个父级,后面的100%宽度就不用再加了。

作者总结过一套三无准则: 无宽度,无图片,无浮动。

其中无宽度的原因就是因为一旦外部尺寸的块级元素设置了宽度,其流动性就丢失了。

格式化宽度

格式化宽度仅出现在“绝对定位模型”中,也就是出现在 position属性值为 absolute 或 fixed 的元素中。在默认情况下,绝对定位元素的宽度表现是“包裹性”,宽度由内部尺寸决定

但是有一种情况其宽度是由外部尺寸所决定的,例如:

div { position: absolute; left: 20px; right: 20px; }

假设该元素最近的具有定位特性的祖先元素的宽度是 1000 像素,则这个元素的宽度是 960(即 1000−20−20)像素。

2.3 内部尺寸与流体特性

所谓“内部尺寸”,简单来讲就是元素的尺寸由内部的元素决定,而非由外部的容器决定。

如何判断一个元素是否为内部尺寸呢?

​ 假如这个元素里面没有内容,宽度就是 0,那就是应用的“内部尺寸”。

“内部尺寸”有下面 3 种表现形式:

包裹性。

“包裹性”,除了“包裹”,还有“自适应性”。“自适应性”是区分后面两种尺寸表现很重要的一点。自适应,指的是元素尺寸由内部元素决定。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpsszw.html