linear-gradient()
åºçº¿
广æ³å¯ç¨
*
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
linear-gradient() CSS 彿°å建ä¸ä¸ªç±ä¸¤ç§æå¤ç§é¢è²æ²¿ä¸æ¡ç´çº¿è¿è¡çº¿æ§è¿æ¸¡çå¾åï¼å
¶ç»ææ¯ <gradient> æ°æ®ç±»åçå¯¹è±¡ï¼æ¤å¯¹è±¡æ¯ä¸ç§ç¹æ®ç <image> æ°æ®ç±»åã
å°è¯ä¸ä¸
background: linear-gradient(#e66465, #9198e5);
background: linear-gradient(0.25turn, #3f87a6, #ebf8e1, #f69d3c);
background: linear-gradient(to left, #333, #333 50%, #eee 75%, #333 75%);
background:
linear-gradient(217deg, rgba(255, 0, 0, 0.8), rgba(255, 0, 0, 0) 70.71%),
linear-gradient(127deg, rgba(0, 255, 0, 0.8), rgba(0, 255, 0, 0) 70.71%),
linear-gradient(336deg, rgba(0, 0, 255, 0.8), rgba(0, 0, 255, 0) 70.71%);
<section class="display-block" id="default-example">
<div id="example-element"></div>
</section>
#example-element {
min-height: 100%;
}
è¯æ³
/* æ¸å轴为 45 度ï¼ä»èè²æ¸åå°çº¢è² */
linear-gradient(45deg, blue, red);
/* ä»å³ä¸å°å·¦ä¸ãä»èè²æ¸åå°çº¢è² */
linear-gradient(to left top, blue, red);
/* è²æ ï¼ä»ä¸å°ä¸ï¼ä»èè²å¼å§æ¸åï¼å°é«åº¦ 40% ä½ç½®æ¯ç»¿è²æ¸åå¼å§ï¼æå以红è²ç»æ */
linear-gradient(0deg, blue, green 40%, red);
/* é¢è²æç¤ºï¼ä»å·¦å°å³çæ¸åï¼ç±çº¢è²å¼å§ï¼æ²¿çæ¸åé¿åº¦å° 10% çä½ç½®ï¼ç¶åå¨å©ä½ç 90% é¿åº¦ä¸åæèè² */
linear-gradient(.25turn, red, 10%, blue);
/* å¤ä½ç½®è²æ ï¼45% å¾æçæ¸åï¼å·¦ä¸åé¨å为红è²ï¼å³ä¸åé¨å为èè²ï¼ä¸é´æä¸æ¡ç¡¬çº¿ï¼å¨è¿éæ¸åç±çº¢è²è½¬å为èè² */
linear-gradient(45deg, red 0 50%, blue 50% 100%);
å¼
<side-or-corner>-
æ¸å线çèµ·å§ç¹ä½ç½®ã妿æå®äºï¼åå å«
toåæå¤ä¸¤ä¸ªå ³é®åï¼ä¸ä¸ªæå®æ°´å¹³ä½ç½®ï¼leftærightï¼ï¼å¦ä¸ä¸ªæå®ç«ç´ä½ç½®ï¼topæbottomï¼ãå ³é®è¯çå åé¡ºåºæ å½±åãå¦ææ²¡ææå®ï¼åé»è®¤ä¸ºto bottomãto topãto bottomãto leftåto rightåå«çä»·äº0degã180degã270degå90degãå ¶ä½å¼ä¼è¢«è½¬æ¢ä¸ºè§åº¦ã <angle>-
æ¸åçº¿çæ¹åçè§åº¦ã
0degçä»·äºto topï¼å¢å å¼ç¸å½äºé¡ºæ¶éæè½¬ã <linear-color-stop>-
è²æ ï¼color stopï¼ç
<color>å¼ï¼ç¶åæ¯ä¸ä¸ªæä¸¤ä¸ªå¯éçè²æ ä½ç½®ï¼æ²¿æ¸åè½´ç<percentage>弿<length>å¼ï¼ã <color-hint>-
æå¼æç¤ºï¼å®ä¹æ¸åè²å¨ç¸é»è²æ ä¹é´çæ¸åè¿ç¨ãå ¶ä¸çé¿åº¦å®ä¹äºæ¸åè²åºå¨ä¸¤ä¸ªè²æ ä¹é´çåªä¸ªç¹å°è¾¾é¢è²è¿æ¸¡çä¸ç¹ã妿çç¥è¯¥å¼ï¼é¢è²è¿æ¸¡çä¸ç¹å°±æ¯ä¸¤ä¸ªè²æ ä¹é´çä¸ç¹ã
夿³¨ï¼CSS æ¸åä¸çè²æ çæ¸²æä¸ SVG æ¸åä¸çè²æ éµå¾ªç¸åçè§åã
æè¿°
åå ¶ä»æ¸å䏿 ·ï¼çº¿æ§æ¸å没æå å¨å°ºå¯¸ï¼ä¹å°±æ¯è¯´ï¼å®æ²¡æåºææé¦éç尺寸ï¼ä¹æ²¡æé¦éçæ¯ä¾ï¼å ¶å®é 大å°åå³äºæåºç¨çå ç´ ç大å°ã
è¦å建ä¸ä¸ªè½å¤éå¤å¡«æ»¡å®¹å¨ççº¿æ§æ¸åï¼è¯·ä½¿ç¨ repeating-linear-gradient() 彿°ã
ç±äº <gradient> å±äº <image> æ°æ®ç±»åï¼å æ¤åªè½ç¨å¨è½ä½¿ç¨ <image> çå°æ¹ãå æ¤ï¼linear-gradient() å¨ background-color 以åå
¶ä»ä½¿ç¨ <color> æ°æ®ç±»åç屿§ä¸ä¸èµ·ä½ç¨ã
çº¿æ§æ¸åçåæ
çº¿æ§æ¸åæ¯å¨ä¸ä¸ªè½´ââæ¸å线å两个æè
æ´å¤ä¸ªè²æ ææçãè½´ä¸çæ¯ä¸ªç¹é½æ¯ä¸ä¸ªåç¬çé¢è²ï¼è¦å建平æ»çæ¸åï¼linear-gradient() 彿°ä¼ç»å¶åºä¸ç³»å䏿¸å线åç´ç彩è²çº¿ï¼æ¯æ¡çº¿é½å¹é
䏿¸å线ç¸äº¤ç¹çé¢è²ã

æ¸å线ç±å 嫿¸åå¾å½¢ç容å¨çä¸å¿ç¹åä¸ä¸ªè§åº¦æ¥å®ä¹çãæ¸å线ä¸çé¢è²å¼æ¯ç±ä¸åçç¹æ¥å®ä¹ï¼å æ¬èµ·å§ç¹ãç»ç¹ï¼ä»¥å两è ä¹é´çå¯éçä¸é´ç¹ï¼ä¸é´ç¹å¯ä»¥æå¤ä¸ªï¼ã
èµ·ç¹æ¯æ¸å线ä¸ä»£è¡¨èµ·å§é¢è²å¼çç¹ãç»ç¹æ¯æ¸å线ä¸ä»£è¡¨æç»é¢è²å¼çç¹ãè¿ä¸¤ä¸ªç¹é½æ¯ç±æ¸å线å仿è¿çé¡¶ç¹ååºçåç´çº¿ä¹é´ç交åç¹å®ä¹çï¼ç¶èä»èµ·ç¹çå¯¹ç§°ç¹æ¥å®ä¹ç»ç¹æ¯æ´å®¹æçè§£çä¸ç§æ¹å¼ï¼å 为ç»ç¹æ¯èµ·ç¹å ³äºå®¹å¨çä¸å¿ç¹çåå°ç¹ãè¿ä¸å¤æçå®ä¹å¯¼è´äºä¸ä¸ªæè¶£çææï¼ææ¶ç§°ä¸º magic cornersï¼èµ·ç¹éè¿çç¹å ·æè·èµ·ç¹ç¸åçé¢è²å¼ï¼ç»ç¹éè¿çç¹å ·æè·ç»ç¹ç¸åçé¢è²å¼ã
èªå®ä¹æ¸å
éè¿æä¾é¢å¤çè²æ ï¼å¯ä»¥å¨å¤ç§é¢è²ä¹é´å建é«åº¦ä¸ªæ§åçè¿æ¸¡ææãè²æ çä½ç½®å¯ä»¥ç± <length> 弿 <percentage> 弿¸
æ°å°æå®ãå¦æä½ ä¸æå®é¢è²çä½ç½®ï¼é£ä¹å°ä¼ä½äºåé¢ååé¢ä¸¤ç¹çä¸ç¹ã以ä¸ä¸¤ä¸ªæ¸åæ¯çä»·çï¼
linear-gradient(red, orange, yellow, green, blue);
linear-gradient(red 0%, orange 25%, yellow 50%, green 75%, blue 100%);
é»è®¤æ åµä¸ï¼é¢è²ä¼ä»ä¸ä¸ªè²æ çé¢è²å°åç»çè²æ çé¢è²å¹³æ»è¿æ¸¡ï¼é¢è²çä¸ç¹æ¯é¢è²è¿æ¸¡ä¸çä¸é´ç¹ãä½ å¯ä»¥å°è¿ä¸ªä¸ç¹ç§»å¨å°ä¸¤ä¸ªè²æ ä¹é´çä»»ä½ä½ç½®ï¼æ¹æ³å°±æ¯å¨ä¸¤ä¸ªé¢è²ä¹é´çä¸ç¹æå¨çä½ç½®æ·»å ä¸ä¸ªæ²¡æå æ ç¾ç % é¢è²æç¤ºãä¸é¢è¿ä¸ªä¾åä¸ï¼èµ·å§ç¹å° 10% æ¯çº¯çº¢è²ï¼90% å°ç»æç¹æ¯çº¯èè²ã10% å 90% ä¹é´æ¯é¢è²ä»çº¢è²è¿æ¸¡å°èè²çå°æ¹ï¼ä½æ¯ï¼è¿æ¸¡çä¸ç¹æ¯ 30% çä½ç½®ï¼å妿²¡æè¿ä¸ª 30% çé¢è²æç¤ºï¼å°±ä¼æ¯ 50% çä½ç½®ã
linear-gradient(red 10%, 30%, blue 90%);
å¦æä¸¤ä¸ªå以ä¸è²æ ä½äºåä¸ä¸ªä½ç½®ï¼é£ä¹è¿æ¸¡ä¼å¨è¿ä¸ªä½ç½®ç第ä¸ä¸ªåæåä¸ä¸ªé¢è²ä¹é´äº§ç䏿¡ç¡¬çº¿ã
è²æ åºè¯¥ä»¥éå¢ç顺åºååºãåé¢çæ´ä½å¼çè²æ ä¼è¦çåé¢çå¼å¹¶åå»ºç¡¬è¿æ¸¡çº¿ãä¸é¢çæ¸åå¨ 40% å¤ç±çº¢è²å为é»è²ï¼ç¶åå¨ 25% å¤ç±é»è²å为èè²ï¼
linear-gradient(red 40%, yellow 30%, blue 65%);
å 许æå¤ä¸ªä½ç½®çè²æ ãä¸ä¸ªé¢è²å¯ä»¥å£°æä¸ºå¤ä¸ªç¸é»çè²æ ï¼æ¹æ³å°±æ¯å¨ CSS 声æä¸å æ¬è¿ä¸¤ä¸ªä½ç½®ã以ä¸çä¸ä¸ªæ¸åæ¯çä»·çï¼
linear-gradient(red 0%, orange 10%, orange 30%, yellow 50%, yellow 70%, green 90%, green 100%);
linear-gradient(red, orange 10% 30%, yellow 50% 70%, green 90%);
linear-gradient(red 0%, orange 10% 30%, yellow 50% 70%, green 90% 100%);
é»è®¤æ
åµä¸ï¼å¦æ 0% çå°æ¹æ²¡æé¢è²ï¼é£ä¹é£éå°±æ¯å£°æç第ä¸ä¸ªé¢è²ã类似å°ï¼æåä¸ä¸ªé¢è²ä¹ä¼æç»å° 100% çä½ç½®ï¼æè
妿æåä¸ä¸ªè²æ 没æå£°æé¿åº¦ï¼é£ä¹å°±æ¯å¨ 100% çä½ç½®ã
å½¢å¼è¯æ³
<linear-gradient()> =
linear-gradient( [ <linear-gradient-syntax> ] )
<linear-gradient-syntax> =
[ [ <angle> | <zero> | to <side-or-corner> ] || <color-interpolation-method> ]? , <color-stop-list>
<side-or-corner> =
[ left | right ] ||
[ top | bottom ]
<color-interpolation-method> =
in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ]
<color-stop-list> =
<linear-color-stop> , [ <linear-color-hint>? , <linear-color-stop> ]#?
<rectangular-color-space> =
srgb |
srgb-linear |
display-p3 |
display-p3-linear |
a98-rgb |
prophoto-rgb |
rec2020 |
lab |
oklab |
<xyz-space>
<polar-color-space> =
hsl |
hwb |
lch |
oklch
<hue-interpolation-method> =
[ shorter | longer | increasing | decreasing ] hue
<custom-color-space> =
<dashed-ident>
<linear-color-stop> =
<color> <color-stop-length>?
<linear-color-hint> =
<length-percentage>
<xyz-space> =
xyz |
xyz-d50 |
xyz-d65
<color-stop-length> =
<length-percentage>{1,2}
<length-percentage> =
<length> |
<percentage>
示ä¾
>45 度æ¸å
body {
background: linear-gradient(45deg, red, blue);
}
仿¸å线 60% å¤å¼å§çæ¸å
body {
background: linear-gradient(135deg, orange 60%, cyan);
}
æå¤ä½ç½®è²æ çæ¸å
è¿ä¸ªç¤ºä¾ä½¿ç¨äºå¤ä½ç½®çè²æ ï¼ä¸¤ä¸ªç¸é»çé¢è²æç¸åçè²æ å¼ï¼å½¢æäºæ¡çº¹ææã
body {
background: linear-gradient(
to right,
red 20%,
orange 20% 40%,
yellow 40% 60%,
green 60% 80%,
blue 80%
);
}
æ´å¤çº¿æ§æ¸å示ä¾
æ´å¤ç¤ºä¾è¯·è§ä½¿ç¨ CSS æ¸åã
è§è
| è§è |
|---|
| CSS Images Module Level 4> # linear-gradients> |
æµè§å¨å ¼å®¹æ§
åè§
- ä½¿ç¨ CSS æ¸å
- å
¶ä»æ¸å彿°ï¼
repeating-linear-gradient()ãradial-gradient()ãrepeating-radial-gradient()ãconic-gradient()ãrepeating-conic-gradient() <image>element()image()image-set()cross-fade()- CSS å¾å模å
- MDN å客ä¸çæç« CSS é¢è²ä¸çæ°åè½ãæ¸ååè²è°ï¼çº§å« 4ï¼ï¼2023 å¹´ï¼