CSS世界阅读笔记

第三章

3.2 width/height作用的具体细节

3.2.1 深藏不露的width:auto

当我们对元素设置width:100%时,实际作用的是contex-box,此时元素的实际占用尺寸是在父元素的宽度基础上加上自身padding、margin以及border。

  • 此时可以使用“宽度分离”进行处理,即在需要与父元素宽度一致的元素外包裹一个div,使包裹元素的width为100%,被包裹元素使其width:auto自动填充,此时无论怎么设置被包裹元的padding、margin以及border,都不会超出父元素的范围
  • 另一种做法使添加CSS属性box-sizing,最常用的值为border-box。设置此值后,设置的width是包含padding以及border的宽度的。(书中表示主要用途是使用在\标签以及\的100%自适应父容器宽度.PS:好像还有img,video,object)

3.2.6 关于height 100%

例子2-10中,为什么box要设置white-space: nowrap;因为此时作者想要展示此时的box宽度是由图片加上文字的宽度得来的,但是因为文字所在的容器设置了width:100%使得父容器展示完图片后没有足够的空间,所以文字的块会进行换行。加上white-space: nowrap;更能体现出父容器box的宽度是怎么来的,去掉white-space: nowrap;后,文字块回到应在的位置,与box宽度一致。

如果包含块的高度没有显式指定(即高度由内容决定),并且该元素不是绝对定位,则计算值为auto
所以此时想要高度100%有效果可以使用如下方式

  • 设置显式的高度值
  • 使用绝对定位:当为绝对定位时宽高百分比计算是相对于padding box,非绝对定位就为contex box计算。

第四章

4.1 深入理解content

content与替换元素

替换元素的特点有:内容可替换、基本样式外部CSS很难改变,有着自己的尺寸(基线也就是下边缘)。常见的替换元素img,ifram,video,select,input->range|file|hidden,button,textarea.

元素的固有尺寸不能被改变img标签的扩展

4.2 温和的padding属性

内联元素(inline)在使用padding时,直观上看不出变化,但是加上背景颜色后就能明显看到尺寸发生了变化,但是没有对布局造成作用。出现层叠效果。但父元素再设置overflow:auto;则会出现滚动条。
非替换的内联元素,不会将padding,margin,border加入行盒高的计算。
padding会导致元素换行,换行后可能会覆盖元素

Author: Sean
Link: https://blog.whileaway.io/posts/32304/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.