首先, css的 -- 前缀通常被用在类中,是CSS中对变量声明的前缀。
:root{
--rotate-arrow:0;
--dropdown-height:0;
--list-opacity:0;
--translate-value:0;
--floating-icon-size:26;
--floating-icon-top:0;
--floating-icon-left:0;
另外,当--前缀被用在var函数中时,通过var函数调用自定义属性,设置旋转角度,var()可以代替元素中任何属性中的值的任何部分,var()函数可以读取变量,在CSS中当作且仅可当作属性值使用,可以放置第二个参数作为默认值:
.main-button .dropdown-arrow{
margin-left: 1.8rem;
transform: rotate(var(--rotate-arrow));
transition: transform 0.4s cubic-bezier(0.25,0.46,0.445,0.94);
}
1 :root {
--color-neutral-25: #FCFCFD;
--color-neutral-50: #F9FAFB;
--color-neutral-100: #F2F4F7;
--color-neutral-200: #E4E7EC;
--color-neutral-300: #D0D5DD;
--color-neutral-400: #98A2B3;
--color-neutral-500: #667085;
--color-neutral-600: #475467;
--color-neutral-700: #344054;
--color-neutral-800: #1D2939;
--color-neutral-900: #101828;
--color-primary-25: #FBFBFF;
--color-primary-50: #F6F6FE;
--color-primary-100: #ECECFD;
--color-primary-200: #DEDEFF;
--color-primary-300: #CCCCFA;
--color-primary-400: #B7B7FF;
--color-primary-500: #A0A0F5;
--color-primary-600: #8080F2;
--color-primary-700: #6358D4;
--color-primary-800: #4B32C3;
--color-primary-900: #341BAB;
--color-warning-25: #FFFCF5;
--color-warning-50: #FFFAEB;
--color-warning-100: #FEF0C7;
--color-warning-200: #FEDF89;
--color-warning-300: #FEC84B;
--color-warning-400: #FDB022;
--color-warning-500: #F79009;
--color-warning-600: #DC6803;
--color-warning-700: #B54708;
--color-warning-800: #93370D;
--color-warning-900: #7A2E0E;
--color-success-25: #F6FEF9;
--color-success-50: #ECFDF3;
--color-success-100: #D1FADF;
--color-success-200: #A6F4C5;
--color-success-300: #6CE9A6;
--color-success-400: #32D583;
--color-success-500: #12B76A;
--color-success-600: #039855;
--color-success-700: #027A48;
--color-success-800: #05603A;
--color-success-900: #054F31;
--color-rose-25: #FFF5F6;
--color-rose-50: #FFF1F3;
--color-rose-100: #FFE4E8;
--color-rose-200: #FECDD6;
--color-rose-300: #FEA3B4;
--color-rose-400: #FD6F8E;
--color-rose-500: #F63D68;
--color-rose-600: #E31B54;
--color-rose-700: #C01048;
--color-rose-800: #A11043;
--color-rose-900: #89123E;
--primary-button-background-color: var(--color-primary-800);
--primary-button-hover-color: var(--color-primary-900);
--primary-button-text-color: #fff;
--secondary-button-background-color: var(--color-primary-50);
--secondary-button-hover-color: var(--color-primary-100);
--secondary-button-text-color: var(--color-brand);
--ghost-button-background-color: var(--color-primary-50);
--ghost-button-text-color: var(--color-brand);
--color-brand: var(--color-primary-800);
--body-background-color: #fff;
--body-text-color: var(--color-neutral-500);
--headings-color: var(--color-neutral-900);
--border-color: var(--color-neutral-300);
--divider-color: var(--color-neutral-200);
--icon-color: var(--color-neutral-400);
--dark-icon-color: var(--color-neutral-500);
--link-color: var(--color-primary-800);
--lighter-background-color: var(--color-neutral-100);
--lightest-background-color: var(--color-neutral-50);
--docs-lightest-background-color: var(--color-primary-50);
--hero-background-color: var(--color-neutral-25);
--footer-background-color: var(--color-neutral-25);
--outline-color: var(--color-brand);
--editor-string-color: var(--color-warning-800);
--editor-comment-color: var(--color-success-700);
--editor-keyword-color: var(--color-primary-900);
--editor-name-color: var(--color-primary-700);
--editor-bracket-match-outline-color: var(--color-neutral-200);
--editor-bracket-match-background-color: var(--color-neutral-100);
--editor-bracket-match-color: none;
--editor-bracket-no-match-outline-color: var(--color-rose-500);
--editor-bracket-no-match-background-color: none;
--editor-bracket-no-match-color: none
}
@media(prefers-color-scheme: dark) {
:root {
--body-background-color: var(--color-neutral-900);
--body-text-color: var(--color-neutral-300);
--headings-color: #fff;
--divider-color: var(--color-neutral-600);
--border-color: var(--color-neutral-500);
--icon-color: var(--body-text-color);
--dark-icon-color: #fff;
--link-color: var(--color-primary-400);
--lighter-background-color: var(--color-neutral-800);
--lightest-background-color: var(--color-neutral-800);
--docs-lightest-background-color: var(--color-neutral-800);
--hero-background-color: var(--color-neutral-800);
--footer-background-color: var(--color-neutral-800);
--outline-color: #fff;
--editor-string-color: var(--color-warning-300);
--editor-comment-color: var(--color-success-500);
--editor-keyword-color: var(--color-primary-500);
--editor-name-color: var(--color-primary-300);
--editor-bracket-match-outline-color: var(--color-neutral-600);
--editor-bracket-match-background-color: var(--color-neutral-700);
--editor-bracket-match-color: var(--color-neutral-25)
}
}
html[data-theme=light] {
--body-background-color: #fff;
--body-text-color: var(--color-neutral-500);
--headings-color: var(--color-neutral-900);
--border-color: var(--color-neutral-300);
--divider-color: var(--color-neutral-200);
--icon-color: var(--color-neutral-400);
--dark-icon-color: var(--color-neutral-500);
--link-color: var(--color-primary-800);
--lighter-background-color: var(--color-neutral-100);
--lightest-background-color: var(--color-neutral-50);
--docs-lightest-background-color: var(--color-primary-50);
--hero-background-color: var(--color-neutral-25);
--footer-background-color: var(--color-neutral-25);
--outline-color: var(--color-brand);
--editor-string-color: var(--color-warning-800);
--editor-comment-color: var(--color-success-700);
--editor-keyword-color: var(--color-primary-900);
--editor-name-color: var(--color-primary-700);
--editor-bracket-match-outline-color: var(--color-neutral-200);
--editor-bracket-match-background-color: var(--color-neutral-100);
--editor-bracket-match-color: none
}
html[data-theme=dark] {
--body-background-color: var(--color-neutral-900);
--body-text-color: var(--color-neutral-300);
--headings-color: #fff;
--divider-color: var(--color-neutral-600);
--border-color: var(--color-neutral-500);
--icon-color: var(--body-text-color);
--dark-icon-color: #fff;
--link-color: var(--color-primary-400);
--lighter-background-color: var(--color-neutral-800);
--lightest-background-color: var(--color-neutral-800);
--docs-lightest-background-color: var(--color-neutral-800);
--hero-background-color: var(--color-neutral-800);
--footer-background-color: var(--color-neutral-800);
--outline-color: #fff;
--editor-string-color: var(--color-warning-300);
--editor-comment-color: var(--color-success-500);
--editor-keyword-color: var(--color-primary-500);
--editor-name-color: var(--color-primary-300);
--editor-bracket-match-outline-color: var(--color-neutral-600);
--editor-bracket-match-background-color: var(--color-neutral-700);
--editor-bracket-match-color: var(--color-neutral-25)
}
:root {
--fc-3xs-min: (var(--fc-s-min) * 0.25);
--fc-3xs-max: (var(--fc-s-max) * 0.25);
--fc-2xs-min: (var(--fc-s-min) * 0.5);
--fc-2xs-max: (var(--fc-s-max) * 0.5);
--fc-xs-min: (var(--fc-s-min) * 0.75);
--fc-xs-max: (var(--fc-s-max) * 0.75);
--fc-s-min: (var(--f-0-min));
--fc-s-max: (var(--f-0-max));
--fc-m-min: (var(--fc-s-min) * 1.5);
--fc-m-max: (var(--fc-s-max) * 1.5);
--fc-l-min: (var(--fc-s-min) * 2);
--fc-l-max: (var(--fc-s-max) * 2);
--fc-xl-min: (var(--fc-s-min) * 3);
--fc-xl-max: (var(--fc-s-max) * 3);
--fc-2xl-min: (var(--fc-s-min) * 4);
--fc-2xl-max: (var(--fc-s-max) * 4);
--fc-3xl-min: (var(--fc-s-min) * 6);
--fc-3xl-max: (var(--fc-s-max) * 6);
--fc-4xl-min: (var(--fc-s-min) * 8);
--fc-4xl-max: (var(--fc-s-max) * 8);
--space-3xs: calc(((var(--fc-3xs-min) / 16) * 1rem) + (var(--fc-3xs-max) - var(--fc-3xs-min)) * var(--fluid-bp));
--space-2xs: calc(((var(--fc-2xs-min) / 16) * 1rem) + (var(--fc-2xs-max) - var(--fc-2xs-min)) * var(--fluid-bp));
--space-xs: calc(((var(--fc-xs-min) / 16) * 1rem) + (var(--fc-xs-max) - var(--fc-xs-min)) * var(--fluid-bp));
--space-s: calc(((var(--fc-s-min) / 16) * 1rem) + (var(--fc-s-max) - var(--fc-s-min)) * var(--fluid-bp));
--space-m: calc(((var(--fc-m-min) / 16) * 1rem) + (var(--fc-m-max) - var(--fc-m-min)) * var(--fluid-bp));
--space-l: calc(((var(--fc-l-min) / 16) * 1rem) + (var(--fc-l-max) - var(--fc-l-min)) * var(--fluid-bp));
--space-xl: calc(((var(--fc-xl-min) / 16) * 1rem) + (var(--fc-xl-max) - var(--fc-xl-min)) * var(--fluid-bp));
--space-2xl: calc(((var(--fc-2xl-min) / 16) * 1rem) + (var(--fc-2xl-max) - var(--fc-2xl-min)) * var(--fluid-bp));
--space-3xl: calc(((var(--fc-3xl-min) / 16) * 1rem) + (var(--fc-3xl-max) - var(--fc-3xl-min)) * var(--fluid-bp));
--space-4xl: calc(((var(--fc-4xl-min) / 16) * 1rem) + (var(--fc-4xl-max) - var(--fc-4xl-min)) * var(--fluid-bp));
--space-3xs-2xs: calc(((var(--fc-3xs-min) / 16) * 1rem) + (var(--fc-2xs-max) - var(--fc-3xs-min)) * var(--fluid-bp));
--space-2xs-xs: calc(((var(--fc-2xs-min) / 16) * 1rem) + (var(--fc-xs-max) - var(--fc-2xs-min)) * var(--fluid-bp));
--space-xs-s: calc(((var(--fc-xs-min) / 16) * 1rem) + (var(--fc-s-max) - var(--fc-xs-min)) * var(--fluid-bp));
--space-s-m: calc(((var(--fc-s-min) / 16) * 1rem) + (var(--fc-m-max) - var(--fc-s-min)) * var(--fluid-bp));
--space-m-l: calc(((var(--fc-m-min) / 16) * 1rem) + (var(--fc-l-max) - var(--fc-m-min)) * var(--fluid-bp));
--space-l-xl: calc(((var(--fc-l-min) / 16) * 1rem) + (var(--fc-xl-max) - var(--fc-l-min)) * var(--fluid-bp));
--space-xl-2xl: calc(((var(--fc-xl-min) / 16) * 1rem) + (var(--fc-2xl-max) - var(--fc-xl-min)) * var(--fluid-bp));
--space-2xl-3xl: calc(((var(--fc-2xl-min) / 16) * 1rem) + (var(--fc-3xl-max) - var(--fc-2xl-min)) * var(--fluid-bp));
--space-3xl-4xl: calc(((var(--fc-3xl-min) / 16) * 1rem) + (var(--fc-4xl-max) - var(--fc-3xl-min)) * var(--fluid-bp));
--space-l-2xl: calc(((var(--fc-l-min) / 16) * 1rem) + (var(--fc-2xl-max) - var(--fc-l-min)) * var(--fluid-bp));
--space-xl-3xl: calc(((var(--fc-xl-min) / 16) * 1rem) + (var(--fc-3xl-max) - var(--fc-xl-min)) * var(--fluid-bp));
--space-xl-4xl: calc(((var(--fc-xl-min) / 16) * 1rem) + (var(--fc-4xl-max) - var(--fc-xl-min)) * var(--fluid-bp));
--spacer-2x: 2rem;
--spacer-3x: 3rem;
--spacer-4x: 4rem;
--spacer-6x: 6rem;
--spacer-8x: 8rem
}
:root {
--fluid-min-width: 320;
--fluid-max-width: 1280;
--fluid-screen: 100vw;
--fluid-bp: calc((var(--fluid-screen) - var(--fluid-min-width) / 16 * 1rem) / (var(--fluid-max-width) - var(--fluid-min-width)))
}
@media screen and (min-width: 1280px) {
:root {
--fluid-screen: calc(var(--fluid-max-width) * 1px)
}
}
:root {
--f--2-min: 12.64;
--f--2-max: 10.24;
--step--2: calc(((var(--f--2-min) / 16) * 1rem) + (var(--f--2-max) - var(--f--2-min)) * var(--fluid-bp));
--f--1-min: 14.22;
--f--1-max: 12.80;
--step--1: calc(((var(--f--1-min) / 16) * 1rem) + (var(--f--1-max) - var(--f--1-min)) * var(--fluid-bp));
--f-0-min: 16.00;
--f-0-max: 16.00;
--step-0: calc(((var(--f-0-min) / 16) * 1rem) + (var(--f-0-max) - var(--f-0-min)) * var(--fluid-bp));
--f-1-min: 18.00;
--f-1-max: 20.00;
--step-1: calc(((var(--f-1-min) / 16) * 1rem) + (var(--f-1-max) - var(--f-1-min)) * var(--fluid-bp));
--f-2-min: 20.25;
--f-2-max: 25.00;
--step-2: calc(((var(--f-2-min) / 16) * 1rem) + (var(--f-2-max) - var(--f-2-min)) * var(--fluid-bp));
--f-3-min: 22.78;
--f-3-max: 31.25;
--step-3: calc(((var(--f-3-min) / 16) * 1rem) + (var(--f-3-max) - var(--f-3-min)) * var(--fluid-bp));
--f-4-min: 25.63;
--f-4-max: 39.06;
--step-4: calc(((var(--f-4-min) / 16) * 1rem) + (var(--f-4-max) - var(--f-4-min)) * var(--fluid-bp));
--f-5-min: 28.83;
--f-5-max: 48.83;
--step-5: calc(((var(--f-5-min) / 16) * 1rem) + (var(--f-5-max) - var(--f-5-min)) * var(--fluid-bp));
--f-6-min: 32.44;
--f-6-max: 61.04;
--step-6: calc(((var(--f-6-min) / 16) * 1rem) + (var(--f-6-max) - var(--f-6-min)) * var(--fluid-bp))
}
:root {
--mono-font: "Mono Punctuators", "Space Mono", monospace;
--text-font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Twemoji Country Flags", "Segoe UI Emoji", "Segoe UI Symbol";
--display-font: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"
}
:root {
--shadow-lg: 0 12px 16px -4px rgba(16, 24, 40, 0.1), 0 4px 6px -2px rgba(16, 24, 40, 0.05);
--shadow-xs: 0 1px 2px rgba(16, 24, 40, 0.05);
--border-radius: .5rem
}
::selection {
background-color: var(--color-brand);
color: #fff
}
h1:target,
h2:target,
h3:target,
h4:target,
h5:target,
h6:target {
background-color: var(--lighter-background-color)
}
*:focus {
outline: none
}
*:focus-visible {
outline: 2px solid var(--outline-color);
outline-offset: 3px
}
*.focus-visible {
outline: 2px solid var(--outline-color);
outline-offset: 3px
}
*:focus:not(:focus-visible) {
outline: 1px solid transparent;
box-shadow: none
}
.js-focus-visible *:focus:not(.focus-visible) {
outline: 1px solid transparent;
box-shadow: none
}
input:focus-visible {
outline: 2px solid var(--link-color);
border-color: var(--border-color)
}
input:focus {
outline: 2px solid transparent;
box-shadow: 0 0 0 2px var(--link-color)
}
*,
*::before,
*::after {
box-sizing: border-box
}
html {
accent-color: var(--link-color);
background-color: var(--body-background-color);
height: 100%;
font-family: var(--text-font);
overflow-x: hidden;
caret-color: var(--link-color)
}
body {
position: relative;
margin: 0 auto;
line-height: 1.5;
display: flex;
flex-direction: column;
min-height: 100%;
background-color: var(--body-background-color);
color: var(--body-text-color)
}
#skip-link {
position: fixed;
top: -30em;
left: 0;
right: auto;
offset-block-start: -30em;
offset-inline-start: 0;
offset-inline-end: auto;
z-index: 999;
transition: top .1s linear
}
#skip-link:focus {
outline: 2px solid transparent;
top: 2px;
offset-block-start: 2px
}
#skip-link:focus-visible {
outline: 2px solid transparent;
top: 2px;
offset-block-start: 2px
}
main {
flex: 1
}
main:focus {
outline: none
}
main:target {
outline: none
}
.content-container {
width: 100%;
max-width: 1280px;
margin: 0 auto;
padding: var(--space-xl-3xl) calc(1rem + 1vw)
}
.section-head .section-supporting-text {
text-align: center;
max-width: 768px;
margin: 0 auto var(--space-l-2xl)
}
.section-foot {
margin-top: var(--space-l-2xl);
margin-block-start: var(--space-l-2xl)
}
.section-foot .section-supporting-text {
text-align: center;
font-size: var(--step--1);
max-width: 768px;
margin: 0 auto
}
.section-title {
margin-bottom: 1rem;
margin-block-end: 1rem
}
.section-supporting-text {
font-size: var(--step-1)
}
hr {
border: none;
border-top: 1px solid var(--divider-color);
border-block-start: 1px solid var(--divider-color);
background: none;
height: 0;
margin: 2rem 0
}
code,
pre {
font-family: var(--mono-font)
}
code {
color: var(--link-color)
}
pre code {
color: unset
}
p:empty {
display: none;
margin: 0
}
.c-icon {
color: var(--icon-color);
flex: none;
transition: all .2s linear
}
@media(-ms-high-contrast: active) {
.c-icon {
color: windowText
}
}
@media(forced-colors: active) {
.c-icon {
color: canvasText
}
}
table {
width: 100%;
margin: 2.5rem 0;
border-collapse: collapse;
border: 1px solid var(--divider-color)
}
table td {
padding: .25rem .5rem;
border: 1px solid var(--divider-color)
}
table th {
background-color: var(--lightest-background-color);
padding: .25rem .5rem
}
.c-btn .c-icon:hover,
button .c-icon:hover,
a .c-icon:hover {
color: var(--link-color)
}
a {
color: var(--link-color);
transition: color .1s linear
}
.side-header a {
color: inherit;
text-decoration: none
}
svg {
flex: none;
transition: color .1s linear
}
p {
margin: 0 0 1.5em
}
:matches(nav, .posts-collection) p {
margin-bottom: .75em;
margin-block-end: .75em
}
p,
h1,
h2,
h3,
h4,
h5,
h6 {
overflow-wrap: break-word
}
ul,
ol {
margin-top: 0;
margin-block-start: 0
}
ul li,
ol li {
margin: 0 0 .75em
}
.person__bio ul,
.person__bio ol {
padding-left: 1.5rem;
padding-inline-start: 1.5rem
}
.docs-main ul,
.post-main ul,
.docs-main ol,
.post-main ol {
margin: 1rem 0
}
ul[role=list] {
list-style: none;
margin: 0;
padding: 0
}
ul[role=list] li {
margin: 0
}
ol {
list-style: decimal
}
ol li::marker {
color: var(--link-color)
}
p:empty {
margin: 0;
display: none
}
figure {
margin-bottom: 4rem;
margin-block-end: 4rem
}
figure img {
margin-bottom: 1rem;
margin-block-end: 1rem
}
figure figcaption {
color: var(--grey)
}
img {
display: block;
position: relative;
max-width: 100%;
height: auto
}
nav ol,
nav ul {
list-style: none;
margin: 0;
padding: 0
}
.video {
width: 90%;
max-width: 1400px;
margin: 2em auto
}
.video iframe {
aspect-ratio: 16/9;
width: 100%;
height: auto
}