rect()
åºçº¿
2024
æè¿å¯ç¨
èª January 2024 èµ·ï¼æ¤ç¹æ§å·²å¨ææ°æµè§å¨ä¸å¾å°æ¯æãä½å¨è¾æ§çè®¾å¤ææµè§å¨ä¸å¯è½æ æ³è¿è¡ã
rect() CSS 彿°å¯ä»¥å建ä¸ä¸ªç©å½¢ï¼è¯¥ç©å½¢ä½äºå
å«åçé¡¶é¨å左侧边ç¼çæå®è·ç¦»å¤ã宿¯ <basic-shape> æ°æ®ç±»åçåºæ¬å½¢ç¶å½æ°ãä½ å¯ä»¥å¨ CSS 屿§ä¸ä½¿ç¨ rect() 彿°ï¼ä¾å¦ offset-path å建å
ç´ ç§»å¨çç©å½¢è·¯å¾ï¼ä»¥åå¨ clip-path ä¸å®ä¹è£åªåºåçå½¢ç¶ã
è¯æ³
offset-path: rect(0 1% auto 3% round 0 1px);
clip-path: rect(50px 70px 80% 20%);
å¼
å
é¨ç©å½¢ç±å个åç§»å¼å®ä¹ï¼ä»é¡¶è¾¹å¼å§é¡ºæ¶éï¼ä»¥åå¯éç round å
³é®åä¸ border-radius åæ°ï¼ç¨äºå¨ç©å½¢ä¸æ·»å åè§ãæ¯ä¸ªåç§»å¼å¯ä»¥æ¯ <length>ã<percentage>ï¼æå
³é®å autoã
<length-percentage>-
æå®ç©å½¢çé¡¶é¨ãå³ä¾§ãåºé¨æå·¦ä¾§è¾¹ç¼ä¸å å«åçé¡¶é¨æå·¦ä¾§è¾¹ç¼çè·ç¦»ç
<length-percentage>å¼ã第ä¸ä¸ªï¼é¡¶é¨ï¼å第ä¸ä¸ªï¼åºé¨ï¼å¼æ¯ç¸å¯¹äºå å«åçé¡¶é¨è¾¹ç¼çè·ç¦»ï¼ç¬¬äºä¸ªï¼å³ä¾§ï¼å第å个ï¼å·¦ä¾§ï¼å¼æ¯ç¸å¯¹äºå å«åç左侧边ç¼çè·ç¦»ã第äºä¸ªï¼å³ä¾§ï¼å第ä¸ä¸ªï¼åºé¨ï¼å¼ç±ç¬¬å个ï¼å·¦ä¾§ï¼å第ä¸ä¸ªï¼é¡¶é¨ï¼å¼åå«éå¶ï¼ä»¥é²æ¢åºé¨è¾¹ç¼è¶è¿é¡¶é¨è¾¹ç¼åå³è¾¹ç¼è¶è¿å·¦è¾¹ç¼ãä¾å¦ï¼rect(10px 0 0 20px)被éå¶ä¸ºrect(10px 20px 10px 20px)ã auto-
ä½¿å ¶ç¨äºçè¾¹ç¼ä¸å å«åçç¸åºè¾¹ç¼éåãå¦æç¬¬ä¸ä¸ªï¼é¡¶é¨ï¼æç¬¬å个ï¼å·¦ä¾§ï¼å¼ä½¿ç¨äº
autoï¼åautoçå¼ä¸º0ï¼å¦æç¨äºç¬¬äºä¸ªï¼å³ä¾§ï¼æç¬¬ä¸ä¸ªï¼åºé¨ï¼å¼ï¼åautoçå¼ä¸º100%ã round <'border-radius'>-
使ç¨ä¸ CSS
border-radiusç®å屿§ç¸åçè¯æ³æå®ç©å½¢çåè§åå¾ãæ¤åæ°æ¯å¯éçã
å½¢å¼è¯æ³
<rect()> =
rect( [ <length-percentage> | auto ]{4} [ round <'border-radius'> ]? )
<length-percentage> =
<length> |
<percentage>
<border-radius> =
<length-percentage [0,â]>{1,4} [ / <length-percentage [0,â]>{1,4} ]?
示ä¾
>ä½¿ç¨ rect() å建 offset-path
卿¤ç¤ºä¾ä¸ï¼offset-path 屿§ä½¿ç¨ rect() 彿°æ¥å®ä¹å
ç´ ç§»å¨çè·¯å¾çå½¢ç¶ï¼è¿éæ¯ä¸ä¸ªçº¢è²æ¡ãå±ç¤ºäºä¸ç§ä¸åçæ
åµï¼æ¯ç§æ
åµä¸ rect() 彿°ä½¿ç¨ä¸åçå¼ãæ¹æ¡å
çç®å¤´æåæ¹æ¡çå³è¾¹ç¼ã
<div class="container">
ç©å½¢è·¯å¾ 1
<div class="path rect-path-1">â</div>
</div>
<div class="container">
ç©å½¢è·¯å¾ 2
<div class="path rect-path-2">â</div>
</div>
<div class="container">
ç©å½¢è·¯å¾ 3
<div class="path rect-path-3">â</div>
</div>
.container {
position: relative;
display: inline-block;
width: 200px;
height: 200px;
border: 1px solid black;
margin: 15px;
text-align: center;
}
.path {
width: 40px;
height: 40px;
background-color: red;
position: absolute;
animation: move 10s linear infinite;
}
.rect-path-1 {
offset-path: rect(50px 150px 200px 50px round 20%);
}
.rect-path-2 {
offset-path: rect(50px auto 200px 50px round 20%);
}
.rect-path-3 {
offset-path: rect(50px auto 200px auto);
}
@keyframes move {
0% {
offset-distance: 0%;
}
100% {
offset-distance: 100%;
}
}
ç»æ
- è·¯å¾ 1 çç©å½¢æå®äºç¸å¯¹äºå
å«åçå个边ç¼ï¼ä¸ãå³ãä¸åå·¦ï¼çè·ç¦»ãé¡¶é¨ååºé¨å¼æ¯ç¸å¯¹äºå
å«åçé¡¶é¨è¾¹ç¼çè·ç¦»ãå³ä¾§å左侧弿¯ç¸å¯¹äºå
å«åç左侧边ç¼çè·ç¦»ãæ¤å¤ï¼ç©å½¢çè§è¢«è®¾ç½®ä¸º
20%çåè§ï¼ä½¿å¾çº¢è²çåå ç´ å¨æ²¿çæ¤è·¯å¾ç§»å¨æ¶ï¼ä¼è·éåè§ç§»å¨ãè¯·æ³¨ææ¡å ç®å¤´æ²¿çç©å½¢è·¯å¾æè§å¤çæ²çº¿çç§»å¨æ åµã - è·¯å¾ 2 çç©å½¢ä¸è·¯å¾ 1 çç©å½¢ç±»ä¼¼ï¼åªæ¯å³ä¾§å¼ä¸º
autoï¼å®çäºå¼100%ãè¿å¯¼è´ç©å½¢çå³è¾¹ç¼ä¸å å«åçå³è¾¹ç¼å¯¹é½ï¼ä»èå建äºä¸ä¸ªæ¯è·¯å¾ 1 æ´å®½çç©å½¢ã - è·¯å¾ 3 çç©å½¢å°å·¦ä¾§åå³ä¾§è¾¹ç¼åæ°é½è®¾ç½®ä¸º
autoï¼å¹¶çç¥äºround <'border-radius'>åæ°ãè¿ä¼å建ä¸ä¸ªå®½åº¦ä¸å å«åç¸åçç©å½¢ï¼å ¶è§æ¯ç©å½¢çç´è§ï¼è䏿¯è·¯å¾ 1 åè·¯å¾ 2 ä¸çåè§ãè¯·æ³¨ææ¡å ç®å¤´å¨è§è½çç§»å¨æ åµã
è§è
| è§è |
|---|
| CSS Shapes Module Level 1> # funcdef-basic-shape-rect> |
æµè§å¨å ¼å®¹æ§
åè§
inset()彿°xywh()彿°clip-path屿§offset-path屿§<basic-shape>æ°æ®ç±»å- CSS å½¢ç¶æ¨¡å
- åºæ¬å½¢ç¶æå