mask-size
Baseline
åºãå©ç¨å¯è½
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2023å¹´12æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
mask-size 㯠CSS ã®ããããã£ã§ãæå®ãããã¹ã¯ç»åã®ãµã¤ãºãæå®ãã¾ãããã¹ã¯ç»åã®ãµã¤ãºã¯ããã®ã¢ã¹ãã¯ãæ¯ãç¶æããããã«ãå®å
¨ã«ã¾ãã¯é¨åçã«å¶ç´ãããã¨ãã§ãã¾ãã
æ§æ
/* ãã¼ã¯ã¼ãæ§æ */
mask-size: cover;
mask-size: contain;
mask-size: auto;
/* å¤ 1 ã¤ã®æ§æ */
/* ç»åã®å¹
(é«ã㯠'auto' ã«è¨å®) */
mask-size: 50%;
mask-size: 3em;
mask-size: 12px;
/* å¤ 2 ã¤ã®æ§æ */
/* 1 ã¤ç®ã®å¤: ç»åã®å¹
ã2 ã¤ç®ã®å¤: é«ã */
mask-size: 3em 25%;
mask-size: auto 6px;
mask-size: auto 50%;
/* è¤æ°ã®å¤ */
mask-size: auto, contain;
mask-size:
50%,
50% 25%,
auto 25%;
mask-size: 6px, auto, contain;
/* ã°ãã¼ãã«å¤ */
mask-size: inherit;
mask-size: initial;
mask-size: revert;
mask-size: revert-layer;
mask-size: unset;
å¤
mask-size ããããã£ã¯ãã«ã³ãã§åºåããã <bg-size> å¤ã®ãªã¹ããåãå
¥ãã¾ãã<bg-size> å¤ã¯ãcoverãcontainãå¹
ã¨é«ãï¼ãã®é ï¼ãæå®ãã 2 ã¤ã®å¤ãã¾ãã¯å¹
ãæå®ãã 1 ã¤ã®å¤ï¼ãã®å ´åãé«ã㯠auto ã«è¨å®ããã¾ãï¼ã®ããããã§ããå¤ã«ã¯ã次ã®ãã®ãããã¾ãã
contain-
ãã¹ã¯ç»åã®ã¢ã¹ãã¯ãæ¯ãç¶æããã¾ã¾ããã¹ã¯ç»åãæ¡å¤§ã¾ãã¯ç¸®å°ããããªãã³ã°ãå¼ã伸ã°ããè¡ããã¨ãªããã³ã³ããã¼å ã§ãã¹ã¯ãå¯è½ãªéã大ãããã¾ãã ãã¹ã¯ç»åãã³ã³ããã¼ãããå°ããå ´åã
mask-repeatããããã£ãno-repeatã«è¨å®ããã¦ããªãéãããã¹ã¯ã¯ã¿ã¤ã«ç¶ã«ç¹°ãè¿ããã¾ãã cover-
ç»åãå¯è½ãªéã大ããæ¡å¤§ç¸®å°ããç»åã®ã¢ã¹ãã¯ãæ¯ãç¶æãã¾ãããã¹ã¯ç»åã®ã¢ã¹ãã¯ãæ¯ãè¦ç´ ã¨ç°ãªãå ´åããã¹ã¯ç»åã¯ç¸¦ã¾ãã¯æ¨ªæ¹åã«åãåããã¾ãã
auto-
ãã¹ã¯ã½ã¼ã¹ã®å ã®ã¢ã¹ãã¯ãæ¯ãç¶æãã¾ããå¹ ã¨é«ãã®ä¸¡æ¹ã«è¨å®ããã¨ããã¹ã¯ãªã½ã¼ã¹ã®å ã®ãµã¤ãºã使ç¨ããã¾ãããã以å¤ã®å ´åã
autoã¯ããã¹ã¯ç»åã®å ã®ã¢ã¹ãã¯ãæ¯ãç¶æãããããã«ã対å¿ããæ¹åã«ãã¹ã¯ç»åãå¤åãã¾ãã <length>-
æå®ããé·ãã§ã対å¿ãã寸æ³ï¼æåã®å¤ã¾ãã¯å¯ä¸ã®å¤ã¨ãã¦è¨å®ããå ´åã¯å¹ ã2 ã¤ç®ã®å¤ã¨ãã¦è¨å®ããå ´åã¯é«ãï¼ã§ãã¹ã¯ç»åãã¬ã³ããªã³ã°ãã¾ããè² ã®å¤ã¯ä½¿ç¨ã§ãã¾ããã
<percentage>-
mask-originããããã£ã§å®ç¾©ããããããã¯ã¹ã®åºæºé åã«å¯¾ããæå®ãããã¼ã»ã³ãå¤ã§ã対å¿ãã寸æ³ã«ãã¹ã¯ç»åãã¬ã³ããªã³ã°ãã¾ãããã®ããããã£ã®æ¢å®å¤ã¯padding-boxã§ããè² ã®å¤ã¯ä½¿ç¨ã§ãã¾ããã
解説
mask-size ããããã£ã¯ããã¹ã¯ã¬ã¤ã¤ã¼ã®ãµã¤ãºãè¨å®ããããã«ä½¿ç¨ããã¾ãã
1 ã¤ã®è¦ç´ ã«è¤æ°ã®ãã¹ã¯ã¬ã¤ã¤ã¼ãé©ç¨ãããã¨ãã§ãã¾ãããã¹ã¯ã¬ã¤ã¤ã¼ã®æ°ã¯ãmask-image ããããã£ã®å¤ã«ã«ã³ãã§åºåãããå¤ã®æ°ã«ãã£ã¦æ±ºã¾ãã¾ãï¼å¤ã¯ã none ã®å ´åã§ããã¹ã¯ã¬ã¤ã¤ã¼ã使ãã¾ãï¼ã
ã«ã³ãã§åºåãããå¤ã®ãªã¹ãå
ã®ããããã® mask-size å¤ã¯ã mask-image å¤ã®ãªã¹ãã§å®ç¾©ããã¦ããé¢é£ä»ãããããã¹ã¯ã¬ã¤ã¤ã¼ã¨é çªã«å¯¾å¿ã¥ãããã¾ãã 2 ã¤ã®ããããã£ã®å¤ã®æ°ã«éããããå ´åã¯æ¬¡ã®ããã«ãªãã¾ãã
mask-sizeã®æ°ãmask-imageã®æ°ãããå¤ãå ´åãmask-sizeã®ä½åãªå¤ã¯ä½¿ç¨ããã¾ãããmask-sizeã®æ°ãmask-imageã®æ°ãããå°ãªãå ´åãmask-sizeã®å¤ãç¹°ãè¿ããã¾ãã
ããããã® mask-size å¤ã¯ <bg-size> å¤ã§ããããããã® <bg-size> ã宣è¨ããæ¹æ³ã¯ 3 ã¤ããã¾ãã1 ã¤ã¯ãã¼ã¯ã¼ãã2 ã¤ã®é·ãããã¼ã»ã³ãå¤ãã¾ãã¯ãã¼ã¯ã¼ã autoããã 1 ã¤ã¯ 1 ã¤ã®é·ãããã¼ã»ã³ãå¤ãã¾ã㯠auto ã§ãã
- å©ç¨ã§ãããã¼ã¯ã¼ãã¯
coverããã³containã§ãã - 2 ã¤ã®å¤ãæå®ããã¦ããå ´åãæåã®å¤ã¯ãã¹ã¯ã®å¹ ãå®ç¾©ãã2 ã¤ç®ã®å¤ã¯ãã¹ã¯ã®é«ããå®ç¾©ãã¾ãã
- 1 ã¤ã®å¤ãæå®ããã¦ããå ´åããã®å¤ã¯ãã¹ã¯ã®å¹
ã®ã¿ãå®ç¾©ããé«ãã¯
autoã«è¨å®ããã¾ãã
å¹
ã¨é«ãã®å¤ã¯ã<length>ã<percentage>ãã¾ãã¯æ¢å®å¤ã§ãã auto ãã¼ã¯ã¼ãã§ãã 1 ã¤ã¾ãã¯ä¸¡æ¹ã®å¤ã auto ã«è¨å®ããã¨ããã¹ã¯ç»åã®å
ã®ã¢ã¹ãã¯ãæ¯ãç¶æããã¾ãã
ããã¦ããã¹ã¯ç»åã®æç»ã®å¤§ããã¯ã以ä¸ã®ããã«è¨ç®ããã¾ãã
mask-sizeã®ä¸¡æ¹ã®è¦ç´ ãæå®ãããautoã§ã¯ãªãå ´åããã¹ã¯ç»åã¯æå®ããã寸æ³ã§æç»ããã¾ããmask-sizeãcontainã¾ãã¯coverã§ãã£ãå ´åãç»åã¯ããã¹ã¯é ç½®é åã«å«ã¾ãããã¾ãã¯ãã¹ã¯é ç½®é åãè¦ãæå¤§ã®å¯¸æ³ã§ããã®åºæã®ç¸¦æ¨ªæ¯ãç¶æãã¦æç»ããã¾ããç»åãåºæã®ç¸¦æ¨ªæ¯ãæããªãå ´åã¯ããã¹ã¯é ç½®é åã®å¤§ããã§æç»ããã¾ããmask-sizeãautoã§ããå ´åï¼ããã¯auto autoã«è§£æ±ºããã¾ãï¼ãã¬ã³ããªã³ã°ã夿´ãã CSS ãé©ç¨ããã¦ããªãå ´åã«ãã¹ã¯ã表示ããããµã¤ãºã§ã¬ã³ããªã³ã°ããã¾ããããããã® å å¨ãµã¤ãºã§ãã CSS ã°ã©ãã¼ã·ã§ã³ ã®å ´åã®ããã«ãå å¨çãªå¯¸æ³ãå å¨çãªæ¯çãæå®ããã¦ããªãå ´åããã¹ã¯ã®ä½ç½®æå®é åã®ãµã¤ãºã§ã¬ã³ããªã³ã°ããã¾ãããã®ãµã¤ãºã¯ãmask-originï¼æ¢å®ã§ã¯border-boxï¼ã§å®ç¾©ããã¾ãã ãã¹ã¯ã½ã¼ã¹ã«å¯¸æ³ããªããæ¯çï¼ã¢ã¹ãã¯ãæ¯ï¼ãããå ´åãå¤autoãæå®ããã¨ãcontainãæå®ãããå ´åã¨åãããã«ã¬ã³ããªã³ã°ããã¾ããç»åã« 1 ã¤ã®å å¨ãµã¤ãºã¨æ¯çãæå®ããã¦ããå ´åããã® 1 ã¤ã®å¯¸æ³ã¨æ¯çã«ãã£ã¦æ±ºå®ããããµã¤ãºã§ã¬ã³ããªã³ã°ããã¾ããç»åã« 1 ã¤ã®å å¨ãµã¤ãºãæå®ããã¦ããããæ¯çãæå®ããã¦ããªãå ´åãå å¨ãµã¤ãºã¨ãã¹ã¯ã®ä½ç½®æå®é åã®å¯¾å¿ãã寸æ³ã使ç¨ãã¦ã¬ã³ããªã³ã°ããã¾ããmask-sizeã®ä¸æ¹ãautoæåã§ãã䏿¹ãautoæåã§ã¯ãªãããããããã¹ã¦ã®åä¸ã®å¤ã«é©ç¨ãããå ´åããã¹ã¯ã½ã¼ã¹ã«å å¨çãªæ¯çãããã®ã§ããã°ãã¢ã¹ãã¯ãæ¯ãç¶æããã¾ããå å¨çãªæ¯çããªãå ´åãautoå¤ã¯ãã¹ã¯ã®ä½ç½®æå®é åã®ãµã¤ãºã¨è¦ãªããã¾ãã
䏿¬æå®ããããã£ã®ãã¹ã¦ã®å奿å®è¦ç´ ã¨åæ§ã«ã mask 䏿¬æå®ããããã£ãè¨å®ããã¦ããã mask-size ããããã£ã®å¤ãã©ã®ãã¹ã¯ã¬ã¤ã¤ã¼ã§ãå®ç¾©ããã¦ããªãå ´åããã®ãã¹ã¯ã¬ã¤ã¤ã¼ã® mask-size å¤ã¯åæå¤ auto ã«ãªã»ããããã¾ãã
å ¬å¼å®ç¾©
| åæå¤ | auto |
|---|---|
| é©ç¨å¯¾è±¡ | ãã¹ã¦ã®è¦ç´ ã SVG ã®å ´å㯠<defs> è¦ç´ ããã¹ã¦ã®ã°ã©ãã£ãã¯è¦ç´ ãé¤ããã³ã³ããã¼è¦ç´ ã«é©ç¨ããã |
| ç¶æ¿ | ãªã |
| è¨ç®å¤ | æå®éãããã ãç¸å¯¾çãªé·ãã¯ã¯çµ¶å¯¾çãªé·ãã«å¤æããã |
| ã¢ãã¡ã¼ã·ã§ã³ã®ç¨®é¡ | å復å¯è½ãªã¹ã |
形弿æ³
mask-size =
<bg-size>#
<bg-size> =
[ <length-percentage [0,â]> | auto ]{1,2} |
cover |
contain
<length-percentage> =
<length> |
<percentage>
ä¾
>ãã¹ã¯ã®å¤§ããããã¼ã»ã³ãå¤ã§è¨å®
ãã®ä¾ã§ã¯ãåºæ¬çãªä½¿ç¨æ³ã¨ãmask-size ã®ãã¼ã»ã³ãå¤ã®è¡¨ç¤ºæ¹æ³ã示ãã¦ãã¾ãã
HTML
2 ã¤ã® <div> è¦ç´ ãè¨ç½®ãã¾ãã
<div class="width"></div>
<div class="height"></div>
CSS
<div> è¦ç´ ã¯ãå¹
ã® 2 åã®é«ãã§ãããã°ã©ãã¼ã·ã§ã³ã®èæ¯ã¨ãã¹ã¯ã«å¯¾å¿ããããã«å®ç¾©ããã¦ãã¾ãã
div {
width: 200px;
height: 400px;
background: blue linear-gradient(red, blue);
mask-image: url("/shared-assets/images/examples/mdn.svg");
}
1 ã¤ã® <div> è¦ç´ ã®ãã¹ã¯ã®å¹
㯠50% ã«è¨å®ãããé«ãã¯æ¢å®ã§ auto ã«ãªãã¾ãã2 ã¤ç®ã® <div> è¦ç´ ã®ãã¹ã¯ã®é«ã㯠50% ã«è¨å®ãããå¹
㯠auto ã«è¨å®ããã¾ãã
.width {
mask-size: 50%;
}
.height {
mask-size: auto 50%;
}
width ã®å ´åããã¹ã¯ã¯å¹
100pxï¼å¹
200px ã®è¦ç´ ã® 50%ï¼ã§ã¬ã³ããªã³ã°ããã¾ããé«ãã¯æ¢å®ã§ auto ã¨ãªãããã¹ã¯ã®ã¢ã¹ãã¯ãæ¯ãç¶æããã¾ãã
height ã®å ´åããã¹ã¯ã¯é«ã 200pxï¼é«ãã 400px ã®ã³ã³ããã¼ã® 50%ï¼ã§ã¬ã³ããªã³ã°ããã¾ããå¹
ã¯ããã¹ã¯ã®ã¢ã¹ãã¯ãæ¯ãç¶æããããã«ãæç¤ºçã« auto ã«è¨å®ããã¾ãã
çµæ
cover 㨠contain
ãã®ä¾ã§ã¯ããmask-size ã®ãã¼ã¯ã¼ãã®å¤ã示ãã¦ãã¾ãã
HTML
3 ã¤ã® <section> è¦ç´ ãå®ç¾©ãã¦ãããããããã«ç°ãªãã¯ã©ã¹åãã¤ãã¦ãããããããã« <div> ãããã¾ãã
<section class="auto">
<div></div>
</section>
<section class="cover">
<div></div>
</section>
<section class="contain">
<div></div>
</section>
CSS
<div> è¦ç´ ã¯ãå¹
ã® 2 åã®é«ãã§ãããã°ã©ãã¼ã·ã§ã³ã®èæ¯ã¨ãã¹ã¯ã«å¯¾å¿ããããã«å®ç¾©ããã¦ãã¾ãã
div {
width: 200px;
height: 400px;
background: blue linear-gradient(red, blue);
mask-image: url("/shared-assets/images/examples/mask-star.svg");
}
2 ã¤ã® <div> è¦ç´ ã® mask-size ã¯ãããããã£ã®ãã¼ã¯ã¼ãå¤ã®ããããã«è¨å®ããã¦ãã¾ãã3 ã¤ç®ã® <div> ã® mask-size 㯠auto ã«è¨å®ããã¦ããããã¹ã¯ã®å
ã®å
å¨ãµã¤ãºã示ããã¦ãã¾ãã
.auto div {
mask-size: auto;
}
.cover div {
mask-size: cover;
}
.contain div {
mask-size: contain;
}
ããããã£ã®å¤ã¯ãçæã³ã³ãã³ãã使ç¨ãã¦è¡¨ç¤ºããã¾ãã
section::before {
content: "mask-size: " attr(class) ";";
display: block;
text-align: center;
border-bottom: 1px solid;
}
çµæ
auto ã使ç¨ããã¨ãæã¯å
å¨ãµã¤ãºã§ãã 100px à 100px ã§è¡¨ç¤ºããã¾ããcover ã§ã¯ãæã¯åºæºããã¯ã¹å
¨ä½ãè¦ãããã«é«ã 400px ã¾ã§ä¼¸é·ãã¾ããcontain ã§ã¯ãæã¯ããã®ä¸è¾ºã®é·ããåºæºããã¯ã¹ã¨åãã«ãªãã¾ã§ä¼¸é·ãã¾ããããã¯ãæã¯å¯è½ãªéã大ããï¼å¹
200pxï¼ãªãããåºæºããã¯ã¹å
ã«åã¾ããã¨ãæå³ãã¦ãã¾ãã
ãã¹ã¯ãã³ã³ããã¼ããã大ããå ´å
ä¸è¨ã¨åã HTML 㨠CSS ã使ç¨ããåºæºããã¯ã¹ã®ãµã¤ãºã®ã¿ã夿´ãã¦ãåºæºããã¯ã¹ããã¹ã¯ã®å å¨ãµã¤ãºãããå°ããå ´åã«ä½ãèµ·ãããããã®ä¾ã§æ¢ãã¾ãã
å¯ä¸ã®éãã¯ãã³ã³ããã¼ã®ãµã¤ãºï¼ããã³çæã³ã³ãã³ãï¼ã§ãã
div {
width: 70px;
height: 70px;
}
contain ã®å¤ã¯ãåºæºããã¯ã¹å
ã®ãã¹ã¯ãå«ã¿ã¾ããcover ã®å¤ã¯ããã¹ã¯ãè¦ãã¾ããã©ã¡ãã®å ´åãããã¹ã¯ã¯å
ã®ã¢ã¹ãã¯ãæ¯ãç¶æããã¾ã¾ç¸®å°ããã¾ããauto ã«å¯¾å¿ãããã¹ã¯ã¯ããã®å
å¨çãªãµã¤ãºãããã¯ã¹ã®ãµã¤ãºããã大ãããããåãåããã¾ãã
仿§æ¸
| 仿§æ¸ |
|---|
| CSS Masking Module Level 1 > # the-mask-size > |