《CSS世界》阅读心得

《CSS世界》是由张鑫旭所写的一本关于CSS合理使用和奇妙技巧的书,对于CSS的进阶很有帮助。目前只读了前4章,本文记录一下读书心得:
(1)盒模型和元素的分类
(2)深藏不落的width:auto
(3)外部尺寸与流体特性
(4)内部尺寸与流体特性
(5)为流体而生的min-width/max-height
(6)替换元素
(7)替换元素与非替换元素的距离

(1)盒模型和元素的分类


image.png

a. 块级元素(block):1.独占一行。 2.大多数具有流动性。 3.大多数可以手动设置width/height。
b. 内联元素(inline):1.不独占一行。2.大多数具有内聚性。3.大多数不能手动设置width/height。
c. 内联块级元素(inline-block): 不独占一行,大多数内聚,大多数可手动设置width/height。

(2)深藏不落的width:auto
a.充分利用可用空间。常见于块级元素,

这些元素默认为充满父元素。(尺寸由外部决定)
b.收缩与包裹。浮动,绝对定位,inline-block元素或table元素。(尺寸由内部决定)
c.收缩到最小。
https://demo.cssworld.cn/3/2-1.php

(3)外部尺寸与流体特性
a.正常流宽度

image.png

流动性并非是宽度100%于父容器,而是一种margin/border/padding和content自动分配水平空间的机制。
http://demo.cssworld.cn/3/2-3.php

b.格式化宽度。
出现在绝对定位中。默认情况下,绝对定位的元素的宽度表现为“包裹性”,但有一种情况下宽度是由外部尺寸决定:
div { position: absolute; left: 20px; right: 20px; }
假如该元素的具有定位特性的祖先元素宽度是1000,则该元素宽度为960。格式化宽度也具有流体特性。

(4)内部尺寸与流体特性
a.元素尺寸由内部元素决定,但永远小于“包含块”容器的尺寸(除非容器尺寸小于元素的“首选最小宽度”)
http://demo.cssworld.cn/3/2-5.php

b. 改变width/height作用细节的box-sizing
width/height 默认是作用在content-box上


image.png

image.png

{ box-sizing: border - box }
对于普通内联元素(非图片等替换元素),box-sizing无论是什么值,对其渲染表现都没有影响。
有些元素,如search类型的搜索框,其默认的box-sizing就是border-box(如果浏览器支持)。

box - sizing 发明的初衷
唯一离不开 box - sizing 就是原生普通文本框和文本域

image.png

img { width: 200px; }
  

三种尺寸都没有的情况下,会有默认的固定尺寸, 300 X 150。
这条规则