wang1dot0 / personal-note

记录工作中遇到的个人觉得比较有意思的小问题
https://github.com/wang1dot0/personal-note
0 stars 0 forks source link

[CSS] 视觉格式化 #26

Open wang1dot0 opened 4 years ago

wang1dot0 commented 4 years ago

box-sizing

负外边距

依然满足,块级元素的七个宽度属性相加等于父元素的宽度。 倘若元素的尺寸出现了过约束,右外边距就要被重置为满足所有算式所需的任何值。 如果左外边距为负值,且绝对值足够大。段落会从父元素溢出,且还从浏览器窗口的左边溢出了。

百分数

width, marginpadding 都可设置为百分数。但是,border 不适用。

置换元素

块级置换元素的处理,与前面类似。例外之处: width为auto时,置换元素的width等于内容自身的宽度。 如果设置了width,没有设置height,则图片会同比例缩放。

纵向格式化

元素的内容决定了元素的默认高度。 七个属性的值加在一起必须等于块级框的容纳块的高度。 如果margin-topmargin-bottom都设置为auto,则自动计算为0。

百分数高度

相对于框体的容纳块的高度而言的。 如果容纳块的高度没有明确声明,则百分数高度被重置为auto。

自动调整高度

如果height:auto。容纳块的高度刚好容纳里面的内容。 框体的高度等于第一个子元素的上边框外侧到最后一个元素的下边框外侧 而框体如果设置了padding/border,则包含margin

折叠纵向外边距

相邻的纵向外边距会折叠。 负外边距也会折叠,如两个相邻的外边距都为负值,浏览器取绝对值较大的一个。然后把外边距加起来。

列表项目

前面有记号,数字或小圆点,可以通过list-style-position属性调整其位置在它的外部或者内部。 不管如何调整列表的样式,记号与内容区边界之间的距离始终不变。

行内元素

常见的span或者a等非置换元素,以及置换元素:图像

匿名文本: 不再任何行内元素的字符串

字体框: 由字体定义

内容区: 内容区可以是各字符的字体框连在一起构成的方框。

行距: font-size 与 line-height 之差。 只有非置换元素有行距

行内框: 内容区加行距后得到的方框。行内框等于line-height。对置换元素,行内框高度等于内容区的高度

行框:过一行中各行内框最高点和最低点的方框。

行内框在一行中纵向对齐方式由vertical-align决定。 box-decoration-break: slice | clone

wang1dot0 commented 4 years ago

border-radius

如果半径太大,则每个圆角都弯曲成最大半径。会把最短的两边变为半圆形。 border-radius: 30px / 10px; 表示横向弯曲30px,纵向弯曲10px。 border-image-source: border-image-slice: border-image-width: 数字值是border-width的倍数, auto值使用border-image-slice和border-width结果。 border-image-outset: 数字值是border-width的倍数 border-image-repeat: [ stretch | repeat | round | space ] {1, 2} border-image: source | slice | /width | /outset | repeat

wang1dot0 commented 4 years ago

轮廓

与border区别

wang1dot0 commented 4 years ago

外边距

默认为0

百分数

与内边距一样,百分数是相对于父元素的内容区宽度计算。

但是,定位元素、弹性布局中的元素和栅格布局中的元素,其上下外边距百分数是相对格式化上下文的高度计算。

外边距折叠

相邻的两个上下外边距会折叠为其中一个最大的外边距。根据CSS规范,折叠时,小的被折叠的外边距根本不存在了,被重置为0。

负外边距

wang1dot0 commented 4 years ago

background-clip

默认值border-box, 默认延伸到边框外边界。背景始终绘制到边框可见部分的背后。

background-origin: border-box | padding-box | content-box

默认值 padding-box

background-repeat: repeat-x | repeat-y | [repeat, no-repeat, space, round]

space 会根据需要覆盖一个轴或者两个轴的位置。透过space排列的背景图间隙,可以看到元素的背景色或父辈元素的背景。 round 会缩放图像(自动调整宽高),并且不覆盖background-position的值。 怪异现象: 为了放下整个图像,会调整图像的尺寸,但是并不移动图像,让图像紧靠着背景区域的边界。因此,为了保证重复时不剪裁背景图,源图像只能放在角落。放在别的地方会剪裁。

background-origin确定源图像的位置 background-clip 改变背景的绘制区域

background-attachment 把源图像声明固定在视区内。

[scroll | fixed | local]

http://meyerweb.com/eric/css/edge/complexspiral/glassy.html

background-size

[length | percentage | auto]{1,2} | cover | contain 默认值auto 参数为两个值时,第一个为横向值,第二个为纵向值。 百分数: 相对于背景定位区域计算的,即background-origin定义的区域。 不能为负数 auto值与置换元素的height|width的auto值类似。

background-repeat

默认值为repeat,记得禁止。 0

background 合并属性

这些值的顺序没有严格要求,不过,有三个限制:

均可以设置多个背景,逗号分隔。先列出的背景层在后列出的背景层之上,所以,重合时会覆盖后者。因此,background-color只能指定最后一个值。

wang1dot0 commented 4 years ago

渐变

特点是没有固定尺寸,如果background-size为auto,渐变的尺寸是100%。 默认情况下,渐变尺寸铺满整个背景定位区域。 默认方向是to bottom 即 180deg, 而 0deg 等价于 to top。