Skip to content

CSS

常见的浏览器引擎前缀:

  • Gecko 引擎(Firefox):
    • -moz-*:用于 Mozilla Firefox 浏览器。
  • WebKit 引擎(Safari 和早期版本的 Chrome):
    • -webkit-*:最初是为 WebKit 引擎设计的,适用于多个浏览器,包括 Safari 和早期版本的 Chrome。
  • Blink 引擎(现代 Chrome 和 Edge):
    • -webkit-*(有时会在 Blink 引擎上使用):Blink 引擎是由 Chrome 和 Edge 使用的内核,因此有些时候仍然可以看到 -webkit-* 的前缀。
  • Trident 引擎(Internet Explorer):
    • -ms-*:用于 Internet Explorer 浏览器。例如,-ms-filter 用于设置滤镜效果。
  • Presto 引擎(Opera):
    • -o-*:用于 Opera 浏览器。例如,-o-transition 用于设置过渡效果。

选择器

Attribute 选择器

  • [attr]: 选择具有指定属性的所有元素。
  • [attr=value]: 选择具有特定值的属性的元素。
  • [attr~=value]: 选择属性值包含指定词汇的元素。
  • [attr|=value]: 选择属性值以特定字符串开头并后接一个连字符的元素。
  • [attr^=value]: 选择属性值以特定字符串开头的元素。
  • [attr$=value]: 选择属性值以特定字符串结尾的元素。
  • [attr=value]*: 选择属性值中包含特定字符串的元素。

Class 选择器

使用点(.)后跟类名来选择具有特定类的元素。

css
.className { /* 样式 */ }

ID 选择器

使用井号(#)后跟ID名来选择具有特定ID的元素。

css
#idName { /* 样式 */ }

Element 选择器

又称为标签选择器,它直接使用HTML标签名来选择元素。

css
elementName { /* 样式 */ }

Universal 选择器

使用星号(*)来选择所有元素。

css
* { /* 样式 */ }

选择器列表

由逗号,分隔的一个或多个选择器构成的,允许你将一组样式规则应用于多个选择器所选定的元素。

css
h1, h2, h3 { font-family: Arial; }

组合器

后代选择器

使用空格来选择某个元素的所有后代元素。

css
div p { color: pink }

子代选择器

使用大于号>来选择直接子元素,而不会选择更深层嵌套的子元素。

css
ul > li { font-size: 18px }

相邻兄弟选择器

使用加号+来选择紧跟在某个元素后的第一个兄弟元素。

css
h2 + p { color: red}

通用兄弟选择器

使用波浪号~来选择某个元素之后的所有兄弟元素。

css
h2 ~ p { color: skybule }

伪类

  • :root:用于选择文档的根元素,在HTML中通常是<html>元素。常用于定义全局CSS变量或全局样式规则。

  • :link:选择所有未访问的链接。

  • :visited:选择用户已访问过的链接。

  • :hover:选择鼠标悬停在其上的元素。

  • :active:用于选择正在被用户激活(如点击)的元素。通常用于按钮或链接在被点击时的样式。

  • :any-link:选择所有的超链接,无论它们是否被访问过。这个伪类是:link和:visited伪类的结合。

  • :autofill:用于选择被浏览器自动填充的表单元素。这在改变自动填充输入框的样式时很有用。

  • :checked:选择被选中的表单元素(如复选框或单选按钮)。

  • :default:选择表单中的默认元素,例如默认选中的单选按钮或默认按钮。

  • :disabled:选择被禁用的表单元素,例如不可交互的输入框或按钮。

  • :enabled:选择所有可用的表单元素,即那些没有被禁用的表单控件。

  • :focus:选择当前获得焦点的元素。常用于表单元素,如输入框和按钮。

  • :in-range:用于表单输入,选择数值在指定范围内的输入元素。

  • :indeterminate:选择既不是选中也不是未选中状态的表单元素,如不确定状态的复选框。

  • :invalid:选择不满足其验证要求的表单元素。

  • :optional:选择没有required属性的表单元素,即非必填的表单元素。

  • :placeholder-shown:选择显示占位符文本的表单输入元素。

  • :read-only:选择设置为只读的表单元素。

  • :read-write:选择可编辑且没有设置为只读的表单元素。

  • :required:选择设置了required属性的表单元素,即必填的表单元素。

  • :user-invalid:选择用户与之交互过且验证无效的表单元素。

  • :user-valid:选择用户与之交互过且验证有效的表单元素。

  • :valid:选择所有验证成功的表单元素。

  • :buffering:适用于媒体元素(如<video><audio>),用于选择正在缓冲的元素。

  • :muted:用于媒体元素,选择音量被静音的元素。

  • :past:这个伪类通常用于媒体查询,用于选择已经播放过的媒体元素。

  • :paused:选择当前处于暂停状态的媒体元素,如暂停的<video><audio>

  • :playing:选择当前正在播放的媒体元素。

  • :left:用于页面打印或写作的方向,选择左页的元素。

  • :right:在打印媒体中使用,用于选择右页的元素。

  • :seeking:选择当前正在搜索中的媒体元素,如正在快进或快退的<video><audio>

  • :stalled:用于选择由于错误而停止下载的媒体元素。

  • :first:与 @page 一起使用,表示打印文档的第一页。

  • :first-child:选择其父元素的第一个子元素。例如,p:first-child选择作为其父元素第一个子元素的所有<p>元素。

  • :last-child:选择其父元素的最后一个子元素。

  • :only-child:选择那些没有任何兄弟元素的元素,即那些是其父元素唯一子元素的元素。

  • :nth-child():选择其父元素的第n个子元素。例如,:nth-child(2n)选择偶数位置的子元素。

  • :nth-last-child():类似于:nth-child(),但是从后往前计数。

  • :nth-last-of-type():用于选择属于其父元素的特定类型的第N个子元素,从最后一个子元素开始倒数。

  • :first-of-type:选择每个父元素中同类型的第一个子元素。例如,p:first-of-type选择每个父元素中第一个<p>元素。

  • :last-of-type:选择每个父元素中同类型的最后一个子元素。

  • :nth-of-type():选择其父元素中特定类型的第n个子元素。例如,div:nth-of-type(2)会选择每个父元素中的第二个<div>元素。

  • :only-of-type:选择每个父元素下同类型的唯一子元素。例如,p:only-of-type选择每个父元素下唯一的<p>元素。

  • :focus-visible:选择获得焦点并且以用户界面方式可见的元素。这对于改善键盘交互和可访问性很有帮助。

  • :focus-within:选择包含获得焦点的元素的元素。这对于当子元素获得焦点时需要改变其父元素样式的情况特别有用。

  • :fullscreen:用于选择处于全屏模式的元素。适用于全屏API。

  • :picture-in-picture:选择当前在画中画模式下的视频元素。

  • :volume-locked:匹配音量已锁定的元素。

  • :empty:用于选择没有任何子元素(包括文本节点)的元素。例如,一个空的<div>

  • :out-of-range:选择值超出其min和max属性设定范围的输入元素。

  • :host:用于Web组件(Shadow DOM),选择宿主元素。

  • :host-context():在Web组件中使用,选择在特定祖先元素下的宿主元素。

  • :host():用于Web组件(Shadow DOM),它允许你选择定义Shadow DOM的宿主元素。通过:host()中的参数,可以进一步指定宿主元素的选择条件。

  • :current:用于选择当前正在显示的元素,常用于页面滚动或幻灯片显示中的当前项目。

  • :future:匹配完全出现在与 :current 匹配的元素之后的任何元素。

  • :local-link:选择指向当前文档或片段的链接。

  • :target:选择URL中的锚名称与文档内某个元素的id相匹配的元素。例如,如果URL是example.com#section2,那么#section2:target将会被选择。

  • :has():选择包含特定子元素或后代的元素。例如,p:has(> img)选择包含<img>直接子元素的<p>元素。

  • :is():接受一个选择器列表作为参数,匹配任何可以被参数列表中的任一选择器选中的元素。例如,:is(.class1, .class2)。

  • :not():接受一个选择器作为参数,选择不匹配该选择器的所有元素。例如,:not(.class)。

  • :where():这个伪类函数类似于:is(),但在计算选择器的优先级时,:where()的权重为0。这使得它非常适用于覆盖默认样式。

  • :dir():基于文本方向选择元素。例如,:dir(ltr) 选择文本方向为从左到右(left-to-right)的元素。

  • :lang():基于元素的语言设置选择元素。例如,:lang(en)选择所有指定为英语的元素。

  • :defined:用于选择已被定义的自定义元素(Web Components),即已注册的自定义元素。

  • :modal:匹配处于排除与外部元素的所有交互的状态的元素,直到交互被消除为止。

  • :popover-open:的根元素,通常是HTML文档中的<html>元素。

  • :scope:用于选择作为当前作用域的元素。在HTML中,它通常指的是与CSS选择器相同的容器。

伪元素

  • ::after:在元素内容之后插入内容。
  • ::before:在元素内容之前插入内容。
  • ::first-letter:选择块级元素的第一个字母。
  • ::first-line:选择块级元素的第一行文本。
  • ::backdrop:用于为全屏模式下的元素或对话框(如<dialog>元素)的背景创建样式。
  • ::cue:用于WebVTT字幕的样式。
  • ::cue-region:用于WebVTT区域的样式。
  • ::file-selector-button:用于自定义文件选择按钮的样式。
  • ::placeholder:用于输入框占位符的样式。
  • ::selection:用于选择文本的样式。
  • ::marker:用于列表项标记(如项目符号或数字)的样式。
  • ::part():用于在Shadow DOM中为部分元素自定义样式。
  • ::slotted():用于为Shadow DOM中的插槽分配的内容自定义样式。
  • ::highlight():用于为文档中的高亮部分(如网页搜索结果)设置样式。

属性

动画

  • animation
    • animation-delay:指定动画开始前的延迟时间。
    • animation-direction:指定动画的播放方向。
      • normal: 默认值。动画正常播放,按照时间轴的正方向。
      • reverse: 动画反向播放,按照时间轴的反方向。
      • alternate: 动画在正向和反向之间交替播放。每一次迭代都会改变播放方向。
      • alternate-reverse: 动画在反向和正向之间交替播放。每一次迭代都会改变播放方向。
    • animation-duration:指定动画的持续时间。
    • animation-fill-mode:指定动画在动画开始和结束时元素的样式。
      • none: 默认值。动画不会影响动画元素在播放之前和之后的样式。元素将保持其初始状态。
      • forwards: 动画播放完成后,元素将应用动画的最终关键帧的样式。元素将保持动画结束时的状态。
      • backwards: 动画播放之前,元素将应用动画的第一个关键帧的样式。元素将在动画开始之前的状态。
      • both: 动画播放之前和之后都应用样式。等同于同时设置 forwards 和 backwards。
    • animation-iteration-count:指定动画的循环次数。
    • animation-name:指定要应用于元素的动画名称。
    • animation-play-state:指定动画是否正在播放或暂停。
      • running: 默认值。动画正在运行。
      • paused: 动画被暂停。元素将停留在当前动画的状态。
    • animation-timing-function:指定动画的速度曲线。
      • ease: 默认值。缓慢开始,然后加速,然后缓慢结束。
      • linear: 动画以恒定的速度进行,没有加速或减速。
      • ease-in: 缓慢开始,然后逐渐加速。
      • ease-out: 快速开始,然后逐渐减速。
      • ease-in-out: 缓慢开始,然后加速,最后缓慢结束。
      • cubic-bezier(n,n,n,n): 自定义贝塞尔曲线,由四个数字值指定。这允许更精细的控制动画的速度。
      • steps(int, jump-start | jump-end | jump-none | jump-both): 阶跃函数,int 参数指定了动画过程中的阶跃数,jump-* 参数指定了是在每个步骤的开始还是结束时跳跃。
      • step-start: 动画从关键帧的起始值立即跳跃到结束值。等同于 steps(1, jump-start)
      • step-end: 动画从关键帧的起始值保持不变,直到接近动画结束时才跳跃到结束值。等同于 steps(1, jump-end)
  • animation-composition:指定多个影响相同属性的动画组合。
    • replace: 最后一个动画效果将覆盖所有之前的动画效果。这是默认值。
    • add: 将所有动画的效果相加。
    • accumulate: 累积所有动画的效果,需要格外注意动画之间的叠加顺序。

背景

  • background:用于设置元素的背景样式。
    • background-attachment: 用于设置背景图像的滚动方式的属性。
      • scroll: 默认值。背景图像会随着元素内容的滚动而滚动。
      • fixed: 背景图像固定在视口中,不随元素内容的滚动而滚动。
      • local: 背景图像会随元素内容的滚动而滚动,但不会超出元素的边界,因此只在元素内部可见。
    • background-clip: 用于指定元素的背景绘制区域。
      • border-box: 默认值。背景将绘制在元素的边框框内,包括内边距区域。
      • padding-box: 背景将绘制在元素的内边距框内,不包括边框区域。
      • content-box: 背景将仅绘制在元素的内容框内,不包括边框和内边距。
      • text:背景将绘制在元素的前景文本内。
    • background-color: 用于设置元素的背景颜色。
    • background-image: 用于设置元素的背景图片。
      • url("path"): 指向图片文件的 URL 地址。
      • linear-gradient(direction, color-stopN): 定义线性渐变。
      • radial-gradient(shape, size, position, color-stopN): 定义径向渐变。
      • repeating-linear-gradient(direction, color-stopN):类似于线性渐变,但颜色模式会沿直线重复。
      • repeating-radial-gradient(shape, size, position, color-stopN):类似于径向渐变,但颜色模式会从中心点向外重复。
      • conic-gradient():定义圆锥渐变。
      • none: 表示不显示背景图片。
    • background-origin: 用于确定元素背景图片的原点位置,即背景图片相对于哪个区域进行定位。
      • padding-box: 默认值。背景图片从元素的内边距框的左上角开始绘制。
      • border-box: 背景图片从元素的边框框的左上角开始绘制,包括边框区域。
      • content-box: 背景图片从元素的内容框的左上角开始绘制,不包括边框和内边距。
    • background-position: 用于设置元素的背景图片的位置。
      • background-position-x: 用于设置元素的背景图片的水平位置。
      • background-position-y: 用于设置元素的背景图片的垂直位置。
    • background-repeat: 用于设置元素的背景图片是否重复显示,以及如何重复显示。0
    • background-size: 用于设置元素的背景图片的大小。
      • auto: 默认值。背景图像的尺寸保持原始大小,不进行缩放。
      • cover: 背景图像保持纵横比并尽可能大,使得背景完全覆盖元素。可能会导致图像的某些部分被裁剪。
      • contain: 背景图像保持纵横比并尽可能小,使得整个图像都能完全显示在元素内。
  • background-blend-mod:用于控制背景图片和背景色混合方式。
  • isolation: 创建一个新的堆叠上下文并进行独立设置。
  • mix-blend-mode: 设置一个元素内容和其背景(或下面的元素)的混合模式。

单张背景

css
background:color image repeat position/size attachment;
例1:background: #f00 url(./img/1.jpg) no-repeat left top/200px 200px scroll;
例2:background: red url(./img/2.jpg) repeat-x center/cover fixed;

多张背景

css
background:
color image repeat position/size attachment,
color image repeat position/size attachment;
例:background: 
  #ffff00 url(./img/1.jpg) no-repeat 0px 0px/200px 200px,
  #ff00ff url(./img/2.jpg) no-repeat center/100px 100px;

线性渐变

  • direction
    • to bottom(默认): 从上到下
    • to top: 从下到上
    • to right: 从左到右
    • to left: 从右到左
    • 对角方向,如to bottom right或to top left
    • 角度值,如45deg,其中0deg是从下到上,角度顺时针增加。
  • color-stop: 每个颜色停靠点定义渐变中的颜色和位置。至少需要两个颜色。 - 颜色值可以是任何有效的CSS颜色格式(如#ff0000, rgb(255,0,0), red等)。 - 可选地,可以指定每个颜色在渐变线上的位置,如color 20%。

径向渐变

  • Shape:
    • circle: 使渐变呈圆形。
    • ellipse: 使渐变呈椭圆形,默认值。
  • Size:
    • 关键字:closest-side, closest-corner, farthest-side, farthest-corner。
    • 具体尺寸:可以是长度或百分比值。
  • Position:
    • 指定中心点的位置,默认为center。
    • 可以使用关键词(如top, bottom, right, left)或精确值(如50% 75%)。
  • color-stop:
    • 指定渐变中的颜色和它们在渐变中的位置。
    • 可以是任何有效的CSS颜色值,如颜色名、十六进制值、rgb(a)、hsl(a)等。
    • 可以包含位置值(如color 40%),表示颜色在哪里开始或结束。

边框

  • border: 用于设置元素边框。
    • border-color: 用于设置元素边框的颜色。
      • border-bottom-color: 用于设置元素下边框的颜色。
      • border-left-color: 用于设置元素左边框的颜色。
      • border-right-color: 用于设置元素右边框的颜色。
      • border-top-color: 用于设置元素上边框的颜色。
    • border-style: 用于设置元素边框的样式。
      • border-bottom-style: 用于设置元素下边框的样式。
      • border-left-style: 用于设置元素左边框的样式。
      • border-right-style: 用于设置元素右边框的样式。
      • border-top-style: 用于设置元素上边框的样式。
    • border-width: 用于设置元素边框的宽度。
      • border-bottom-width:用于设置元素下边框的宽度。
      • border-left-width:用于设置元素左边框的宽度。
      • border-right-width:用于设置元素右边框的宽度。
      • border-top-width:用于设置元素上边框的宽度。
  • border-top: 用于设置元素上边框。
    • border-top-color: 用于设置元素上边框的颜色。
    • border-top-style: 用于设置元素上边框的样式。
    • border-top-width: 用于设置元素上边框的宽度。
  • border-right: 用于设置元素右边框。
    • border-right-color: 用于设置元素右边框的颜色。
    • border-right-style: 用于设置元素右边框的样式。
    • border-right-width: 用于设置元素右边框的宽度。
  • border-left: 用于设置元素左边框。
    • border-left-color: 用于设置元素左边框的颜色。
    • border-left-style: 用于设置元素左边框的样式。
    • border-left-width: 用于设置元素左边框的宽度。
  • border-bottom: 用于设置下边框。
    • border-bottom-color: 用于设置下边框的颜色。
    • border-bottom-style: 用于设置下边框的样式。
    • border-bottom-width: 用于设置下边框的宽度。
  • border-block:用于设置块轴的边框。对于水平书写模式,border-block 相当于 border-top 和 border-bottom 属性。对于垂直书写模式,border-block 相当于 border-left 和 border-right 属性。
    • border-block-color:用于设置块轴边框的颜色。
    • border-block-style:用于设置块轴边框的样式。
    • border-block-width:用于设置块轴边框的宽度。
  • border-block-end: 用于设置元素在块轴下边框。
    • border-block-end-color: 用于设置元素在块轴下边框的颜色。
    • border-block-end-style: 用于设置元素在块轴下边框的样式。
    • border-block-end-width: 用于设置元素在块轴下边框的宽度。
  • border-block-start: 用于设置元素在块轴的上边框。
    • border-block-start-color: 用于设置元素在块轴上边框的颜色。
    • border-block-start-style: 用于设置元素在块轴上边框的样式。
    • border-block-start-width: 用于设置元素在块轴上边框的宽度。
  • border-inline: 用于设置元素在内联轴上的行方向边框。
    • border-inline-color: 用于设置元素在内联轴上的行方向边框颜色。
    • border-inline-style: 用于设置元素在内联轴上的行方向边框样式。
    • border-inline-width: 用于设置元素在内联轴上的行方向边框宽度。
  • border-inline-end: 用于设置元素在内联轴上的行方向末端边框。
    • border-inline-end-color: 用于设置元素在内联轴上的行方向末端边框颜色。
    • border-inline-end-style: 用于设置元素在内联轴上的行方向末端边框样式。
    • border-inline-end-width: 用于设置元素在内联轴上的行方向末端边框宽度。
  • border-inline-start: 用于设置元素在内联轴上的行方向顶端边框。
    • border-inline-start-color: 用于设置元素在内联轴上的行方向顶端边框颜色。
    • border-inline-start-style: 用于设置元素在内联轴上的行方向顶端边框样式。
    • border-inline-start-width: 用于设置元素在内联轴上的行方向顶端边框宽度。
  • border-radius: 用于设置元素的圆角半径。
    • border-bottom-left-radius: 用于设置元素左下角的圆角半径。
    • border-bottom-right-radius: 用于设置元素右下角的圆角半径。
    • border-top-left-radius: 用于设置元素左上角的圆角半径。
    • border-top-right-radius: 用于设置元素右上角的圆角半径。
    • border-end-end-radius: 用于设置元素在块轴下边框和行末端相交处的角的半径。与 border-bottom-right-radius 效果一样。
    • border-end-start-radius: 用于设置元素在块轴下边框和行顶端相交处的角的半径。与 border-bottom-left-radius 效果一样。
    • border-start-end-radius: 用于设置元素在块轴上边框和行顶端相交处的角的半径。与 border-top-right-radius 效果一样。
    • border-start-start-radius: 用于设置元素在块轴上边框和行顶端相交处的角的半径。与 border-top-left-radius 效果一样。
  • border-image: 用于将图像用作元素的边框。
    • border-image-outset: 定义图像边框相对于元素边框的偏移量。
    • border-image-repeat: 定义如何重复图像以填充边框。
    • border-image-slice: 定义如何将图像分割成 9 个部分,用于绘制边框。
    • border-image-source: 定义图像源,可以是 URL 或渐变。
    • border-image-width: 定义图像边框的宽度。

画三角形

  1. 设置一个盒子;
  2. 设置四周不同颜色大小的边框border;
  3. 给盒子的宽高设置为0,仅保留边框border;
  4. 得到四个三角形,选择其中一个或多个三角形(边框)后,其他三角形(边框)颜色设置为透明transparent;

盒模型

  • margin:用于同时设置元素的所有四个边(上、右、下、左)的外边距。
    • margin-bottom:用于设置元素的底部的外边距。
    • margin-left:用于设置元素的左边的外边距。
    • margin-right:用于设置元素的右边的外边距。
    • margin-top:用于设置元素的顶部的外边距。
  • margin-block:逻辑属性,用于设置元素的顶部和底部的外边距。
    • margin-block-start:逻辑属性,用于设置元素顶部的外边距。
    • margin-block-end:逻辑属性,用于设置元素底部的外边距。
  • margin-inline:逻辑属性,用于设置元素的左边和右边的外边距。
    • margin-inline-start:逻辑属性,用于设置元素左边的外边距。
    • margin-inline-end:逻辑属性,用于设置元素右边的外边距。
  • padding:用于一次性设置一个元素的所有内边距。
    • padding-bottom:用于设置一个元素的底部内边距。
    • padding-left:用于设置一个元素的左侧内边距。
    • padding-right:用于设置一个元素的右侧内边距。
    • padding-top:用于设置一个元素的顶部内边距。
  • padding-block:用于设置在块轴的内边距。
    • padding-block-start:设置块轴开始方向的内边距。
    • padding-block-end: 设置块轴结束方向的内边距。
  • padding-inline:用于设置在行内轴的内边距。
    • padding-inline-start:设置行内轴开始方向的内边距。
    • padding-inline-end: 设置行内轴结束方向的内边距。
  • box-decoration-break:用于控制元素在跨越多个行内框或块容器时,内部框的装饰如何呈现。通常用于处理元素被分割到多行时的装饰效果。
  • box-shadow:用于在元素周围创建一个或多个阴影效果。可以设置阴影的颜色、偏移、模糊半径和扩散半径。
  • box-sizing:用于控制盒模型的大小计算方式。
    • content-box:默认值,标准盒模型,width和height只表示content内容宽高。
    • border-box:怪异盒模型,width和height只表示盒子宽高,包含content、padding和border部分。

外边距合并

兄弟元素之间下垂直外边距合并

  • 两个垂直的盒子任意一方添加行内块属性display:inline-block;
  • 给盒子设置margin-bottom和margin-top值;
    • 两个为正数,则取最大数;
    • 一正一负,则取相加得出值;
    • 两个负数,则取叠加值;

外边距塌陷

父子元素之间上外边距合并

  • 给父级设置一个 border或padding值;
  • 给父级设置一个overflow: hidden;
  • 转换成行内块元素;
  • 设置浮动float;

变量

  • --*:一种特定格式的标识符,以两个破折号(--)开头,后面跟着一个有效的标识符。通常用于在:root中定义CSS自定义属性(CSS变量),也可以用于某些属性的值,尤其是与CSS变量相关的场景。
css
:root {
    --main-bg-color: coral; /* 定义一个名为 --main-bg-color 的CSS变量 */
    --padding-value: 15px;  /* 定义一个名为 --padding-value 的CSS变量 */
}

body {
    background-color: var(--main-bg-color); /* 使用CSS变量 */
    padding: var(--padding-value);          /* 使用CSS变量 */
}

颜色

  • color: 用于设置元素文本的颜色。
  • color-scheme: 用于指定用户代理应该使用的颜色方案。
  • forced-color-adjust: 用于指定用户代理是否强制应用强制颜色(例如高对比度模式)对文档进行调整。
  • print-color-adjust: 用于指定打印时颜色的渲染方式,可以确保打印版本尽可能接近屏幕显示。

容器

  • container: 用于定义一个元素是否被视为容器。
  • container-name: 用于为容器指定一个名称。
  • container-type: 用于定义容器的类型。

独立容器

  • contain: 用于指定元素是否应该被包含在它的边界框内。
  • contain-intrinsic-size:用于设置元素的内在宽度和高度。
    • contain-intrinsic-inline-size:用于设置元素的内在内联尺寸,对于水平布局的元素通常是宽度,对于垂直布局的元素通常是高度。
    • contain-intrinsic-block-size: 用于设置元素的内在块尺寸,对于水平布局的元素通常是高度,对于垂直布局的元素通常是宽度。
  • contain-intrinsic-height:设置元素的内在高度。
  • contain-intrinsic-width:用于设置元素的内在宽度。

与 BFC 的区别

  • BFC 是一种布局环境,它影响文档流中元素的布局和相互作用。创建 BFC 的常见方式包括使用 overflow, display, float 和 position 等属性。
  • Containment 更注重性能优化,允许开发者显式地告诉浏览器某个元素的布局、样式和绘制是独立于文档流的其他部分的。这可以减少不必要的布局重排和重绘。

显示方式

  • display: 用于设置元素的显示方式。
    • contents:元素本身不生成盒子,但其子元素会正常生成。
    • none:元素不显示,并从文档布局中消失,在网页中不占位置。
    • flow-root:创建一个块级流容器,可以包含浮动元素。
    • table:表示元素应该像<table>元素一样显示。
    • flex:表示元素应该像一个灵活的容器一样显示,其子元素可以使用Flexbox布局。
    • grid:表示元素应该像一个网格容器一样显示,其子元素可以使用Grid布局。
    • block:元素显示为块级元素,占据一整行,下一个元素在新行开始。
    • inline:元素在行内显示,不会开始新行,其宽度只与内容宽度一致。
    • ist-item:元素显示为一个列表项,通常伴有项目符号或数字。
    • inline-block:元素生成一个行内块元素。
    • inline-table:元素显示为一个内联表格,类似于<table>,但是作为行内元素显示。
    • inline-flex:元素显示为一个内联灵活容器。
    • inline-grid:元素显示为一个内联网格容器。
    • table-row-group:类似于 <tbody> HTML 元素。
    • table-header-group:类似于 <thead> HTML 元素。
    • table-footer-group:类似于 <tfoot> HTML 元素。
    • table-row:类似于 <tr> HTML 元素。
    • table-cell:类似于 <td> HTML 元素。
    • table-column-group:类似于 <colgroup> HTML 元素。
    • table-column:类似于 <col> HTML 元素。
    • table-caption:类似于 <caption> HTML 元素。

滤镜

  • filter: 用于对元素内容进行图像处理。
    • blur(): 应用高斯模糊效果。括号内的值定义了模糊的程度,值越大,图像越模糊。
    • brightness(): 调整元素的亮度。值为1或100%时不会改变图像。小于1的值会使图像变暗,大于1的值会使图像变亮。
    • contrast(): 调整图像的对比度。值为1或100%时不改变图像。值小于1或100%会减少对比度,值大于1或100%会增加对比度。
    • drop-shadow(): 给元素添加阴影效果,类似于box-shadow,但是它适用于元素本身的形状。可以指定阴影的偏移量、模糊半径和颜色。
    • grayscale(): 将图像转换为灰度。值为1或100%时完全转换为灰度,值为0时不应用灰度效果。
    • hue-rotate(): 给图像应用色相旋转。值定义了色轮上的旋转角度,从而改变图像的实际颜色。
    • invert(): 反转图像的颜色。值为1或100%时完全反转,值为0时不反转颜色。
    • opacity(): 使图像变得更透明。值为1或100%时完全不透明,值为0时完全透明。
    • saturate(): 调整图像的饱和度。值为1或100%时不改变饱和度。值小于1或100%会减少饱和度,值大于1或100%会增加饱和度。
    • sepia(): 将图像转换为深褐色。值为1或100%时完全转换为深褐色,值为0时不应用效果。
  • backdrop-filter:用于创建一个视觉效果,可以在元素的背景和元素内容之间添加模糊效果(毛玻璃)或颜色变化。

字体

  • font: 用于定义元素的字体
    • font-family:用于定义元素的字体,可以指定一个或多个字体族,以备系统中没有第一个字体时使用备用字体。
    • font-size:用于设置文本的大小,可以使用相对单位(如 em 或 rem)或绝对单位(如 px)。
    • font-stretch:用于指定字体的紧缩或拉伸程度,可选择 normal、condensed、expanded 等值。
    • font-style:定义文本的风格,可以设置为 normal、italic 或 oblique。
    • font-weight:控制文本的粗细程度,可以取值为 normal、bold 或使用数字表示相对粗细。
    • font-variant:设置字体的大小写。可以使用 normal、small-caps 等值。
      • font-variant-alternates: 控制 OpenType 字体中替代字形的显示。
      • font-variant-caps: 定义文本中大写字母的变体效果,如小型大写字母。
      • font-variant-east-asian: 控制文本在使用东亚字符集时的显示效果,如中文、日文、韩文等。
      • font-variant-emoji: 用于控制文本中 Emoji 字符的显示方式。
      • font-variant-ligatures: 控制文本中是否启用连字,如字母之间的连接效果。
      • font-variant-numeric: 控制文本中数字的显示风格,如旧式数字或连字数字。
      • font-variant-position: 控制文本中数字和字母的位置,如上标或下标。
      • font-variation-settings: 允许指定字体轴变化的值,用于更灵活地控制字体外观。
  • font-feature-settings: 允许开启或关闭 OpenType 字体的特定特性,例如 ligatures(连字)和 stylistic alternates(字形替代)。
  • font-kerning:控制字母之间的距离,使其在视觉上更加平滑和一致。
  • font-language-override: 用于指定元素中的文本所使用的 OpenType 语言特性,以适应不同语言的字形需求。
  • font-optical-sizing: 控制字体是否启用光学大小调整,以提高字体在不同大小下的可读性。
  • font-palette: 用于指定颜色字体的调色板,使文本在不同颜色主题下保持一致。
  • font-size-adjust: 用于调整字体大小以适应不同屏幕分辨率。
  • font-synthesis: 控制浏览器是否合成字体样式,包括合成粗细、倾斜和小型大写字母。
    • font-synthesis-small-caps: 控制是否将小型大写字母合成为正常大写字母。
    • font-synthesis-style: 控制是否合成字体的斜体风格。
    • font-synthesis-weight: 控制是否合成字体的粗细程度。
    • font-synthesis-position: 定义合成字体样式时,是否考虑基线偏移。

分页换行

  • break-after:用于控制当前元素之后是否换行。
  • break-before:用于控 当前元素之前是否换行。
  • break-inside:用于控制当前元素内部是否换行。
  • orphans:指定元素在页面上分页之前必须保留的最小行数。
  • widows:用于设置分页媒体上,页面顶部允许的最小行数。

图像

  • image-orientation:用于修正某些图片的预设方向。
  • image-rendering:用于控制图像的缩放算法。
  • object-fit:指定替换元素的内容应如何填充其容器。
  • object-position:指定替换元素的内容在其容器内的对齐方式。

计数器

  • counter-increment: 用于增加或减少指定名称的 CSS 计数器值,或阻止所有计数器或单个计数器值的更改。
  • counter-reset: 用于将指定名称的 CSS 计数器重置为指定值,或重置隐藏在不太具体的规则中定义的计数器。
  • counter-set: 用于设置指定名称的 CSS 计数器值。

列表项

  • list-style: 用于同时设置列表项的标记类型、图像和位置。
    • list-style-image: 用于将图像设置为列表项的标记。
    • list-style-type: 用于设置列表标记的位置(内边距或外边距)。
    • list-style-position: 指定列表项标记的类型,可以是内置的符号类型(如圆圈、方块)或字符串。

遮罩

  • clip-path: 用于定义元素的可见区域,以剪裁或隐藏元素的部分区域。
  • mask: 用于设置一个元素的遮罩图层。
    • mask-clip: 定义遮罩的绘制区域。
    • mask-image: 指定一个或多个遮罩图像。
    • mask-mode: 定义遮罩图像的模式(如 alpha 或 luminance)。
    • mask-origin: 设置遮罩图像的定位区域。
    • mask-position: 设置遮罩图像的初始位置。
    • mask-repeat: 定义遮罩图像是否以及如何重复。
    • mask-size: 指定遮罩图像的尺寸。
    • mask-composite: 描述如何将多个遮罩层组合在一起。
  • mask-border: 用于指定元素边框的遮罩。
    • mask-border-mode: 指定边框遮罩的混合模式。
    • mask-border-outset: 设置边框遮罩的外延。
    • mask-border-repeat: 定义边框遮罩的重复方式。
    • mask-border-slice: 定义如何将图像切片以适应边框。
    • mask-border-source: 指定边框遮罩的图像。
    • mask-border-width: 设置边框遮罩的宽度。
  • mask-type: 定义遮罩是一个透明度遮罩还是一个亮度遮罩。

运动路径

  • offset: 用于指定元素的运动。
    • offset-path: 指定元素运动的路径。
    • offset-distance: 定义元素沿着 offset-path 的路径移动的距离。
    • offset-position: 指定元素的起始位置。
    • offset-rotate: 控制元素沿着路径移动时的旋转方式。
    • offset-anchor:定义元素中用作运动路径锚点的点。

溢出

  • overflow: 控制元素的溢出行为,只适用于块元素。
    • overflow-x: 控制水平方向的溢出行为,只适用于块元素。
    • overflow-y: 控制垂直方向的溢出行为,只适用于块元素。
  • overflow-block: 用于指定在块轴(通常是垂直方向)上的溢出行为。
  • overflow-inline: 用于指定在行内轴(通常是水平方向)上的溢出行为。
  • overflow-anchor:用于控制元素溢出时滚动条的锚点位置。
  • overflow-clip-margin: 用于定义当 overflow 属性设置为 clip 时,元素的可视框(视觉框架)之外的裁剪边界的扩展范围。

Flex

  • flex:用于设置弹性元素的子元素的伸缩性。
    • flex-basis:用于设置弹性元素在主轴上的初始大小。默认值为 auto,即元素的大小由其内容决定。
    • flex-grow:定义元素在 flex 容器中剩余空间分配时的增长比例。默认值为 0,表示元素不会增长。
    • flex-shrink:定义元素在 flex 容器中空间不足时的收缩比例。默认值为 1,表示元素会按比例收缩。
  • flex-flow:定义 flex 容器中元素的排列方向和换行规则。
    • flex-direction:定义 flex 容器中子元素的排列方向。
    • flex-wrap:定义 flex 容器中元素是否换行。
  • order:用定义元素在 flex 容器中的排列顺序。默认值为 0,表示元素按照在 HTML 中的顺序排列。
  • gap: 用于设置网格布局中行和列之间的间距。
    • row-gap:用于设置网格布局中行之间的间距。
    • column-gap:用于设置网格布局中列之间的间距。
  • justify-content:控制 flex 容器中 flex 行在主轴上的水平对齐方式。
    • start: 将 flex 行对齐到 flex 容器的起始位置。
    • end: 将 flex 行对齐到 flex 容器的结束位置。
    • center: 将 flex 行水平居中。
    • space-between: 将 flex 行均匀分布,并在它们之间留出相等的间距。
    • space-around: 将 flex 行均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
    • space-evenly: 将 flex 行均匀分布,并在它们之间和 flex 容器的边缘之间留出相等的间距。
  • justify-items:控制 flex 容器中 flex 项在主轴上的垂直对齐方式。
    • stretch: 将 flex 项拉伸到 flex 容器的高度。
    • center: 将 flex 项垂直居中。
    • flex-start: 将 flex 项对齐到 flex 容器的顶部。
    • flex-end: 将 flex 项对齐到 flex 容器的底部。
    • baseline: 将 flex 项的基线对齐到 flex 容器的基线。
    • first baseline: 将第一个 flex 项的基线对齐到 flex 容器的基线。
    • last baseline: 将最后一个 flex 项的基线对齐到 flex 容器的基线。
    • space-between: 将 flex 项垂直均匀分布,并在它们之间留出相等的间距。
    • space-around: 将 flex 项垂直均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
    • space-evenly: 将 flex 项垂直均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
  • align-content:控制 flex 容器中flex 行在交叉轴上的对齐方式。
    • stretch: 将 flex 行拉伸到 flex 容器的高度。
    • center: 将 flex 行在交叉轴上居中。
    • flex-start: 将 flex 行在交叉轴上对齐到 flex 容器的顶部。
    • flex-end: 将 flex 行在交叉轴上对齐到 flex 容器的底部。
    • space-between: 将 flex 行在交叉轴上均匀分布,并在它们之间留出相等的间距。
    • space-around: 将 flex 行在交叉轴上均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
    • space-evenly: 将 flex 行在交叉轴上均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
  • align-items:控制 flex 容器中 flex 项在交叉轴上的对齐方式。
    • flex-start: 将 flex 项在交叉轴上对齐到 flex 容器的顶部。
    • flex-end: 将 flex 项在交叉轴上对齐到 flex 容器的底部。
    • baseline: 将 flex 项的基线对齐到 flex 容器的基线。
    • first baseline: 将第一个 flex 项的基线对齐到 flex 容器的基线。
    • last baseline: 将最后一个 flex 项的基线对齐到 flex 容器的基线。
    • space-between: 将 flex 项在交叉轴上均匀分布,并在它们之间留出相等的间距。
    • space-around: 将 flex 项在交叉轴上均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
    • space-evenly: 将 flex 项在交叉轴上均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
  • align-self:控制单个 flex 项在交叉轴上的对齐方式。
    • auto: 使用父容器的 align-items 属性值。
    • stretch: 将 flex 项拉伸到 flex 容器的高度。
    • center: 将 flex 项在交叉轴上居中。
    • flex-start: 将 flex 项在交叉轴上对齐到 flex 容器的顶部。
    • flex-end: 将 flex 项在交叉轴上对齐到 flex 容器的底部。
    • baseline: 将 flex 项的基线对齐到 flex 容器的基线。
    • first baseline: 将 flex 项的基线对齐到 flex 容器的基线。
    • last baseline: 将 flex 项的基线对齐到 flex 容器的基线。
    • space-between: 将 flex 项在交叉轴上均匀分布,并在它们之间留出相等的间距。
    • space-around: 将 flex 项在交叉轴上均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
    • space-evenly: 将 flex 项在交叉轴上均匀分布,并在它们和 flex 容器的边缘之间留出相等的间距。
  • place-content: 定义 flex 容器中的元素在容器中如何对齐和分配空间。
  • place-items: 定义 flex 容器中的每个元素如何在其分配的空间内对齐。
  • place-self: 用于在 flex 布局中控制单个元素在容器中的对齐和定位。

Grid

  • grid:
    • grid-auto-flow: 控制网格项目的自动布局流向,可以是 "row"、"column" 或 "dense"。
    • grid-auto-rows: 定义没有明确指定大小的网格的行的大小。
    • grid-auto-columns: 定义没有明确指定大小的网格的列的大小。
    • grid-template: 用于定义网格的行和列的大小和结构。
      • grid-template-columns: 定义网格的列的大小和结构,可以指定一个或多个值。
      • grid-template-rows: 定义网格的行的大小和结构,可以指定一个或多个值。
      • grid-template-areas: 用于定义网格区域的布局,通过为每个区域分配一个名称,然后在容器中定义每个项目的区域。
  • grid-area: 用于指定项目所占的网格区域,可以同时设置行和列。
    • grid-row: 定义项目所占的网格行的位置,可以同时设置起始和结束行。
      • grid-row-start: 定义项目的起始网格行位置。
      • grid-row-end: 定义项目的结束网格行位置。
    • grid-column: 定义项目所占的网格列的位置,可以同时设置起始和结束列。
      • grid-column-start: 定义项目的起始网格列位置。
      • grid-column-end: 定义项目的结束网格列位置。
  • order:用定义元素在 grid 容器中的排列顺序。默认值为 0,表示元素按照在 HTML 中的顺序排列。
  • gap: 用于设置网格布局中行和列之间的间距。
    • row-gap:用于设置网格布局中行之间的间距。
    • column-gap:用于设置网格布局中列之间的间距。
  • justify-content:用于控制网格行或列中的项目在主轴上的对齐方式。
    • flex-start:将项目对齐到主轴的起始位置。
    • flex-end:将项目对齐到主轴的末尾位置。
    • center:将项目居中对齐到主轴。
    • space-between:将项目均匀分布在主轴上,并在它们之间留出相等的间距。
    • space-around:将项目均匀分布在主轴上,并在它们和主轴的两端留出相等的间距。
    • space-evenly:将项目均匀分布在主轴上,并在它们和主轴的两端留出相同的间距。
    • stretch:将项目拉伸到主轴的长度。
  • justify-items:用于控制网格容器中的所有项目交叉轴上的对齐方式。
    • stretch:将项目拉伸到交叉轴的长度。
    • flex-start:将项目对齐到交叉轴的起始位置。
    • flex-end:将项目对齐到交叉轴的末尾位置。
    • center:将项目居中对齐到交叉轴。
    • space-between:将项目均匀分布在交叉轴上,并在它们之间留出相等的间距。
    • space-around:将项目均匀分布在交叉轴上,并在它们和交叉轴的两端留出相等的间距。
    • space-evenly:将项目均匀分布在交叉轴上,并在它们和交叉轴的两端留出相同的间距。
  • justify-self:用于控制单个网格项在交叉轴上的对齐方式。
    • auto:使用父容器的 justify-items 属性值。
    • flex-start:将项目对齐到交叉轴的起始位置。
    • flex-end:将项目对齐到交叉轴的末尾位置。
    • center:将项目居中对齐到交叉轴。
    • space-between:将项目均匀分布在交叉轴上,并在它们之间留出相等的间距。
    • space-around:将项目均匀分布在交叉轴上,并在它们和交叉轴的两端留出相等的间距。
    • space-evenly:将项目均匀分布在交叉轴上,并在它们和交叉轴的两端留出相同的间距。
    • stretch:将项目拉伸到交叉轴的长度。
  • align-content:用于控制网格容器中的所有项目在交叉轴上的对齐方式。
    • stretch:将项目拉伸到交叉轴的长度。
    • flex-start:将项目对齐到交叉轴的起始位置。
    • flex-end:将项目对齐到交叉轴的末尾位置。
    • center:将项目居中对齐到交叉轴。
    • space-between:将项目均匀分布在交叉轴上,并在它们之间留出相等的间距。
    • space-around:将项目均匀分布在交叉轴上,并在它们和交叉轴的两端留出相等的间距。
    • space-evenly:将项目均匀分布在交叉轴上,并在它们和交叉轴的两端留出相同的间距。
  • align-items:用于控制网格容器中同一行或列中的项目块轴上的对齐方式。
    • stretch:将项目拉伸到块轴的长度。
    • flex-start:将项目对齐到块轴的起始位置。
    • flex-end:将项目对齐到块轴的末尾位置。
    • center:将项目居中对齐到块轴。
    • space-between:将项目均匀分布在块轴上,并在它们之间留出相等的间距。
    • space-around:将项目均匀分布在块轴上,并在它们和块轴的两端留出相等的间距。
    • space-evenly:将项目均匀分布在块轴上,并在它们和块轴的两端留出相同的间距。
  • align-self:用于控制单个网格项块轴上的对齐方式。
    • auto:使用父容器的 align-items 属性值。
    • flex-start:将项目对齐到块轴的起始位置。
    • flex-end:将项目对齐到块轴的末尾位置。
    • center:将项目居中对齐到块轴。
    • space-between:将项目均匀分布在块轴上,并在它们之间留出相等的间距。
    • space-around:将项目均匀分布在块轴上,并在它们和块轴的两端留出相等的间距。
    • space-evenly:将项目均匀分布在块轴上,并在它们和块轴的两端留出相同的间距。
  • place-content: 定义 Grid 容器中的元素在容器中如何对齐和分配空间。
  • place-items: 定义 Grid 容器中的每个元素如何在其分配的空间内对齐。
  • place-self: 用于在 Grid 布局中控制单个元素在容器中的对齐和定位。

多列

  • column-fill: 用于设置如何填充列,以平衡内容在列中的高度。
  • column-gap: 用于设置列之间的间距。
  • column-span: 用于设置元素应跨越多少列。
  • column-rule: 用于列之间分隔线。
    • column-rule-color: 用于设置列之间分隔线的颜色。
    • column-rule-style: 用于设置列之间分隔线的样式,如实线、虚线等。
    • column-rule-width: 用于设置列之间分隔线的宽度。
  • columns: 用于定义多列布局的宽度和列数。
    • column-count: 用于设置元素的列数。
    • column-width: 用于设置列的宽度。

定位

  • top:物理属性,用于设置相对定位或绝对定位元素的顶部边缘与其包含块(对于相对定位)或文档窗口(对于绝对定位或固定定位)顶部的距离。
  • right:物理属性,用于设置相对定位或绝对定位元素的右侧边缘与其包含块(对于相对定位)或文档窗口(对于绝对定位或固定定位)右侧的距离。
  • bottom:物理属性,用于设置相对定位或绝对定位元素的底部边缘与其包含块(对于相对定位)或文档窗口(对于绝对定位或固定定位)底部的距离。
  • left:物理属性,用于设置相对定位或绝对定位元素的左侧边缘与其包含块(对于相对定位)或文档窗口(对于绝对定位或固定定位)左侧的距离。
  • inset:逻辑属性,用于设置元素相对于其包含块的定位,包含了 top、right、bottom 和 left 四个方向的值。
  • inset-inline:逻辑属性,用于设置元素在内联轴上的定位,对应于水平方向的定位。包含了 inset-inline-start 和 inset-inline-end 两个方向的值。
    • inset-inline-start:逻辑属性,用于设置元素在内联轴上的开始位置,对应于水平方向的定位。
    • inset-inline-end:逻辑属性,用于设置元素在内联轴上的结束位置,对应于水平方向的定位。
  • inset-block:逻辑属性,用于设置元素相对于其包含块的定位,包含了 top、bottom 两个方向的值。
    • inset-block-start:逻辑属性,用于设置元素在块轴上的开始位置,对应于垂直方向的定位。
    • inset-block-end:逻辑属性,用于设置元素在块轴上的结束位置,对应于垂直方向的定位。
  • float:用于使元素浮动,使其脱离文档流,并沿着包含块的左侧或右侧移动,直到遇到包含块或另一个浮动元素。
  • clear:用于指定元素的哪一侧不允许有浮动元素。通常用于解决浮动元素引起的父元素高度坍塌问题。
  • position:用于指定元素的定位方式。常见的值包括 relative、absolute、fixed 和 static。
  • z-index:用于设置元素的堆叠顺序,只针对拥有定位属性(position)的元素生效。

清除浮动float

  1. 使用clear属性: 在浮动元素之后的元素上应用clear属性,可以阻止它与前面的浮动元素在同一行显示。

    css
    .clear-element {
      clear: both; /* 或者 'left' 或 'right',取决于需要清除哪个方向的浮动 */
    }
  2. 空的清除元素: 通过添加一个空的元素,并在该元素上使用clear属性。这种方法虽然有效,但增加了额外的HTML标记。

    html
    <div class="floating-element"></div>
    <div class="clear"></div> <!-- 空的清除元素 -->
    css
    .clear {
      clear: both;
    }
  3. 使用伪元素清除浮动: 这种方法不需要额外的HTML元素。它使用:after伪元素在父容器的末尾创建一个看不见的元素,并应用clear属性。

    css
    .clearfix:after {
      content: "";
      display: table;
      clear: both;
    }
  4. 使用overflow属性: 设置父容器的overflow属性为auto或hidden(有时也可以是scroll),这可以使父容器扩展以包含浮动的子元素。

    css
    .parent {
      overflow: auto; /* 或 'hidden' */
    }
  5. 使用Flexbox或Grid布局: 使用现代的CSS布局系统,如Flexbox或Grid,可以避免浮动相关的问题。在这些布局中,清除浮动通常不再必要。

    css
    .container {
      display: flex; /* 或 'grid' */
    }

文档流

  1. 静态定位static
    • static 是所有元素的默认定位方式。
    • 元素按照正常的文档流进行布局,即元素在页面上的位置由它在HTML文档中的位置决定。
    • top, right, bottom, left 和 z-index 属性对静态定位的元素没有影响。
    • margin: auto 在水平方向上通常有效,可以使元素在其父元素中水平居中,前提是元素有确定的宽度。垂直方向上通常没有效果。
  2. 相对定位 relative
    • relative 定位的元素首先按照正常文档流放置,然后相对于其正常位置进行偏移。
    • 设置 top, right, bottom, left 属性可以控制元素相对于其正常位置的偏移。
    • 相对定位的元素仍保留在文档流中,即它原本占据的空间仍然保留。
    • margin: auto 在水平方向上通常有效,可以使元素在其父元素中水平居中,前提是元素有确定的宽度。垂直方向上通常没有效果。
  3. 绝对定位absolute
    • absolute 定位的元素被移出正常文档流,并相对于其最近的已定位(非 static)父级元素进行定位。
    • 如果没有已定位的父级元素,则将相对于浏览器(要先给浏览器设置高度为100vh)进行定位。
    • 可以使用 top, right, bottom, left 属性来指定位置。
    • 绝对定位的元素不占据原来的空间。
    • margin: auto 非常有用,特别是当与 top, right, bottom, left 结合使用时。如果元素的对立面(比如 left 和 right)都被设置了,margin: auto; 可以在水平或垂直方向上居中元素。
    • 子绝父相:让子元素相对于父元素进行自由移动
    • 子绝父绝:在使用子绝父相的时候,发现父元素已经有绝对定位了,此时直接设置子元素为绝对定位即可
  4. 固定定位fixed
    • fixed 定位的元素相对于浏览器窗口进行定位,即使窗口滚动,它也不会移动。
    • 它使用 top, right, bottom, left 属性来指定位置。
    • 固定定位的元素被移出正常文档流,不占据原来的空间。
    • 通常用于创建始终位于页面特定位置的UI元素,如固定顶部导航栏。
    • margin: auto 可以用来在水平或垂直方向上居中元素,尤其是当元素的对立面定位被指定时。
  5. 粘性定位sticky
    • sticky 定位是相对定位和固定定位的混合体。
    • 它根据用户的滚动位置相对于其最近的滚动祖先和包含块(最近的块级祖先)进行定位。
    • 当元素在视口内到达指定的位置时(通过 top, right, bottom, left 设置),它就像fixed定位一样“粘”在那个位置。
    • 当用户继续滚动时,它可能又回到文档流中,表现得像relative定位。
    • margin: auto; 的表现类似于相对定位。但是一旦元素变得“粘滞”,它的行为更像是固定定位的元素,尽管margin: auto在这种情况下不太常用。

居中对齐

  1. 水平居中
    • 对于行内或行内块元素(如文本或链接):使用 text-align: center; 在其父元素上。
    • 对于块级元素(如div):
      • 使用 margin: 0 auto; 来居中一个固定宽度的块元素。
      • 使用 display: flex; justify-content: center; 在父元素上实现弹性盒子布局中的居中。
      • 使用 display: grid; place-items: center; 在父元素上实现网格布局中的居中。
      • 使用定位(适用于绝对或相对定位元素):
        • 设置 position: absolute; left: 50%; 然后使用 transform: translateX(-50%); 来偏移元素。
        • 设置 position: absolute; left: 0; right: 0; margin: auto;
  2. 垂直居中
    • 对于行内元素或行内块元素:使用 line-height 当它和容器高度相等时,适用于单行文本。
    • 对于块级元素:
      • 使用 display: flex; align-items: center; 在父元素上实现弹性盒子布局中的居中。
      • 使用 display: grid; place-items: center; 在父元素上实现网格布局中的居中。
      • 使用定位和变换:
        • 设置 position: absolute; top: 50%; 然后使用 transform: translateY(-50%);
        • 设置 position: absolute; top: 0; bottom: 0; margin: auto;
    • 对于表格:父元素设置为 display: table;,子元素设置为 display: table-cell; vertical-align: middle;
  3. 水平和垂直居中
    • 使用Flexbox:父元素设置 display: flex; justify-content: center; align-items: center;
    • 使用Grid:父元素设置 display: grid; place-items: center;
    • 绝对定位和已知尺寸元素:设置 position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    • 绝对定位和未知尺寸元素:设置 position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto;

图形

  • shape-outside:定义了一个可以使文本环绕的形状。
  • shape-margin:定义了shape-outside形状周围的外边距,可以用来控制文本与形状的距离。
  • shape-image-threshold:用来设置使用 shape-outside 属性定义的图像时,图像的透明度阈值。

表格

  • border-collapse: 用于控制表格中相邻单元格的边框是否合并。
  • border-spacing: 用于设置表格元素的单元格之间的边框间距。
  • caption-side:用于设置表格标题的位置,决定标题是在表格的顶部还是底部显示。
  • empty-cells:用于控制表格中空单元格(即不包含内容的单元格)的边框显示方式
  • table-layout:用于控制表格的布局方式。

文本

  • hanging-punctuation:用于控制标点符号在行尾的位置。
  • hyphenate-limit-chars:用于指定在文本中的哪些字符位置可以进行断字(连字符处理)。
  • hyphenate-character:用于指定单词断字时的连字符(hyphen)的样式。
  • hyphens:用于控制是否允许单词在行尾处被拆分。
  • letter-spacing:用于调整文字之间的间距,即字母间距。
  • line-break:用于指定如何处理文本换行的规则。
  • line-height:用于指定文本行间的距离(行高)。
  • overflow-wrap:用于控制文本换行方式。
  • text-overflow: 用于指定当文本溢出包含元素时显示的省略标记。
  • tab-size:用于指定制表符(tab)的宽度。
  • text-align:用于设置文本的水平对齐方式。
  • text-align-last:用于设置多行文本的最后一行的对齐方式,特别是在使用 justify 对齐时。
  • text-indent:用于设置文本块的首行缩进。
  • text-justify:指定当 text-align 设置为 justify 时的对齐方法。
  • text-size-adjust:用于控制浏览器是否和如何调整文本的大小以提高可读性,主要用于移动设备。
  • text-transform:用于控制文本的大小写转换。
  • text-wrap:用于指定当单词太长而无法放入一行时的换行策略。
  • text-rendering:提供了控制文本渲染的方式,以优化速度、清晰度或几何精度。
  • text-decoration:用于设置文本的装饰效果,如下划线、删除线等。
    • text-decoration-color:用于指定文本装饰线的颜色。
    • text-decoration-line:用于指定应用到文本的装饰线的类型。
    • text-decoration-skip-ink:用于控制文本装饰(如下划线)是否应“跳过”字形的笔画。
    • text-decoration-style:定义了文本装饰线(如下划线、删除线)的样式。
    • text-decoration-thickness:用于设置文本装饰线的粗细。
  • text-emphasis:用于设置强调标记.
    • text-emphasis-color:用于设置强调标记的颜色。
    • text-emphasis-style:用于给文本添加强调标记(如圆点、圈、双圆点)。
    • text-emphasis-position:用于设置文本强调标记的位置。
  • text-shadow:文本添加阴影。
  • text-underline-offset:用于调整文本下划线的位置,相对于文字基线的偏移。
  • text-underline-position:用于设置下划线相对于文本的位置。
  • white-space:用于设置如何处理元素内的空白字符。
  • word-break:用于指定如何在单词内部进行换行。
  • word-spacing:用于设置单词之间的空间。
  • vertical-align:设置元素的垂直对齐方式。

单行文本溢出

css
white-space:nowrap; /* 文本不换行 */
overflow:hidden; /* 单行文本溢出隐藏 */
text-overflow:ellipsis; /* 单行文本溢出变为省略号 */

多行文本溢出

css
overflow: hidden; /* 多行文本溢出隐藏 */
text-overflow: ellipsis; /* 多行文本溢出变为省略号 */
display: -webkit-box;
-webkit-line-clamp: 2; /* 第几行文本变为省略号 */
-webkit-box-orient: vertical;

基线对齐

  • 只针对inline、inline-block、table有效;
  • 属性值top、middle、bottom,与line-height有关
  • 属性值baseline、text-top、text-bottom,与font-size有关

行高

  • 让单行文本垂直居中可以设置line-height: 文字父元素高度;
  • 网页精准布局时,会设置line-height: 1 可以取消上下间距;

变形

  • backface-visibility:用于在 3D 动画中指定一个元素的背面在旋转时是否可见。

  • matrix(a, b, c, d, e, f): 一个2D变换函数,将所有2D变换(平移、旋转、缩放和倾斜)组合成一个。参数代表这些变换的矩阵值。

  • matrix3d(...): matrix函数的3D版本,允许在3D空间中进行复杂的变换,包括所有3D变换函数。

  • perspective(n): 这个函数不直接修改元素,而是影响子元素的3D变换,通过提供深度感。参数定义了用户与z=0平面之间的距离。

  • perspective-origin:用于设置perspective属性定义的视角的起源点(即消失点)。

  • rotate(angle): 围绕其原点旋转元素。角度可以是度(deg)、弧度(rad)或梯度(grad)。

  • rotate3d(x, y, z, angle): 围绕由x、y和z参数定义的轴在3D空间中旋转元素。角度定义旋转的程度。

  • rotateX(angle): 围绕X轴旋转元素一个给定的角度。

  • rotateY(angle): 围绕Y轴旋转元素一个给定的角度。

  • rotateZ(angle): 围绕Z轴旋转元素一个给定的角度,实际上与2D旋转函数类似。

  • scale(x, y): 按给定的x(宽度)和y(高度)因子缩放元素。如果省略y值,假定它等于x。

  • scale3d(x, y, z): 在3D空间中缩放元素。它是沿X、Y和Z轴缩放的简写。

  • scaleX(factor): 按给定因子沿X轴缩放元素。

  • scaleY(factor): 按给定因子沿Y轴缩放元素。

  • scaleZ(factor): 沿Z轴缩放元素的给定因子,用于3D变换。

  • skew(x-angle, y-angle): 通过给定的x角度和y角度倾斜元素,沿X轴和/或Y轴扭曲元素。

  • skewX(angle): 按给定角度沿X轴倾斜元素。

  • skewY(angle): 按给定角度沿Y轴倾斜元素。

  • transform:用于设置元素二维或三维变换,包括旋转、缩放、倾斜等。

  • transform-box:定义变换作用于元素哪个区域。

  • transform-origin:定义变换的原点位置,即变换围绕哪个点进行。

  • transform-style:用于指定子元素是位于3D空间中还是被平面化。

  • translate(x, y): 按给定的x(水平)和y(垂直)距离移动元素。如果省略y,假定它为0。

  • translate3d(x, y, z): 在3D空间中移动元素。它是沿X、Y和Z轴平移的简写。

  • translateX(distance): 按给定距离沿X轴移动元素。

  • translateY(distance): 按给定距离沿Y轴移动元素。

  • translateZ(distance): 按给定距离沿Z轴移动元素,用于3D变换。

过渡

  • transition:用于在一定时间内平滑地改变一个或多个CSS属性的值。
  • transition-delay:单独指定在开始过渡效果之前等待的时间。
  • transition-duration:定义过渡效果花费的时间。
  • transition-property:指定应用过渡效果的CSS属性。
  • transition-timing-function:定义了过渡的速度曲线。
  • @starting-style

书写模式

  • direction:用于设置元素的文本方向。推荐使用 HTML dir 属性代替。
  • text-combine-upright:用于控制如何组合和显示垂直方向上的字符。
  • text-orientation:用于设置文本在垂直方向的方向和旋转方式。
  • unicode-bidi:控制如何处理文本的双向排列。
  • writing-mode:定义了文本的书写方向。

层叠与继承

  • all:所有 CSS 属性的简写属性,用于将所有元素的样式属性重置为其初始值或继承值。
    • initial: 将所有属性重置为它们的初始值。
    • inherit: 将所有属性设置为从父元素继承的值。
    • unset: 将所有属性重置为其继承值(如果有),否则重置为其初始值。
    • revert:用于撤销所有之前规则集对属性的更改,恢复到浏览器的默认样式。
    • revert-layer:用于恢复到特定层级的默认样式。

滚动条

  • scrollbar-color: 自定义滚动条的颜色。
  • scrollbar-gutter: 用于控制滚动容器周围的空间,以及是否应该保留额外的空间用于滚动条。
  • scrollbar-width 用于设置滚动条的宽度。
  • scroll-behavior:控制滚动时的流畅度和动画效果。
  • scroll-margin:用于设置元素的滚动边距。
    • scroll-margin-top:控制元素垂直滚动的顶部与视口顶部的边距。
    • scroll-margin-bottom:控制元素垂直滚动的底部与视口底部的边距。
    • scroll-margin-left:控制元素水平滚动的左侧与视口左侧的边距。
    • scroll-margin-right:控制元素水平滚动的右侧与视口右侧的边距。
  • scroll-margin-block:控制元素在块轴上的滚动边距。
    • scroll-margin-block-end:控制元素在块轴上的底部与视口底部的边距。
    • scroll-margin-block-start:控制元素在块轴上的顶部与视口顶部的边距。
  • scroll-margin-inline:控制元素在行内轴上的滚动边距。
    • scroll-margin-inline-end:控制元素在行内轴上滚动的右边与视口右边的边距。
    • scroll-margin-inline-start:控制元素在行内轴上滚动的左边与视口左边的边距。
  • scroll-padding:用于设置元素的滚动内边距。
    • scroll-padding-top:控制元素垂直滚动的顶部与视口顶部的内边距。
    • scroll-padding-bottom:控制元素垂直滚动的底部与视口底部的内边距。
    • scroll-padding-left:控制元素水平滚动的左侧与视口左侧的内边距。
    • scroll-padding-right:控制元素水平滚动的右侧与视口右侧的内边距。
  • scroll-padding-block:控制元素在块轴上的滚动内边距。
    • scroll-padding-block-end:控制元素在块轴上的底部与视口底部的内边距。
    • scroll-padding-block-start:控制元素在块轴上的顶部与视口顶部的内边距。
  • scroll-padding-inline:控制元素在行内轴上的滚动内边距。
    • scroll-padding-inline-end:控制元素在行内轴上滚动的右边与视口右边的内边距。
    • scroll-padding-inline-start:控制元素在行内轴上滚动的左边与视口左边的内边距。
  • scroll-snap-align:指定元素如何对齐到滚动容器的捕捉位置。
  • scroll-snap-stop:控制当用户滚动通过捕捉点时是否必须停止。
  • scroll-snap-type:设置滚动容器上的滚动捕捉行为。

其他

  • accent-color:用于定义元素强调色,如 <input type="checkbox"> <input type="radio"> <input type="range"> <progress>
  • appearance:指定用户代理(User Agent,例如浏览器)中表单控件(如按钮、输入框等)的外观样式。
  • caret-color:用于设置文本输入域(例如 input 和 textarea)中的文本插入光标 (caret) 的颜色。
  • cursor:用于设置鼠标指针的样式。
  • outline:用于设置一个元素的轮廓样式、宽度和颜色。
    • outline-color:用于指定轮廓的颜色。
    • outline-style:用于定义轮廓的样式。
    • outline-width:用于设置轮廓的宽度。
  • outline-offset:用于设置轮廓与元素边缘之间的距离。
  • pointer-events:用于控制元素穿透,如点赞全屏动画。
  • resize:调整元素(通常是<textarea>)的大小。
  • user-select:控制用户能否选中文本。
  • aspect-ratio: 用于设置元素盒子的宽高比。通常结合 object-fit 一起使用。
  • block-size: 用于设置元素在块轴(垂直方向)上的尺寸。对于水平书写模式(例如英语、拉丁语系语言):block-size 等同于 height,控制元素的垂直大小。对于垂直书写模式(例如日语、中文):block-size 等同于 width,控制元素的水平大小。
  • content:用于在伪元素中插入内容。
  • height: 用于设置元素的高度。
  • width: 用于设置元素的宽度。
  • inline-size:用于定义元素在行内方向的尺寸。
  • max-block-size: 逻辑属性,用于设置元素的最大块级方向尺寸(高度)。
  • max-inline-size: 逻辑属性,用于设置元素的最大内联方向尺寸(宽度)。
  • max-height: 设置元素的最大高度。
  • max-width: 设置元素的最大宽度。
  • min-block-size: 逻辑属性,用于设置元素的最小块轴方向尺寸(高度)。
  • min-inline-size: 逻辑属性,用于设置元素的最小内联轴方向尺寸(宽度)。
  • min-height: 设置元素的最小高度。
  • min-width: 设置元素的最小宽度。
  • opacity: 用于设置元素的不透明度。
  • overscroll-behavior:用于定义当滚动到容器的边界时是否应该将滚动事件传递给父容器(即滚动链),以及是否应该显示滚动边界反馈(如滚动条的弹跳效果)。
    • overscroll-behavior-x:控制水平方向的滚动边界行为。
    • overscroll-behavior-y:控制垂直方向的滚动边界行为。
  • overscroll-behavior-block:控制在块轴上的滚动边界行为。
  • overscroll-behavior-inline:控制在行内轴上的滚动边界行为。
  • page:指定元素的内容是否应该开启新页面。主要适用于分页媒体,如打印机。
  • page-break-after:指定元素后面是否强制换页。
  • page-break-before:指定元素前面是否强制换页。
  • page-break-inside:指定元素内部是否允许断页。
  • paint-order:用于控制SVG元素的填充(fill)、描边(stroke)和文本(markers)的绘制顺序。
  • quotes: 用于指定嵌入文本(如直接引语)的开头和结尾使用的引号类型。
  • touch-action:用于指定触摸屏用户如何操纵元素的区域。
  • visibility:用于控制元素是否可见,并且在网页中占位置。
  • will-change:用于提前告知浏览器元素可能会有哪些变化,这有助于浏览器优化渲染性能。

-moz-*

  • -moz-image-region(非标准):用于指定要显示的图像的矩形区域,有效地允许在样式中进行类似精灵图的行为。
  • -moz-orient(非标准):设置盒子中内容的方向。可以用来指定水平或垂直方向。
  • -moz-user-focus(非标准):用于控制用户与之交互时(例如,通过键盘导航)元素的焦点行为。

-webkit-*

  • -webkit-border-before(非标准):定义元素前边框的样式,类似于标准的 border 属性。
  • -webkit-box-reflect(非标准):创建元素的镜像反射效果,如模拟水面反射。
  • -webkit-line-clamp:限制在一个块元素中显示的文本行数。通常与 -webkit-box 属性一起使用来创建“多行文本溢出省略”效果。
  • -webkit-mask-attachment(非标准):定义遮罩图像是否固定(fixed)或者随对象内容滚动(scroll)。
  • -webkit-mask-box-image(非标准):一次性为整个元素设置遮罩图像。它能让你将一个图像设置为边框或盒子的遮罩,并定义如何分割和拉伸图像。
  • -webkit-mask-composite(非标准):确定多个遮罩层如何组合在一起。
  • -webkit-mask-position-x(非标准):指定遮罩图像在水平方向上的位置。
  • -webkit-mask-position-y(非标准):指定遮罩图像在垂直方向上的位置。
  • -webkit-mask-repeat-x(非标准):定义水平方向上遮罩图像是否应该重复。
  • -webkit-mask-repeat-y(非标准):定义垂直方向上遮罩图像是否应该重复。
  • -webkit-overflow-scrolling(非标准):控制在iOS设备上滚动容器的滚动行为。
  • -webkit-tap-highlight-color(非标准):改变触摸设备上链接或点击可点击元素时的高亮颜色。可以用来自定义或禁用触摸反馈颜色。
  • -webkit-text-fill-color:指定文本的填充颜色。常与 -webkit-text-stroke 一起使用来创建有特效的文本。
  • -webkit-text-security(非标准):改变密码输入框中字符的显示样式。可用于自定义密码字段的符号。
  • -webkit-text-stroke:定义文本的描边效果。
    • -webkit-text-stroke-color:定义文本的描边颜色。
    • -webkit-text-stroke-width:定义文本的描边宽度。
  • -webkit-touch-callout(非标准):控制当用户在iOS设备上触摸并按住元素时是否显示系统默认的菜单。

At-rules

  • @charset:定义样式表使用的字符编码。
  • @import:用于导入其他样式表。
  • @namespace:声明XML命名空间,用于XML文档中。
  • @font-face:定义一种字体,包括其源和样式。
  • @font-feature-values:定义字体特性的命名值。
  • @font-palette-values:定义字体调色板的值。
  • @color-profile:定义颜色配置文件。
  • @keyframes:定义动画的关键帧。
  • @container:定义容器查询的条件。
  • @media:定义媒体查询,根据不同的媒体类型和特征应用不同的样式。
  • @supports:检测浏览器是否支持某些CSS特性,并据此应用不同的样式。
  • @page:用于打印文档时设置页面的样式。
  • @counter-style:定义列表项和计数器的样式。
  • @layer:用于定义和管理样式层。
  • @property:用于注册自定义属性。

函数

  • abs():返回绝对值。
  • acos():返回反余弦值。
  • asin():返回反正弦值。
  • atan():返回反正切值。
  • atan2():返回两个参数的反正切值。
  • cos():返回余弦值。
  • exp():返回 e 的指数。
  • hypot():返回所有参数的平方和的平方根。
  • log():返回自然对数。
  • max():返回一系列值中的最大值。
  • min():返回一系列值中的最小值。
  • pow():返回数的指数幂。
  • rem():返回余数。
  • round():返回四舍五入后的值。
  • sign():返回数的符号。
  • sin():返回正弦值。
  • sqrt():返回平方根。
  • tan():返回正切值。
  • calc():进行数学计算,用于动态计算长度值。
  • clamp():根据最小值、最佳值和最大值限制一个范围。
  • fit-content():用于网格布局,使元素适应内容大小。
  • minmax():用于网格布局,定义最小和最大尺寸。
  • attr():返回元素属性的值。
  • counter()/counters():返回或格式化计数器的值。
  • env():获取环境变量的值。
  • symbols():定义列表项的符号样式。
  • var():引用自定义属性的值。
  • cross-fade():混合两个图像或颜色。
  • path():定义剪切路径或形状。
  • url():加载外部资源,如图像或字体文件。
  • mod():返回两个数相除的余数。
  • repeat():用于网格布局,重复某个模式。

数据类型

<absolute-size>

这是一个用于字体大小的关键字,它表示一组预定义的大小。这些大小是相对于用户代理(浏览器)的默认字体大小设置的。

  • xx-small:绝对大小为 medium 大小的 60%。
  • x-small:绝对大小为 medium 大小的 75%。
  • small:绝对大小为 medium 大小的 89%。
  • medium:用户首选的字体大小。该值用作参考中间值。
  • large:绝对大小比 medium 大 20%。
  • x-large:绝对大小比 medium 大 50%。
  • xx-large:绝对大小是 medium 大小的两倍。
  • xxx-large:绝对大小是 medium 大小的三倍。

<angle>

指一个角度值,用于定义各种属性中的角度,如旋转(rotate)或渐变方向(linear-gradient)。

  • deg:表示以度为单位的角度。一个完整的圆圈是 360deg 。示例:+*-9 0deg 、 90deg 、 14.23deg 。
  • grad:表示以弧度表示的角度。一个完整的圆圈是 400grad 。示例: 0grad 、 100grad 、 38.8grad 。
  • rad:表示以弧度表示的角度。一个完整的圆是 2π 弧度,近似于 6.2832rad 。 1rad 为 180/π 度。示例: 0rad 、 1.0708rad 、 6.2832rad 。
  • turn:表示转数内的角度。一个完整的圆圈是 1turn 。示例: 0turn 、 0.25turn 、 1.2turn 。

<basic-shape>

定义了一个基本形状,用于clip-path、shape-outside 和 offset-path属性。

  • inset():用于创建一个矩形形状。
  • circle():用于创建一个圆形形状。
  • ellipse():用于创建一个椭圆形状。
  • polygon():用于创建一个多边形形状。
  • path():用于定义一个由SVG路径数据指定的形状。

<blend-mode>

指定了一个混合模式,用于 background-blend-mode 和 mix-blend-mode 属性。

  • normal:默认模式。不应用任何混合,元素直接覆盖背景。
  • multiply:颜色相乘。结果是更暗的颜色。用于创建阴影效果。
  • screen:颜色相加,结果是更亮的颜色。常用于创建亮点和镜头光晕效果。
  • overlay:结合 multiply 和 screen 模式。根据背景颜色调整颜色。
  • darken:将较暗的颜色保留下来。类似于比较两个图层,然后选择较暗的颜色。
  • lighten:将较亮的颜色保留下来。选择两个图层中较亮的颜色。
  • color-dodge:通过减小对比度来增亮背景颜色。
  • color-burn:通过增加对比度来加深背景颜色。
  • hard-light:类似于 overlay,但是以源颜色(而不是背景颜色)为基础。
  • soft-light:创建软光效果。类似于天然光线照射。
  • difference:减去较暗颜色从较亮颜色中。
  • exclusion:类似于 difference,但对比度较低。
  • hue:将源图像的色调应用于背景。
  • saturation:将源图像的饱和度应用于背景。
  • color:将源图像的色调和饱和度应用于背景。
  • luminosity:将源图像的亮度应用于背景。

<box-edge>

  • content-box:指的是元素的内容区域,不包括内边距(padding)、边框(border)和外边距(margin)。在box-sizing属性中使用时,宽度和高度只包括内容区域。
  • border-box:包括内容区域、内边距和边框,但不包括外边距。在box-sizing属性中使用时,宽度和高度包括内容、内边距和边框。
  • padding-box:包括内容区域和内边距,但不包括边框和外边距。在background-clip或background-origin属性中使用时很有用。
  • margin-box:包括内容区域、内边距、边框和外边距。
  • fill-box:用于SVG图形,指的是应用填充(fill)的区域。通常用于transform-origin或background-size属性中。
  • stroke-box:用于SVG图形,指的是应用描边(stroke)的区域。用于transform-origin属性中,指定变换的原点为描边的范围。
  • view-box:用于SVG图形,指的是SVG的视图框(viewBox)。通常用于transform-origin属性中,指定变换的原点为SVG的整个视图框。

<calc-constant>

在calc()函数中使用的常数。

  • e:表示自然对数的底数(约等于2.718)。在CSS中,e不是一个内置常量,但可以在计算或自定义函数中作为近似值使用。
  • pi:表示圆周率π(约等于3.14159)。在CSS中,pi可以在与角度相关的计算中使用,例如,在turn单位(1turn = 2π rad = 360deg)的转换中。
  • infinity / -infinity:infinity代表正无穷大,而-infinity代表负无穷大。在CSS中,这些概念通常不直接使用,因为CSS的计算和属性值通常需要有限的、明确定义的值。
  • NaN:代表“非数字”(Not a Number)。在CSS中,如果某个计算或函数的结果不是有效的数字,它可能会返回NaN。例如,在除以零的情况下可能会遇到NaN。但在实际的CSS规则中,NaN通常不是一个有效的值,会导致规则被忽略。

<color>

表示一个颜色值。

  • 关键字:<named-color><system-color>、currentcolor
  • 十六进制:<hex-color>
  • 颜色空间函数
    • sRGB 色彩空间: hsl() 、 hwb() 、 rgb()
    • CIELAB 色彩空间: lab() 、 lch()
    • Oklab 色彩空间: oklab() 、 oklch()
    • 其他颜色空间: color()
  • 混合两种颜色:color-mix()
  • 指定两种颜色:light-dark()

<custom-ident>

表示一个自定义的标识符,由字母、数字、或者下划线组成的字符串,不能以数字或破折号加数字开头。通常用于定义变量名、动画名称、计数器名称、网格区域名称等。

css
/* 变量名称 */
:root { --main-color: black; }
element { color: var(--main-color); }

/* 动画名称 */
@keyframes myAnimation { ... }
element { animation-name: myAnimation; }

/* 计数器名称 */
body { counter-reset: section; }
h1 { counter-increment: section; }

/* 网格布局 */
.grid-container {
  grid-template-columns: [start] 1fr [middle] 1fr [end];
}

<generic-family>

用于 font 和 font-family 属性。

  • ui-serif / serif: 衬线字体在字母笔画的末端有小装饰,这些小线条称为衬线。衬线体通常被视为传统和正式,适用于印刷媒体,如书籍和报纸。常见的衬线字体包括Times New Roman和Georgia。
  • ui-sans-serif / sans-serif: 无衬线字体的笔画末端没有小装饰,线条清晰而简洁。它们通常被认为是现代和干净的,因此非常适用于数字屏幕和平面设计。常见的无衬线字体包括Arial和Helvetica。
  • ui-monospace / monospace: 等宽字体中每个字符占据相同的水平空间。这种字体常用于代码显示和文档,其中字母对齐是重要的。常见的等宽字体包括Courier New和Monaco。
  • cursive: 草书字体模仿人类的手写字迹,通常笔画连贯,有时倾斜。这种字体风格适用于更具艺术性或个性化的内容。然而,具体的草书字体在不同的操作系统或浏览器中可能会有很大差异。
  • fantasy: 幻想字体是具有独特和通常较为装饰性的字体,常用于标题或用于吸引注意力的文本。由于它们的装饰性和独特性,通常不适用于大段的正文文本。
  • system-ui:指示浏览器使用用户首选的系统字体,确保操作系统和应用程序之间具有一致的外观和感觉。
  • ui-rounded:从系统中选择圆角无衬线字体,具有柔和的边缘,外观更友好。
  • math:用于显示数学公式和符号。
  • emoji:用于显示表情符号。
  • fangsong:一种介于衬线宋体和草书楷体之间的特殊汉字风格。这种风格经常用于政府文件。

<length>

  • px: 最常用的长度单位,代表屏幕上的一个点。由于屏幕分辨率的不同,一个像素的实际大小也可能不同,但它提供了一种简单且具有一致性的度量方式。
  • em: 相对于当前元素的字体大小。例如,如果一个元素的字体大小是16px,那么1em就等于16px。它通常用于响应式设计,因为它可以根据父元素的字体大小动态缩放。
  • rem: 类似于em,但总是相对于根元素(html元素)的字体大小。这意味着无论嵌套结构如何,1rem总是等于根元素的字体大小。
  • vw/vh: 分别是视窗宽度和视窗高度的百分比。例如,50vw是视窗宽度的50%。这些单位对于创建响应式设计非常有用,因为它们可以根据视窗大小动态调整元素的大小。
  • vmin/vmax: 分别是视窗宽度和高度中较小值和较大值的百分比。它们在处理不同方向上的视窗尺寸变化时非常有用。
  • cm/mm/in: 这些是实际长度单位,通常用于打印媒介而不是屏幕显示。它们代表实际的物理尺寸。
  • pt: 传统印刷行业的长度单位,1pt等于1/72英寸。在屏幕显示上,点通常被视为等于像素。
  • %: 相对于另一个值的百分比,通常是父元素的尺寸。百分比单位非常适合创建大小随父容器变化的布局。

<line-style>

用于 border 和 column属性。

  • none: 无边框。这会使得元素看起来没有边框。
  • solid: 实线边框。这是最常见的边框样式,提供了一个连续的实线。
  • dotted: 点状边框。边框由一系列圆点组成。
  • dashed: 虚线边框。边框由一系列短线段组成。
  • double: 双线边框。边框由两个平行的实线组成,中间有空间。
  • groove: 3D凹槽样式。边框看起来像是被刻入元素中。
  • ridge: 3D脊状样式。边框看起来像是从元素中凸出来。
  • inset: 3D内嵌样式。边框给人一种元素被按下去的感觉。
  • outset: 3D突出样式。边框给人一种元素被拉出来的感觉。

<overflow>

用于 overflow、overflow-block、overflow-inline、overflow-x 和 overflow-y属性。

  • visible: 这是默认值。溢出的内容不会被剪裁,会呈现在元素框之外。
  • hidden: 溢出的内容会被剪裁,并且不可见。
  • scroll: 不论内容是否溢出,元素都会提供滚动条。如果内容溢出,则可以通过滚动查看剩余内容。
  • auto: 浏览器会根据内容是否溢出来决定是否提供滚动机制。如果内容不溢出,浏览器可能不会提供滚动条;如果内容溢出,浏览器将提供滚动条以便查看所有内容。

<relative-size>

用于 font 和 font-size 属性。

  • smaller:元素的大小将比其父元素小 120% 到 150%。
  • larger:元素的大小将比其父元素大 120% 到 150%。

读书、摄影、画画、弹琴、编程