CSS 3 Cheat Sheet - 快速参考指南,收录常用语法、命令与实践。
CSS is rich in capabilities and is more than simply laying out pages.
<link href="./path/to/stylesheet/style.css" rel="stylesheet" type="text/css" />
<style>
body {
background-color: linen;
}
</style>
<h2 style="text-align: center;">Centered text</h2>
<p style="color: blue; font-size: 18px;">Blue, 18-point text</p>
<div class="classname"></div>
<div class="class1 classn ..."></div>
Support multiple classes on one element.
.post-title {
color: blue !important;
}
Overrides all previous styling rules.
h1 {
}
#job-title {
}
div.hero {
}
div > p {
}
See: Selectors
color: #2a2aff;
color: green;
color: rgb(34, 12, 64, 0.6);
color: hsla(30 100% 50% / 0.6);
See: Colors
background-color: blue;
background-image: url('nyan-cat.gif');
background-image: url('../image.png');
See: Backgrounds
.page-title {
font-weight: bold;
font-size: 30px;
font-family: 'Courier New';
}
See: Fonts
.box {
position: relative;
top: 20px;
left: 20px;
}
See also: Position
animation: 300ms linear 0s infinite;
animation: bounce 300ms linear infinite;
See: Animation
/* This is a single line comment */
/* This is a
multi-line comment */
div {
display: flex;
justify-content: center;
}
div {
display: flex;
justify-content: flex-start;
}
See: Flexbox | Flex Tricks
#container {
display: grid;
grid: repeat(2, 60px) / auto-flow 80px;
}
#container > div {
background-color: #8ca0ff;
width: 50px;
height: 50px;
}
See: Grid Layout
counter-set: subsection;
counter-increment: subsection;
counter-reset: subsection 0;
:root {
--bg-color: brown;
}
element {
background-color: var(--bg-color);
}
See: Dynamic content
h1,
h2 {
color: red;
}
h3.section-heading {
color: blue;
}
div[attribute='SomeValue'] {
background-color: red;
}
p:first-child {
font-weight: bold;
}
.box:empty {
background: lime;
height: 80px;
width: 80px;
}
| | |
| -------------------- | ---------------------------------- | ---------------------------- |
| a[target] | With a <yel>target</yel> attribute |
| a[target="_blank"] | Open in new tab |
| a[href^="/index"] | Starts with <yel>/index</yel> |
| [class | ="chair"] | Starts with <yel>chair</yel> |
| [class*="chair"] | containing <yel>chair</yel> |
| [title~="chair"] | Contains the word <yel>chair</yel> |
| a[href$=".doc"] | Ends with <yel>.doc</yel> |
| [type="button"] | Specified type |
See also: Attribute selectors
a:link | Link in normal state |
a:active | Link in clicked state |
a:hover | Link with mouse over it |
a:visited | Visited link |
p::after | Add content after p |
p::before | Add content before p |
p::first-letter | First letter in p |
p::first-line | First line in p |
::selection | Selected by user |
::placeholder | Placeholder attribute |
:root | Documents root element |
:target | Highlight active anchor |
div:empty | Element with no children |
p:lang(en) | P with en language attribute |
:not(span) | Element that's not a span |
input:checked | Checked inputs |
input:disabled | Disabled inputs |
input:enabled | Enabled inputs |
input:focus | Input has focus |
input:in-range | Value in range |
input:out-of-range | Input value out of range |
input:valid | Input with valid value |
input:invalid | Input with invalid value |
input:optional | No required attribute |
input:required | Input with required attribute |
input:read-only | With readonly attribute |
input:read-write | No readonly attribute |
input:indeterminate | With indeterminate state |
p:first-child | First child |
p:last-child | Last child |
p:first-of-type | First of some type |
p:last-of-type | Last of some type |
p:nth-child(2) | Second child of its parent |
p:nth-child(3n42) | Nth-child (an + b) formula |
p:nth-last-child(2) | Second child from behind |
p:nth-of-type(2) | Second p of its parent |
p:nth-last-of-type(2) | ...from behind |
p:only-of-type | Unique of its parent |
p:only-child | Only child of its parent |
| Property | Description |
|---|---|
font-family: | <font> <fontN> |
font-size: | <size> |
letter-spacing: | <size> |
line-height: | <number> |
| font-weight: | <number> / bold / normal | | font-style: | italic / normal | | text-decoration: | underline /
none |
| text-align: | left / right<br>center / justify | | text-transform: | capitalize / uppercase / lowercase |
{.left-text}
See also: Font
| style | weight | size (required) | line-height | family | ||
|---|---|---|---|---|---|---|
font: | italic | 400 | 14px | / | 1.5 | sans-serif |
| style | weight | size (required) | line-height | family (required) |
font-family: Arial, sans-serif;
font-size: 12pt;
letter-spacing: 0.02em;
/* Hello */
text-transform: capitalize;
/* HELLO */
text-transform: uppercase;
/* hello */
text-transform: lowercase;
@font-face {
font-family: 'Glegoo';
src: url('../Glegoo.woff');
}
color: red;
color: orange;
color: tan;
color: rebeccapurple;
color: #090;
color: #009900;
color: #090a;
color: #009900aa;
color: rgb(34, 12, 64, 0.6);
color: rgba(34, 12, 64, 0.6);
color: rgb(34 12 64 / 0.6);
color: rgba(34 12 64 / 0.3);
color: rgb(34 12 64 / 60%);
color: rgba(34.6 12 64 / 30%);
color: hsl(30, 100%, 50%, 0.6);
color: hsla(30, 100%, 50%, 0.6);
color: hsl(30 100% 50% / 0.6);
color: hsla(30 100% 50% / 0.6);
color: hsl(30 100% 50% / 60%);
color: hsla(30.2 100% 50% / 60%);
color: inherit;
color: initial;
color: unset;
color: transparent;
color: currentcolor; /* keyword */
| Property | Description |
|---|---|
background: | (Shorthand) |
| background-color: | See: Colors | | background-image: | url(...) | | background-position: |
left/center/right<br/>top/center/bottom | | background-size: | cover X Y | | background-clip: |
border-box<br/>padding-box<br/>content-box | | background-repeat: | no-repeat<br/>repeat-x<br/>repeat-y | |
background-attachment: | scroll/fixed/local | {.left-text}
| color | image | positionX | positionY | size | repeat | attachment | ||
|---|---|---|---|---|---|---|---|---|
background: | #ff0 | url(a.jpg) | left | top | / | 100px auto | no-repeat | fixed; |
background: | #abc | url(b.png) | center | center | / | cover | repeat-x | local; |
| color | image | posX | posY | size | repeat | attach.. |
background: url(img_man.jpg) no-repeat center;
background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
background: rgb(2, 0, 36);
background: linear-gradient(
90deg,
rgba(2, 0, 36, 1) 0%,
rgba(13, 232, 230, 1) 35%,
rgba(0, 212, 255, 1) 100%
);
.column {
max-width: 200px;
width: 500px;
}
See also: max-width / min-width / max-height / min-height
.container {
box-sizing: border-box;
}
See also: Box-sizing
.invisible-elements {
visibility: hidden;
}
See also: Visibility
div {
margin: auto;
}
See also: Margin
.small-block {
overflow: scroll;
}
See also: Overflow
| name | duration | timing-function | delay | count | direction | fill-mode | play-state | |
|---|---|---|---|---|---|---|---|---|
animation: | bounce | 300ms | linear | 100ms | infinite | alternate-reverse | both | reverse |
| name | duration | timing-function | delay | count | direction | fill-mode | play-state |
| Property | Value |
|---|---|
animation: | (shorthand) |
animation-name: | <name> |
animation-duration: | <time>ms |
animation-timing-function: | ease / linear / ease-in / ease-out / ease-in-out |
animation-delay: | <time>ms |
animation-iteration-count: | infinite / <number> |
animation-direction: | normal / reverse / alternate / alternate-reverse |
animation-fill-mode: | none / forwards / backwards / both / initial / inherit |
animation-play-state: | normal / reverse / alternate / alternate-reverse |
{.left-text}
See also: Animation
/* @keyframes duration | timing-function | delay |
iteration-count | direction | fill-mode | play-state | name */
animation: 3s ease-in 1s 2 reverse both paused slidein;
/* @keyframes duration | timing-function | delay | name */
animation: 3s linear 1s slidein;
/* @keyframes duration | name */
animation: 3s slidein;
animation: 4s linear 0s infinite alternate move_eye;
animation: bounce 300ms linear 0s infinite normal;
animation: bounce 300ms linear infinite;
animation: bounce 300ms linear infinite alternate-reverse;
animation: bounce 300ms linear 2s infinite alternate-reverse forwards normal;
.one('webkitAnimationEnd oanimationend msAnimationEnd animationend')
.container {
display: flex;
}
.container > div {
flex: 1 1 auto;
}
.container {
display: flex;
display: inline-flex;
flex-direction: row; /* ltr - default */
flex-direction: row-reverse; /* rtl */
flex-direction: column; /* top-bottom */
flex-direction: column-reverse; /* bottom-top */
flex-wrap: nowrap; /* one-line */
flex-wrap: wrap; /* multi-line */
align-items: flex-start; /* vertical-align to top */
align-items: flex-end; /* vertical-align to bottom */
align-items: center; /* vertical-align to center */
align-items: stretch; /* same height on all (default) */
justify-content: flex-start; /* [xxx ] */
justify-content: center; /* [ xxx ] */
justify-content: flex-end; /* [ xxx] */
justify-content: space-between; /* [x x x] */
justify-content: space-around; /* [ x x x ] */
justify-content: space-evenly; /* [ x x x ] */
}
.container > div {
/* This: */
flex: 1 0 auto;
/* Is equivalent to this: */
flex-grow: 1;
flex-shrink: 0;
flex-basis: auto;
order: 1;
align-self: flex-start; /* left */
margin-left: auto; /* right */
}
.container {
display: flex;
}
.container > div {
width: 100px;
height: 100px;
margin: auto;
}
.container {
display: flex;
/* vertical */
align-items: center;
/* horizontal */
justify-content: center;
}
.container > .top {
order: 1;
}
.container > .bottom {
order: 2;
}
.container {
display: flex;
flex-direction: column;
}
.container > .top {
flex: 0 0 100px;
}
.container > .content {
flex: 1 0 auto;
}
A fixed-height top bar and a dynamic-height content area.
.container {
display: flex;
}
/* the 'px' values here are just suggested percentages */
.container > .checkbox {
flex: 1 0 20px;
}
.container > .subject {
flex: 1 0 400px;
}
.container > .date {
flex: 1 0 120px;
}
This creates columns that have different widths, but size accordingly according to the circumstances.
.container {
align-items: center;
}
Vertically-center all items.
.menu > .left {
align-self: flex-start;
}
.menu > .right {
align-self: flex-end;
}
#grid-container {
display: grid;
width: 100px;
grid-template-columns: 20px 20% 60%;
}
.grid {
display: grid;
width: 100px;
grid-template-columns: 1fr 60px 1fr;
}
/*The distance between rows is 20px*/
/*The distance between columns is 10px*/
#grid-container {
display: grid;
grid-gap: 20px 10px;
}
#grid-container {
display: block;
}
CSS syntax:
.item {
grid-row: 1 / span 2;
}
#grid-container {
display: inline-grid;
}
.grid {
display: grid;
grid-template-columns: 100px minmax(100px, 500px) 100px;
}
CSS syntax:
grid-row-start: 2;
grid-row-end: span 2;
grid-row-gap: length;
Any legal length value, like px or %. 0 is the default value
.item1 {
grid-area: 2 / 1 / span 2 / span 3;
}
#container {
display: grid;
justify-items: center;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-gap: 10px;
}
.item {
grid-area: nav;
}
.grid-container {
display: grid;
grid-template-areas:
'nav nav . .'
'nav nav . .';
}
#grid-container {
display: grid;
justify-items: start;
}
.grid-items {
justify-self: end;
}
The grid items are positioned to the right (end) of the row.
#container {
display: grid;
align-items: start;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-gap: 10px;
}
Define CSS Variable
:root {
--first-color: #16f;
--second-color: #ff7;
}
Variable Usage
#firstParagraph {
background-color: var(--first-color);
color: var(--second-color);
}
See also: CSS Variable
/* Set "my-counter" to 0 */
counter-set: my-counter;
/* Increment "my-counter" by 1 */
counter-increment: my-counter;
/* Decrement "my-counter" by 1 */
counter-increment: my-counter -1;
/* Reset "my-counter" to 0 */
counter-reset: my-counter;
See also: Counter set
body {
counter-reset: section;
}
h3::before {
counter-increment: section;
content: 'Section.' counter(section);
}
ol {
counter-reset: section;
list-marker-type: none;
}
li::before {
counter-increment: section;
content: counters(section, '.') ' ';
}
html {
scroll-behavior: smooth;
}
Click me, the page will scroll smoothly to Getting started
.element-wrap {
container: element / inline-size;
}
@container element (min-inline-size: 300px) {
.element {
display: flex;
gap: 1rem;
}
}
.container {
--variant: 1;
&.variant2 {
--variant: 2;
}
}
@container style(--variant: 1) {
button {
} /* You can't style .container, but can select inside it */
.other-things {
}
}
@container style(--variant: 2) {
button {
}
.whatever {
}
}
.card {
padding: 5cqi;
font-size: 4cqi;
border: 1cqi solid brown;
height: 100%;
}
h2 {
font-size: 10cqi;
margin-block: 0 3cqi;
}
figure:has(figcaption) {
border: 1px solid black;
padding: 0.5rem;
}
.cards {
.card {
& .card-description {
color: blue;
}
& .card-title {
color: red;
}
}
}
@scope {
:scope {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
padding: 1rem;
border: 1px solid black;
}
.card {
padding: 1rem;
border: 1px solid black;
background: lightgray;
h2 {
margin: 0 0 1rem 0;
}
}
}
/* Specify the order to apply styles in cascade */
@layer legacyCard, newCard;
/* Imagine you have a lot of styles */
@layer newCard {
.card {
background-color: red;
}
}
@layer legacyCard {
.card {
background-color: green;
}
}
button {
background-color: #4caf50;
border: none;
color: white;
padding: 0.5rem 1.5rem;
text-decoration: none;
font: inherit;
border-radius: 4px;
.icon {
position: relative;
top: 0.125em;
fill: white;
width: 1em;
aspect-ratio: 1;
margin-inline-end: 0.25rem;
}
}
<div class="container">
<div class="swatch">
<style contenteditable>
@scope {
:scope {
background-color: color(display-p3 1 0.5 0);
}
}
</style>
</div>
<div class="swatch">
<style contenteditable>
@scope {
:scope {
background-color: oklch(61.88% 0.286 342.4);
}
}
</style>
</div>
<div class="swatch">
<style contenteditable>
@scope {
:scope {
background-color: oklab(0.73 0.15 0.16);
}
}
</style>
</div>
<div class="swatch">
<style contenteditable>
@scope {
:scope {
background-image: linear-gradient(to right in oklch, red, blue);
}
}
</style>
</div>
<div class="swatch">
<style contenteditable>
@scope {
:scope {
background-image: linear-gradient(to right in oklab, red, blue);
}
}
</style>
</div>
<div class="swatch">
<style contenteditable>
@scope {
:scope {
background-image: linear-gradient(to right in srgb, red, blue);
}
}
</style>
</div>
</div>
.swatch {
color: white;
width: 100px;
aspect-ratio: 1;
display: grid;
place-items: center;
text-align: center;
&:nth-child(1) {
background-color: var(--bg);
}
&:nth-child(2) {
background-color: color-mix(in oklch, var(--bg), black 30%);
}
&:nth-child(3) {
background-color: color-mix(in oklch, var(--bg), white 30%);
}
}
.container {
/* prevent "extra" margin at the end of the element */
margin-trim: block-end;
/* an element like this might be the culprit, but it could be anything */
> p {
margin-block-end: 1rem;
}
}
.balance {
text-wrap: balance;
}
.pretty {
text-wrap: pretty;
}
html {
font-family: system-ui, sans-serif;
}
main {
max-inline-size: 60ch;
margin-inline: auto;
}
.grid {
display: grid;
grid-template-columns: repeat(9, 1fr);
grid-template-rows: repeat(4, minmax(100px, auto));
}
.item {
display: grid;
grid-column: 2 / 7;
grid-row: 2 / 4;
grid-template-columns: subgrid;
grid-template-rows: repeat(3, 80px);
}
.subitem {
grid-column: 3 / 6;
grid-row: 1 / 3;
}
地址
Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)Level 2, 171 La Trobe St, Melbourne VIC 3000四川省成都市武侯区桂溪街道天府大道中段500号D5东方希望天祥广场B座45A13号Business Hub, 155 Waymouth St, Adelaide SA 5000Disclaimer
JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.
匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议
© 2017-2025 JR Academy Pty Ltd. All rights reserved.
ABN 26621887572