è¿æ¯ä¸ä»½å ³äº CSS ä¼ç¹çå¿«éåèå¤å¿åï¼ååºäºéæ©å¨è¯æ³ã屿§ãåä½åå ¶ä»æç¨çä¿¡æ¯
CSS åè½ä¸°å¯ï¼ä¸ä» ä» æ¯å¸å±é¡µé¢
<link><link
href="./path/to/stylesheet/style.css"
rel="stylesheet"
type="text/css"
>
<style><style>
body {
background-color: linen;
}
</style>
style<h2 style="text-align: center;">
å±
䏿æ¬
</h2>
<p style="color: blue; font-size: 18px;">
èè²ï¼18åç´ ææ¬
</p>
<div class="classname"></div>
<div class="class1 ... classn"></div>
æ¯æä¸ä¸ªå ç´ ä¸çå¤ä¸ªç±»
.post-title {
color: blue !important;
}
è¦çææä»¥åçæ ·å¼è§å
h1 { }
#job-title { }
div.hero { }
div > p { }
æ¥ç: CSS éæ©å¨
color: #2a2aff;
color: green;
color: rgb(34, 12, 64, 0.6);
color: hsla(30 100% 50% / 0.6);
æ¥ç: Colors
background-color: blue;
background-image: url("nyan-cat.gif");
background-image: url("../image.png");
æ¥ç: Backgrounds
.page-title {
font-weight: bold;
font-size: 30px;
font-family: "Courier New";
}
æ¥ç: Fonts
.box {
position: relative;
top: 20px;
left: 20px;
}
å¦è§: Position
animation: 300ms linear 0s infinite;
animation: bounce 300ms linear infinite;
æ¥ç: Animation
/* è¿æ¯ä¸è¡æ³¨é */
/* è¿æ¯
å¤è¡æ³¨é */
div {
display: flex;
justify-content: center;
}
div {
display: flex;
justify-content: flex-start;
}
æ¥ç: Flexbox | Flex Tricks
#container {
display: grid;
grid: repeat(2, 60px) / auto-flow 80px;
}
#container > div {
background-color: #8ca0ff;
width: 50px;
height: 50px;
}
æ¥ç: Grid Layout
counter-set: subsection;
counter-increment: subsection;
counter-reset: subsection 0;
:root {
--bg-color: brown;
}
element {
background-color: var(--bg-color);
}
æ¥ç: 卿å 容
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;
}
| éæ©å¨ | 说æ |
|---|---|
div.classname | å ·æç¹å®ç±»åç div |
div#idname | å ·æç¹å® ID ç div |
div p | div ä¸çæææ®µè½ |
div > p | ç¶å
ç´ æ¯ div ç P æ ç¾ |
div + p | div ä¹åç第ä¸ä¸ªå级 P æ ç¾ |
div ~ p | div ä¹åææçå级 P æ ç¾ |
å¦è§: ç¸é»å å¼ / éç¨å å¼ / å éæ©å¨
| éæ©å¨ | 说æ |
|---|---|
a[target] | 带æ |
a[target="_blank"] | 卿°æ ç¾ä¸æå¼ # |
a[href^="/index"] | 以 |
[class|="chair"] | 以 |
[class*="chair"] | å
å« |
[title~="chair"] | å
å«åè¯ |
a[href$=".doc"] | 以 |
[type="button"] | æå®ç±»å # |
å¦è§: 屿§éæ©å¨
| éæ©å¨ | 说æ |
|---|---|
a:link | 龿¥æ£å¸¸ # |
a:active | 龿¥å¤äºç¹å»ç¶æ # |
a:hover | é¼ æ æ¬å龿¥ # |
a:visited | 访é®é¾æ¥ # |
/* æªè®¿é®é¾æ¥ */
a:link { color: blue; }
/* 已访é®é¾æ¥ */
a:visited { color: purple; }
/* ç¨æ·é¼ æ æ¬å */
a:hover { background: yellow; }
/* æ¿æ´»é¾æ¥ */
a:active { color: red; }
| éæ©å¨ | 说æ |
|---|---|
p::after | å¨ p ä¹åæ·»å å 容 # |
p::before | å¨ p ä¹åæ·»å å 容 # |
p::first-letter | pä¸ç第ä¸ä¸ªåæ¯ # |
p::first-line | p ä¸ç第ä¸è¡ # |
::selection | ç±ç¨æ·éæ© # |
::placeholder | å ä½ç¬¦ 屿§ # |
:root | ææ¡£æ ¹å ç´ # |
:target | çªåºæ¾ç¤ºæ´»å¨éç¹ # |
div:empty | 没æåå ç´ çå ç´ # |
p:lang(en) | 带æ en è¯è¨å±æ§ç P # |
:not(span) | 䏿¯è·¨åº¦çå ç´ # |
:host | shadowDOM ä¸éæ©èªå®ä¹å ç´ # |
::backdrop | å¤äºå ¨å±æ¨¡å¼çå ç´ æ ·å¼ # |
::marker | li 项ç®ç¬¦å·æè
æ°å # |
::file-selector-button | type="file" input æé® # |
| éæ©å¨ | 说æ |
|---|---|
input:checked | æ£æ¥ input # |
input:disabled | ç¦ç¨ input # |
input:enabled | å¯ç¨ç input # |
input:default | æé»è®¤å¼çå ç´ # |
input:blank | 空çè¾å ¥æ¡ # |
input:focus | input æç¦ç¹ # |
input:in-range | èå´å çå¼ # |
input:out-of-range | input å¼è¶
åºèå´ # |
input:valid | input ææå¼ # |
input:invalid | input æ æå¼ # |
input:optional | 没æå¿ éç屿§ # |
input:required | 带æå¿
é屿§ç input # |
input:read-only | å ·æåªè¯»å±æ§ # |
input:read-write | 没æåªè¯»å±æ§ # |
input:indeterminate | 带æ indeterminate ç¶æ # |
| éæ©å¨ | 说æ |
|---|---|
p:first-child | 第ä¸ä¸ªå©å # |
p:last-child | æåä¸ä¸ªå©å # |
p:first-of-type | 第ä¸ä¸ª p ç±»åçå ç´ # |
p:last-of-type | æç§ç±»åçæåä¸ä¸ª # |
p:nth-child(2) | å ¶ç¶æ¯ç第äºä¸ªå©å # |
p:nth-child(3n42) | Nth-child(an + b) å ¬å¼ # |
p:nth-last-child(2) | åé¢çäºå© # |
p:nth-of-type(2) | å ¶ç¶çº§ç第äºä¸ª p # |
p:nth-last-of-type(2) | ...ä»åé¢ # |
p:only-of-type | å ¶ç¶çº§çå¯ä¸æ§ # |
p:only-child | å ¶ç¶æ¯çå¯ä¸å©å # |
:is(header, div) p | å¯ä»¥éæ©çå ç´ # |
:where(header, div) p | ä¸ :is ç¸å # |
a:has(> img) | å
å« img å
ç´ ç a å
ç´ # |
::first-letter | 第ä¸è¡ç第ä¸ä¸ªåæ¯ # |
::first-line | 第ä¸è¡åºç¨æ ·å¼ # |
| 屿§ | 说æ |
|---|---|
font-family: | å使åæéç¨å使å # |
font-size: | åä½çå¤§å° # |
letter-spacing: | ææ¬å符çé´è· # |
line-height: | å¤è¡ææ¬é´è· # |
font-weight: | ç²ç»ç¨åº¦ # |
font-style: | å使 ·å¼ # |
text-decoration: | ææ¬ç修饰线å¤è§ # |
text-align: | ç¸å¯¹å®çåç¶å ç´ å¯¹é½ # |
text-transform: | æå®ææ¬å¤§å°å # |
å¦è§: Font
font: italic 400 14px / 1.5 sans-serif
âââ¬âââ ââ¬â ââ¬ââ ââ¬â ââ¬ââââââââ
æ ·å¼ ç²ç» 大å°(å¿
éç) è¡é« åä½(å¿
éç)
font-family: Arial, sans-serif;
font-size: 12pt;
letter-spacing: 0.02em;
div {
/* é¦åæ¯å¤§å 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.0 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.0 100% 50% / 60%);
color: hsla(30.2 100% 50% / 60%);
color: inherit;
color: initial;
color: unset;
color: transparent;
color: currentcolor; /* å
³é®å */
/* å
¨å±å¼ */
color: inherit;
color: initial;
color: unset;
| 屿§ | 说æ |
|---|---|
background: | (éè®°) |
background-color: | æ¥ç: Colors |
background-image: | ä¸ä¸ªæè å¤ä¸ªèæ¯å¾å |
background-position: | èæ¯å¾ç设置åå§ä½ç½® |
background-size: | èæ¯å¾çå¤§å° |
background-clip: | èæ¯(å¾çæé¢è²)æ¯å¦å»¶ä¼¸å°è¾¹æ¡ãå è¾¹è·çåãå 容çåä¸é¢ |
background-repeat: | å¾åé夿¹å¼ |
background-attachment: | scroll/fixed/local |
background: #ff0 url(a.jpg) left top / 100px auto no-repeat fixed;
#abc url(b.png) center center / cover repeat-x local;
ââ¬ââ ââ¬âââââââ ââ¬ââ ââ¬â âââ¬âââââââ âââ¬ââââââ âââ¬âââ
é¢è² å¾ç ä½ç½®x ä½ç½®x å¾çå¤§å° å¾åé夿¹å¼ ä½ç½®æ¯å¨è§å£å
åºå®
background: url(img_flwr.gif) right bottom no-repeat, url(paper.gif) left top repeat;
background: url(img_man.jpg) no-repeat center;
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; /* æå¤§å®½åº¦ 200 åç´ */
width: 500px; /* 宽度 500 åç´ */
}
å¦è§: max-width / min-width / max-height / min-height
.block-one {
margin: 20px; /* è¾¹è· 20 åç´ */
padding: 10px; /* è¡¥ç½ 10 åç´ */
}
å¦è§: è¾¹è·(margin) / è¡¥ç½(padding)
.container {
/* 设置çè¾¹æ¡åè¡¥ç½ç弿¯å
å«å¨ width å
ç */
box-sizing: border-box;
}
å¦è§: box-sizing
.invisible-elements {
visibility: hidden; /* éèå
ç´ */
}
å¦è§: Visibility
div {
/* è§å¨èªå·±éæ©ä¸ä¸ªåéçå¤è¾¹è· */
margin: auto;
}
å¦è§: è¾¹è·(margin)
.small-block {
/* æµè§å¨æ»æ¯æ¾ç¤ºæ»å¨æ¡ */
overflow: scroll;
}
å¦è§: 溢åº(overflow)
animation: bounce 300ms linear 100ms infinite alternate-reverse both reverse
ââ¬ââ ââ¬âââ ââ¬ââââ âââ¬ââ ââââ¬ââââ âââ¬ââââââââââââââ âââ¬âââ âââ¬âââ
å¨ç»å å¨ç»æ¶é´ ç¼å¨å½æ° å»¶è¿ è¿è¡çæ¬¡æ° å¨ç»æ¯å¦ååææ¾ å¦ä½å°æ ·å¼åºç¨äºå
¶ç®æ æ¯å¦è¿è¡æè
æå
| 屿§ | 说æ |
|---|---|
animation: | (éè®°) |
animation-name: | å¨ç»å # |
animation-duration: | å¨ç»å¨æçæ¶é¿ # |
animation-timing-function: | ç¼å¨å½æ° # |
animation-delay: | å»¶è¿ # |
animation-iteration-count: | è¿è¡çæ¬¡æ° # |
animation-direction: | å¨ç»æ¯å¦ååææ¾ # |
animation-fill-mode: | å¦ä½å°æ ·å¼åºç¨äºå ¶ç®æ # |
animation-play-state: | æ¯å¦è¿è¡æè æå # |
å¦è§: å¨ç»(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 - è¡(å·¦åå³) â¶ */
flex-direction: row-reverse; /* rtl - è¡(å³åå·¦) â */
flex-direction: column; /* top-bottom â¼ */
flex-direction: column-reverse; /* bottom-top â² */
flex-wrap: nowrap; /* ææ¾å°ä¸è¡ */
flex-wrap: wrap; /* 被ææå°å¤ä¸ªè¡ä¸ */
align-items: flex-start; /* åç´å¯¹é½ - é¡¶é¨ */
align-items: flex-end; /* åç´å¯¹é½ - åºé¨ */
align-items: center; /* åç´å¯¹é½ - ä¸é´ */
align-items: stretch; /* ææäººé½ä¸æ ·çé«åº¦ (é»è®¤) */
justify-content: flex-start; /* [âââ ] */
justify-content: center; /* [ â â â ] */
justify-content: flex-end; /* [ â¶â¶â¶] */
justify-content: space-between; /* [â â â¶] */
justify-content: space-around; /* [ â â â ] */
justify-content: space-evenly; /* [ â â â ] */
}
.container > div {
/* è¿ä¸ª: */
flex: 1 0 auto;
/* ç¸å½äºè¿ä¸ªï¼ */
flex-grow: 1;
flex-shrink: 0;
flex-basis: auto;
order: 1;
align-self: flex-start; /* left */
margin-left: auto; /* right */
}
justify-content: flex-start | flex-end | center | space-between
flex-startï¼å·¦å¯¹é½(é»è®¤å¼)
âââââââââââââââââââââââââââââââââââ®
âââââ®âââ®âââââ® â
ââ°âââ¯â°ââ¯â°âââ⯠â
â°ââââââââââââââââââââââââââââââââââ¯
flex-endï¼å³å¯¹é½
âââââââââââââââââââââââââââââââââââ®
â ââââ®âââ®âââââ®â
â â°âââ¯â°ââ¯â°ââââ¯â
â°ââââââââââââââââââââââââââââââââââ¯
centerï¼ å±
ä¸
âââââââââââââââââââââââââââââââââââ®
â ââââ®âââ®âââââ® â
â â°âââ¯â°ââ¯â°âââ⯠â
â°ââââââââââââââââââââââââââââââââââ¯
space-betweenï¼ä¸¤ç«¯å¯¹é½ï¼é¡¹ç®ä¹é´çé´éé½ç¸ç
âââââââââââââââââââââââââââââââââââ®
âââââ® âââ® âââââ®â
ââ°ââ⯠â°â⯠â°ââââ¯â
â°ââââââââââââââââââââââââââââââââââ¯
space-aroundï¼æ¯ä¸ªé¡¹ç®ä¸¤ä¾§çé´éç¸çï¼é¡¹ç®ä¹é´çé´éæ¯é¡¹ç®ä¸è¾¹æ¡çé´é大ä¸å
âââââââââââââââââââââââââââââââââââ®
â ââââ® âââ® âââââ® â
â â°ââ⯠â°â⯠â°âââ⯠â
â°ââââââââââââââââââââââââââââââââââ¯
ä¸é¢ç¤ºä¾ï¼å设主轴为ä»å·¦å°å³
flex-wrap: nowrap | wrap | wrap-reverse;
nowrapï¼ä¸æ¢è¡(é»è®¤)
â1â®â2â®â3â®â4â®â5â®â6â®â7â®â8â®â9â®â10â®
â°ââ¯â°ââ¯â°ââ¯â°ââ¯â°ââ¯â°ââ¯â°ââ¯â°ââ¯â°ââ¯â°âââ¯
wrapï¼æ¢è¡ï¼ç¬¬ä¸è¡å¨ 䏿¹
â1ââ® â2ââ® â3ââ® â4ââ® â5ââ® â6ââ® â7ââ®
â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°âââ¯
â8ââ® â9ââ® â10â®
â°ââ⯠â°ââ⯠â°âââ¯
wrap-reverseï¼æ¢è¡ï¼ç¬¬ä¸è¡å¨ 䏿¹
â8ââ® â9ââ® â10â®
â°ââ⯠â°ââ⯠â°âââ¯
â1ââ® â2ââ® â3ââ® â4ââ® â5ââ® â6ââ® â7ââ®
â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°âââ¯
项ç®é½æå¨ä¸æ¡çº¿ï¼åç§°"轴线"ï¼ä¸
flex-direction: row | row-reverse | column | column-reverse;
ââââ® â² ââââ® â
â°ââ⯠â â°ââ⯠â
ââââ® â ââââ® â
â°ââ⯠â â°ââ⯠â ââââââââââââ¶ ââââââââââââ
ââââ® â ââââ® â ââââ® ââââ® ââââ® ââââ® ââââ® ââââ®
â°ââ⯠â â°ââ⯠⼠â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â°âââ¯
ââ¬ââââââ ââ¬ââââââ ââ¬âââââââââââ ââ¬âââââââââââ
column-reverse column row row-reverse
屿§å³å®ä¸»è½´çæ¹åï¼å³é¡¹ç®çæåæ¹åï¼
align-items: flex-start | flex-end | center | baseline | stretch;
â¶ flex-start(èµ·ç¹å¯¹é½) â¶ flex-end(ç»ç¹å¯¹é½)
âââââââââââââââââââââââ® âââââââââââââââââââââââ®
â ââââ® ââââ® ââââ® ââââ® â â â
â â â â â â°ââ⯠â â â â ââââ® â
â â°ââ⯠â â â°ââ⯠â â ââââ® â â ââââ® â
â â°ââ⯠â â â â â â ââââ® â â â
â â â â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â
â°âââââââââââââââââââââ⯠â°ââââââââââââââââââââââ¯
â¶ center(ä¸ç¹å¯¹é½) â¶ stretch(å æ»¡æ´ä¸ªå®¹å¨çé«åº¦)
âââââââââââââââââââââââ® âââââââââââââââââââââââ®
â ââââ® â â ââââ® ââââ® ââââ® ââââ® â
â ââââ® â â ââââ® â â â â â â â â â â â
â â â â â ââââ® â â â â â â â â â â â â â
â â â â â â°ââ⯠â â â â â â â â â â â â â
â â°ââ⯠â â â°ââ⯠â â â â â â â â â â â
â â°ââ⯠â â â°ââ⯠â°ââ⯠â°ââ⯠â°ââ⯠â
â°âââââââââââââââââââââ⯠â°ââââââââââââââââââââââ¯
â¶ baseline(第ä¸è¡æåçåºçº¿å¯¹é½)
ââââââââââââââââââââââââââââââââââââââââââââââââ®
â ââââââââ® ââââââââ® â
â â â ââââââ® ââââââ® â â ââââââ®ââââââ®â
â â text â âtextâ âtextâ â text â âtextââtextââ
â â â â°ââââ⯠â â â â â°âââââ¯â ââ
â â°ââââââ⯠â°ââââ⯠â°ââââââ⯠â°âââââ¯â
â â
â°âââââââââââââââââââââââââââââââââââââââââââââââ¯
align-content: flex-start | flex-end | center | space-between | space-around | stretch;
â¶ flex-start(èµ·ç¹å¯¹é½) â¶ flex-end(ç»ç¹å¯¹é½)
ââââââââââââââââââââââââ® ââââââââââââââââââââââââ®
â ââââ®âââ®âââââ®ââ®ââââââ® â â â
â â°âââ¯â°ââ¯â°ââââ¯â°â¯â°ââââ⯠â â ââââ®âââ®âââââ®ââ®ââââââ® â
â âââââ®ââ® â â â°âââ¯â°ââ¯â°ââââ¯â°â¯â°ââââ⯠â
â â°ââââ¯â°â¯ â â âââââ®ââ® â
â â â â°ââââ¯â°â¯ â
â°ââââââââââââââââââââââ⯠â°âââââââââââââââââââââââ¯
â¶ center(ä¸ç¹å¯¹é½) â¶ stretch(满æ´ä¸ªäº¤åè½´)
ââââââââââââââââââââââââ® ââââââââââââââââââââââââ®
â â â ââââ®âââ®âââââ®ââ®ââââââ® â
â ââââ®âââ®âââââ®ââ®ââââââ® â â â ââ ââ ââââ â â
â â°âââ¯â°ââ¯â°ââââ¯â°â¯â°ââââ⯠â â â°âââ¯â°ââ¯â°ââââ¯â°â¯â°ââââ⯠â
â âââââ®ââ® â â âââââ®ââ®âââ® â
â â°ââââ¯â°â¯ â â â ââââ â â
â â â â°ââââ¯â°â¯â°â⯠â
â°ââââââââââââââââââââââ⯠â°âââââââââââââââââââââââ¯
â¶ space-between(两端对é½) â¶ space-around(åååå¸é¡¹ç®)
ââââââââââââââââââââââââ® ââââââââââââââââââââââââ®
â ââââ®ââââ®ââââ®ââââ®ââââ® â â â
â â°âââ¯â°âââ¯â°âââ¯â°âââ¯â°ââ⯠â â ââââ®ââââ®ââââ®ââââ®ââââ® â
â â â â°âââ¯â°âââ¯â°âââ¯â°âââ¯â°ââ⯠â
â â â â
â â â ââââ® â
â ââââ® â â â°ââ⯠â
â â°ââ⯠â â â
â°ââââââââââââââââââââââ⯠â°âââââââââââââââââââââââ¯
.item {
order: <integer>;
}
ââââââââââââââââââââââââââââââââââ® âââââââââââ®
â â1ââ® â1âââ® â1ââ® â2ââ® â3âââââââ® â â â2âââââ® â
â â°ââ⯠â°âââ⯠â°ââ⯠â°ââ⯠â°âââââââ⯠â â â°âââââ⯠â
â°ââââââââââââââââââââââââââââââââ⯠â â2âââââ® â
ââââââââââââââââââââââââââââââââââ® â â°âââââ⯠â
â â-âââ® âââââ® ââââââââââ® âââââ® â â â99ââââ® â
â â-1 â â 1 â â 2 â â 5 â â â â â â
â â°âââ⯠â°âââ⯠â°ââââââââ⯠â°âââ⯠â â â°âââââ⯠â
â°ââââââââââââââââââââââââââââââââ⯠â°ââââââââââ¯
屿§ order å®ä¹é¡¹ç®çæå顺åºãæ°å¼è¶å°ï¼æåè¶é åï¼é»è®¤ä¸º 0
.item {
flex-grow: <number>; /* default 0 */
}
âââââââââââââââââââââââââ®
â âââ1âââ®âââ2âââ®âââ1âââ® â
â â°ââââââ¯â°ââââââ¯â°âââââ⯠â
â°ââââââââââââââââââââââââ¯
âââââââââââââââââââââââââ®
â ââ1ââ®âââââ2âââââ®ââ1ââ® â
â â°ââââ¯â°ââââââââââ¯â°âââ⯠â
â°ââââââââââââââââââââââââ¯
屿§ flex-grow å®ä¹é¡¹ç®çæ¾å¤§æ¯ä¾ï¼é»è®¤ä¸º0ï¼å³å¦æåå¨å©ä½ç©ºé´ï¼ä¹ä¸æ¾å¤§
.container {
display: flex;
}
.container > div {
width: 100px;
height: 100px;
margin: auto;
}
.container {
display: flex;
/* åç´ç */
align-items: center;
/* æ°´å¹³ç */
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;
}
ä¸ä¸ªåºå®é«åº¦ç顶鍿 åä¸ä¸ªå¨æé«åº¦çå 容åºå
.container {
display: flex;
}
/* è¿éçâpxâå¼åªæ¯å»ºè®®çç¾åæ¯ */
.container > .checkbox { flex: 1 0 20px; }
.container > .subject { flex: 1 0 400px; }
.container > .date { flex: 1 0 120px; }
è¿ä¼åå»ºå ·æä¸å宽度çåï¼ä½ä¼æ ¹æ®æ åµç¸åºå°è°æ´å¤§å°
.container {
align-items: center;
}
åç´å± 䏿æé¡¹ç®
.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;
}
/* è¡é´è·ä¸º 20px */
/* åä¹é´çè·ç¦»æ¯ 10px */
#grid-container {
display: grid;
grid-gap: 20px 10px;
}
CSS è¯æ³:
.item {
grid-row: 1 / span 2;
}
#grid-container {
display: block;
}
#grid-container {
display: inline-grid;
}
grid-row-gap: length;
ä»»ä½åæ³çé¿åº¦å¼ï¼ä¾å¦ px æ %ã0 æ¯é»è®¤å¼
.item1 {
grid-area: 2 / 1 / span 2 / span 3;
}
.grid {
display: grid;
grid-template-columns: 100px minmax(100px, 500px) 100px;
}
å®ä¹äºä¸ä¸ªé¿å®½èå´çéåºé´
CSS è¯æ³:
grid-row-start: 2;
grid-row-end: span 2;
#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;
}
ç½æ ¼é¡¹ç®ä½äºè¡çå³ä¾§ï¼æ«å°¾ï¼
#container {
display: grid;
align-items: start;
grid-template-columns: 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-gap: 10px;
}
å®ä¹ CSS åé
:root {
--first-color: #16f;
--second-color: #ff7;
}
åéç¨æ³
#firstParagraph {
background-color: var(--first-color);
color: var(--second-color);
}
å¦è§: 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;
å¦è§: Counter set
body { counter-reset: section; }
h3::before {
counter-increment: section;
content: "Section." counter(section);
}
ol {
counter-reset: section;
list-style-type: none;
}
li::before {
counter-increment: section;
content: counters(section, ".") " ";
}
div {
width: calc(100% - 30px);
height: calc(100% - 30px);
}
calc() CSS 彿°å
许æ¨å¨æå® CSS 屿§å¼æ¶æ§è¡è®¡ç®
font-size: clamp(1rem, 10vw, 2rem);
设置éçªå£å¤§å°æ¹åçåä½å¤§å°
p:before {
content: attr(data-foo) " ";
}
è·åéæ©å°çå ç´ çæä¸ HTML 屿§å¼
è¿åä¸ä¸ªä»£è¡¨è®¡æ°å¨çå½åå¼çå符串
<ol>
<li></li>
<li></li>
<li></li>
</ol>
ol {
counter-reset: listCounter;
}
li {
counter-increment: listCounter;
}
li::after {
content: "[" counter(listCounter) "] == ["
counter(listCounter, upper-roman) "]";
}
æ¾ç¤º
1. [1]==[I]
2. [2]==[II]
3. [3]==[III]
ol {
counter-reset: count;
}
li {
counter-increment: count;
}
li::marker {
content: counters(count, '.', upper-alpha) ') ';
}
li::before {
content: counters(count, ".", decimal-leading-zero) " == " counters(count, ".", lower-alpha);
}
åµå¥è®¡æ°å¨ï¼è¿å表示æå®è®¡æ°å¨å½åå¼çè¿æ¥å符串
<meta name="viewport" content="... viewport-fit=cover">
body {
padding:
env(safe-area-inset-top, 20px)
env(safe-area-inset-right, 20px)
env(safe-area-inset-bottom, 20px)
env(safe-area-inset-left, 20px);
}
ç¨æ·ä»£çå®ä¹çç¯å¢åéå¼æå ¥ä½ ç CSS ä¸
fit-content(200px)
fit-content(5cm)
fit-content(30vw)
fit-content(100ch)
å°ç»å®å¤§å°å¤¹ç´§ä¸ºå¯ç¨å¤§å°
ä»ä¸ä¸ªéå·åéç表达å¼å表ä¸éæ©æå¤§ï¼æ£æ¹åï¼çå¼ä½ä¸ºå±æ§çå¼
width: max(10vw, 4em, 80px);
ä¾åä¸ï¼å®½åº¦æå°ä¼æ¯ 80pxï¼é¤éè§å¾å®½åº¦å¤§äº 800px æè æ¯ä¸ä¸ª em æ¯ 20px 宽
width: min(1vw, 4em, 80px);
ä»éå·åé符表达å¼ä¸éæ©ä¸ä¸ªæå°å¼ä½ä¸º CSS ç屿§å¼
minmax(200px, 1fr)
minmax(400px, 50%)
minmax(30%, 300px)
minmax(100px, max-content)
minmax(min-content, 400px)
minmax(max-content, auto)
minmax(auto, 300px)
minmax(min-content, auto)
repeat(auto-fill, 250px)
repeat(auto-fit, 250px)
repeat(4, 1fr)
repeat(4, [col-start] 250px [col-end])
repeat(4, [col-start] 60% [col-end])
å®ä¹äºä¸ä¸ªé¿å®½èå´çéåºé´
background: url("topbanner.png") #00D no-repeat fixed;
list-style: square url(http://www.example.com/redball.png)
:root {
--main-bg-color: pink;
}
body {
background-color: var(--main-bg-color);
}
代æ¿å ç´ ä¸ä»»ä½å±æ§ä¸çå¼çä»»ä½é¨å
p {
white-space:nowrap;
}
p {
word-break:break-all; /* è±æ */
white-space:pre-wrap; /* 䏿 */
}
html {
scroll-behavior: smooth;
}
ç¹å»æé¡µé¢ä¼å¹³æ»æ»å¨å°å ¥é¨
input[type="text"]:autofill {
box-shadow: 0 0 0 1000px #000 inset;
-webkit-text-fill-color: white;
}
å¦è§: :autofill
input[type="color"] {
-webkit-appearance: none;
border: none;
width: 32px;
height: 32px;
}
input[type="color"]::-webkit-color-swatch-wrapper {
padding: 0;
}
input[type="color"]::-webkit-color-swatch {
border: none;
}
br + br {
display: none;
}
:empty {
display: none;
}
html {
box-sizing: border-box;
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
æå©äºå¨ä¸åçæµè§å¨ä¹é´å¼ºå¶æ ·å¼ä¸è´æ§ï¼å¹¶ä¸ºæ ·å¼å ç´ æä¾å¹²åççå
body {
caret-color: red;
}
html {
-webkit-filter: grayscale(.95);
}
ä¸é¢ç¤ºä¾è®¾ç½®äºå½åå¡çç°è²
<textarea>èªå¨å¢å å
¶é«åº¦textarea {
form-sizing: normal
}
div {
aspect-ratio: 1/1
}
屿§ aspect-ratio å¯ä»¥é常容æçå®ä¹ä¸ä¸ªå®¹å¨çé¿å®½æ¯
ä½¿ç¨ all éè®°æ¥æå®å
ç´ çææå±æ§ãå°å¼è®¾ç½®ä¸º unset ä¼å°å
ç´ ç屿§æ´æ¹ä¸ºå
¶åå§å¼ï¼
button {
all: unset;
}
注æï¼IE11 䏿¯æ all å unset éè®°
p {
overflow: hidden;/*è¶
åºé¨åéè*/
/* è¶
åºé¨åæ¾ç¤ºçç¥å· */
text-overflow:ellipsis;
/* è§å®æ®µè½ä¸çææ¬ä¸è¿è¡æ¢è¡ */
white-space: nowrap;
width: 250px;/*éè¦é
å宽度æ¥ä½¿ç¨*/
}
æ¨ä¸éè¦ä¸ºæ¯ä¸ª <p>ã<h*> çæ·»å è¡é«ãç¸åï¼å°å
¶æ·»å å°æ£æï¼
body {
line-height: 1.5;
}
è¿æ ·ææ¬å
ç´ å¯ä»¥å¾å®¹æå°ä» body ç»§æ¿
div {
cursor: url('path-to-image.png'), url('path-to-fallback-image.png'), auto;
/* 表æ
符å·ä½ä¸ºå
æ */
cursor: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='40' height='48' viewport='0 0 100 100' style='fill:black;font-size:24px;'><text y='50%'>ð</text></svg>"), auto;
}
.overflow-ellipsis {
width: 200px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
ä¸è¡ææ¬æªææ¾ç¤ºçç¥å· (...)
.overflow-truncate {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
}
å¤è¡ææ¬æªæå°ç¹å®çè¡æ°ï¼æ«å°¾æ¾ç¤ºçç¥å· (...)
.sticky {
position: sticky;
top: 0;
}
屿§ sticky è½å¨æ»å¨å°é¡¶é¨çä½ç½®åºå®ä½å ç´
a[href^="http"]:empty::before {
content: attr(href);
}
妿 <a> æ ç¾é颿²¡æå
容ï¼å° href çå¼ä½ä¸ºå
容å±ç¤º
ååºå¼å¸å±ä¸çåä½å¤§å°åºè¯¥è½å¤æ ¹æ®æ¯ä¸ªè§å£è¿è¡è°æ´ï¼æ¨å¯ä»¥ä½¿ç¨ :root æ ¹æ®è§å£é«åº¦å宽度计ç®åä½å¤§å°
:root {
font-size: calc(1vw + 1vh + .5vmin);
}
æ¨å¯ä»¥æ ¹æ® :root 计ç®çå¼ä½¿ç¨æ ¹ em åä½ï¼
body {
font: 1rem/1.6 sans-serif;
}
.container {
height: 250px;
overflow-x: scroll;
display: flex;
scroll-snap-type: x mandatory;
column-gap: 10px;
}
.child {
flex: 0 0 66%;
width: 250px;
background-color: #663399;
scroll-snap-align: center;
}
å¯ç¨äº è½®æå¾ ææï¼ææé¢è§
div {
-webkit-user-modify:
read-write-plaintext-only;
}
éè¿æ ·å¼æ¥æ§å¶ä¸ä¸ªå
ç´ div æ¯å¦å¯ä»¥ç¼è¾
å°è¯ä½¿ç¨ table-layout: fixed ä»¥ä¿æåå
æ ¼å®½åº¦ç¸çï¼
table {
table-layout: fixed;
}
å½ <a> å
ç´ æ²¡æææ¬å
容ï¼ä½æ href 屿§çæ¶åï¼æ¾ç¤ºå®ç href 屿§ï¼
a[href^="http"]:empty::before {
content: attr(href);
}
ç» âé»è®¤â 龿¥å®ä¹æ ·å¼ï¼
a[href]:not([class]) {
color: #008000;
text-decoration: underline;
}
é常没æ class 屿§ï¼ä»¥ä¸æ ·å¼å¯ä»¥çå«å®ä»¬ï¼èä¸ä¸ä¼å½±åå
¶å®æ ·å¼
卿 ¹å
ç´ è®¾ç½®åºæ¬åä½å¤§å°å (html { font-size: 100%; }), ä½¿ç¨ em è®¾ç½®ææ¬å
ç´ çåä½å¤§å°:
h2 {
font-size: 2em;
}
p {
font-size: 1em;
}
ç¶å设置模åçåä½å¤§å°ä¸º rem:
article {
font-size: 1.25rem;
}
aside .module {
font-size: .9rem;
}
ç°å¨ï¼æ¯ä¸ªæ¨¡ååå¾ç¬ç«ï¼æ´å®¹æãçµæ´»çæ ·å¼ä¾¿äºç»´æ¤
è¿æ¯ä¸ä¸ªèªå®ä¹ç¨æ·æ ·å¼è¡¨çä¸éçæå·§ãé¿å å¨å è½½é¡µé¢æ¶èªå¨ææ¾ãå¦ææ²¡æéé³ï¼å䏿¾ç¤ºè§é¢ï¼
video[autoplay]:not([muted]) {
display: none;
}
忬¡ï¼æä»¬å©ç¨äº :not() çä¼ç¹
å½è§¦å <select> ç䏿å表æ¶ï¼ä¸ºäºé¿å
表åå
ç´ å¨ç§»å¨æµè§å¨ï¼iOS Safari åå
¶å®ï¼ä¸ç缩æ¾ï¼å ä¸font-sizeï¼
input[type="text"],
input[type="number"],
select,
textarea {
font-size: 16px;
}
æéäºä»¶å è®¸æ¨æå®é¼ æ å¦ä½ä¸å ¶è§¦æ¸çå ç´ è¿è¡äº¤äºãè¦ç¦ç¨æé®ä¸çé»è®¤æéäºä»¶ï¼ä¾å¦ï¼
button:disabled {
opacity: .5;
pointer-events: none;
}
å°±è¿ä¹ç®å
div:has(img) {
background: black;
}
设置å
å«åå
ç´ img ç div å
ç´ æ ·å¼ï¼è¿å¯ä»¥åµå¥ï¼
div:has(h2):has(ul) {
background: black;
}
display: noneç¨æ·ä½¿ç¨é¢å¤çæ¢è¡ç¬¦
br + br {
display: none;
}
body æ·»å è¡é«body {
line-height: 1.5;
}
æ¨ä¸éè¦ä¸ºæ¯ä¸ª <p>ã<h*> çå嫿·»å è¡é«ãç¸åï¼å°å
¶æ·»å å°æ£æ
@font-face {
font-family: "Dank Mono";
src:
/* Full name */
local("Dank Mono"),
/* Postscript name */
local("Dank-Mono"),
/* å¦åï¼è¯·ä¸è½½å®ï¼ */
url("//...a.server/DankMono.woff");
}
code {
font-family: "Dank Mono",
system-ui-monospace;
}
æ¨å¯ä»¥å¨è¿ç¨è·ååä½ä¹åæ£æ¥æ¯å¦å¨æ¬å°å®è£ äºåä½ï¼è¿ä¹æ¯ä¸ä¸ªå¾å¥½çæ§è½æç¤º
<a href="https://example.com">è¶
龿¥</a>
attr HTML å ç´ ç屿§åã
a:after {
content: " (" attr(href) ")";
}
:focusa:focus, button:focus, input:focus,
select:focus, textarea:focus {
box-shadow: none;
outline: #000 dotted 2px;
outline-offset: .05em;
}
æè§åçé®çç¨æ·ä¾é ç¦ç¹æ¥ç¡®å®é®çäºä»¶å¨é¡µé¢ä¸çä½ç½®ã使表åå ç´ çç¦ç¹æ¯æµè§å¨çé»è®¤å®ç°æ´å çªåºåä¸è´
html, body {
height: 100%;
margin: 0;
}
body {
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
display: -webkit-flex;
display: flex;
}
...è¿æ CSS ç½æ ¼ï¼
body {
display: grid;
height: 100vh;
margin: 0;
place-items: center center;
}
img {
width: 200px;
height: 200px;
/** ç¡®ä¿å¾çæåå§å®½é«æ¯ä¾è¿è¡ç¼©æ¾ */
object-fit: cover;
object-position: left top;
transition: 1s;
}
img:hover {
/** æå®å¾çæ¾ç¤ºçä½ç½®ï¼ç»åé¼ æ ç§»å¨+è¿æ¸¡å¨ç» */
object-position: right bottom;
}
.clamp {
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
html ææ¬è¶
è¿ 3 è¡å°è¢«æªæï¼æ¾ç¤ºçç¥å·...
<p class="clamp">
å±ç¤ºå¤è¡ææ¬ï¼è¶
è¿ 3 è¡å°è¢«æªæï¼æ¾ç¤ºçç¥å·...
</p>
ul > li:not(:last-child)::after {
content: ",";
}
使å表项çèµ·æ¥åä¸ä¸ªçå®çéå·åéå表ï¼ä½¿ç¨ :not() ä¼ªç±»ï¼æåä¸é¡¹ä¸ä¼æ·»å éå·
.revenue {
font-variant-numeric: tabular-nums;
}
è¡¨æ ¼ä¸ä¸åæ°ååå¯¹å ¶