polygon()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2020å¹´1æ.
polygon() 㯠CSS ã®é¢æ°ã§ã<basic-shape> ãã¼ã¿åã®ä¸ã¤ã§ããå¤è§å½¢ãæç»ããããã«ä½¿ç¨ãã¾ãã 1 ã¤ä»¥ä¸ã®åº§æ¨ã®ãã¢ãæå®ãããããããå³å½¢ã®é ç¹ã表ãã¾ãã
試ãã¦ã¿ã¾ããã
clip-path: polygon(
0% 20%,
60% 20%,
60% 0%,
100% 50%,
60% 100%,
60% 80%,
0% 80%
);
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element"></div>
</section>
#default-example {
background: #ffee99;
}
#example-element {
background: linear-gradient(to bottom right, #ff5522, #0055ff);
width: 100%;
height: 100%;
}
æ§æ
/* 座æ¨ãªã¹ãã¨ãã¦æå® */
/* polygon(<length-percentage> <length-percentage>, ... )*/
polygon(50% 2.4%, 34.5% 33.8%, 0% 38.8%, 25% 63.1%, 19.1% 97.6%)
polygon(0px 0px, 200px 100px, 0px 200px)
polygon(0% 0px, 100% 100px, 0px 100%)
polygon(0 0, 50% 1rem, 100% 2vw, calc(100% - 20px) 100%, 0 100%)
/* 座æ¨ãªã¹ãã¨å¡ãã¤ã¶ãã«ã¼ã«ã¨ãã¦æå® */
/* polygon(<fill-rule> <length-percentage> <length-percentage>, ... )*/
polygon(nonzero, 0% 0%, 50% 50%, 0% 100%)
polygon(evenodd, 0% 0%, 50% 50%, 0% 100%)
polygon() ã®å¼æ°ã¯ã«ã³ãã¨ãªãã·ã§ã³ã®ç©ºç½ã§åºåããã¾ããæåã®å¼æ°ã¯ãªãã·ã§ã³ã® <fill-rule> å¤ã§ãã追å ã®å¼æ°ã¯å¤è§å½¢ãå®ç¾©ããç¹ã§ãããã®ç¹ã¯ãããã x/y åº§æ¨ <length-percentage> ã®å¤ã空éã§åºåã£ããã®ã§ãä¾ãã°å·¦/ä¸é
㯠"0 0"ãå³ä¸é
㯠"100% 100%" ã¨ãªãã¾ãã
ã¡ã¢: SVG ã® <polygon> è¦ç´ ã«ã¯ãfill-rule 㨠points ã®ç¬ç«ãã屿§ããããpoints ã¯åºåãæåã¨ãã¦ç©ºç½ã¨ã«ã³ããæè»ã«ä½¿ç¨ã§ãã¾ãã CSS ã® polygon() ã§ã¯åºåãæåã«å¯¾ããã«ã¼ã«ã¯å³å¯ã«é©ç¨ããã¾ãã
å¤
<fill-rule>çç¥å¯-
ãªãã·ã§ã³ã§
nonzeroï¼çç¥æã®æ¢å®å¤ï¼ã¾ãã¯evenoddã®ã©ã¡ããã§ãããå¡ãã¤ã¶ãã«ã¼ã«ãæå®ãã¾ãã <length-percentage>-
å¤è§å½¢ã®åé ç¹ã¯
<length-percentage>ã®å¤ã®çµã§è¡¨ãã¾ãããã®å¤ã¯å³å½¢ã®åç §ããã¯ã¹ããã®ç¸å¯¾åº§æ¨ã§é ç¹ã® x/y 座æ¨ã表ãã¾ãã
è¿å¤
<basic-shape> å¤ãè¿ãã¾ãã
解説
polygon() 颿°ã§ç¹ã®åº§æ¨ãæå®ããã¨ãã»ã¨ãã©ã®å³å½¢ã使ãããã¨ãã§ãã¾ãããã®ç¹ãå®ç¾©ããé çªã¯éè¦ã§ãç°ãªãå³å½¢ãä½ããã¨ãã§ãã¾ãã polygon() 颿°ã¯å°ãªãã¨ã 3 ã¤ã®ç¹ãå¿
è¦ã§ãããã¯ä¸è§å½¢ã使ãã¾ãããä¸éã¯ããã¾ããã
polygon() 颿°ã¯ã«ã³ãåºåãã®åº§æ¨ã¾ãã¯ç¹ãå¤ã¨ãã¦åãå
¥ãã¾ããåç¹ã¯ç©ºéã§åºåããã x 㨠y ã®ãã¢ã®å¤ã§è¡¨ãã¾ãããã®ãã¢ã¯å¤è§å½¢å
ã®ç¹ã®åº§æ¨ã示ãã¾ãã
polygon(x1 y1, x2 y2, x3 y3, x4 y4, xn yn)
ä¸è¨ã®ããã«æå®ãããå ´åãã³ã³ããã¼ã®åº§æ¨ããããã³ã°ããã¨ã次ã®ããã«è¦è¦åã§ãã¾ãã
| 軸å | ç¹ 1 | ç¹ 2 | ç¹ 3 | ç¹ 4 | ç¹ n |
|---|---|---|---|---|---|
| x | 0% | 100% | 100% | 0% | xn |
| y | 0% | 0% | 100% | 100% | yn |
ãã®åº§æ¨ã CSS ã® clip-path ããããã£ã«ã polygon() 颿°ã使ç¨ãã¦é©ç¨ãã¾ãã
clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
ããã¯ãå·¦ä¸ (0% 0%), å³ä¸ (100% 0%), å³ä¸ (100% 100%), å·¦ä¸ (0% 100%) ã® 4 ã¤ã®è§ã®åº§æ¨ãæå®ãããã¨ã§ã親ã³ã³ãã³ãã®å¤§ããã®é·æ¹å½¢ã®å³å½¢ã使ãã¾ãã
形弿æ³
<polygon()> =
polygon( <'fill-rule'>? [ round <length> ]? , [ <length-percentage> <length-percentage> ]# )
<fill-rule> =
nonzero |
evenodd
<length-percentage> =
<length> |
<percentage>
ä¾
>ä¸è§å½¢ã®ä½æ
ãã®ä¾ã§ã¯ã 3 ç¹ã®åº§æ¨ãå®ç¾©ãã¦ä¸è§å½¢ãå½¢æãã¾ãã
HTML
<div class="triangle"></div>
CSS
.triangle {
width: 400px;
height: 400px;
background-color: magenta;
clip-path: polygon(100% 0%, 50% 50%, 100% 100%);
}
çµæ
ä¸è§å½¢ã®åº§æ¨ã¯ãã³ã³ããã¼ã®å³ä¸é
(100% 0%)ãä¸å¿ç¹ (50% 50%)ãå³ä¸é
(100% 100%) ã§ãã
shape-outside ã®ããã®å¤è§å½¢ãè¨å®
ãã®ä¾ã§ã¯ã shape-outside ããããã£ã使ç¨ãã¦ãããã¹ããæ²¿ãä½ç½®ã®å³å½¢ã使ãã¦ãã¾ãã
<div class="box">
<div class="shape"></div>
<p>
One November night in the year 1782, so the story runs, two brothers sat
over their winter fire in the little French town of Annonay, watching the
grey smoke-wreaths from the hearth curl up the wide chimney. Their names
were Stephen and Joseph Montgolfier, they were papermakers by trade, and
were noted as possessing thoughtful minds and a deep interest in all
scientific knowledge and new discovery. Before that nightâa memorable night,
as it was to proveâhundreds of millions of people had watched the rising
smoke-wreaths of their fires without drawing any special inspiration from
the fact.
</p>
</div>
.box {
width: 250px;
}
.shape {
float: left;
shape-outside: polygon(
0 5%,
15% 12%,
30% 15%,
40% 26%,
45% 35%,
45% 45%,
40% 55%,
10% 90%,
10% 98%,
8% 100%,
0 100%
);
width: 300px;
height: 320px;
}
p {
font-size: 0.9rem;
}
仿§æ¸
| Specification |
|---|
| CSS Shapes Module Level 1> # funcdef-basic-shape-polygon> |
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- ãã®ãã¼ã¿åã使ç¨ããããããã£:
clip-path,shape-outside - åºæ¬ã·ã§ã¤ãã®ã¬ã¤ã