CSS @whenã®åãè§£ãæŸã¡ãåçã§ã¬ã¹ãã³ã·ããªãŠã§ãäœéšãå®çŸãæç¢ºãªäŸã§æ§ã ãªæ¡ä»¶ã«åºã¥ããã¹ã¿ã€ã«é©çšãåŠã³ãŸãã
CSS @when: ã¢ãã³ãŠã§ããã¶ã€ã³ã®ããã®æ¡ä»¶ä»ãã¹ã¿ã€ãªã³ã°ããã¹ã¿ãŒãã
é²åãç¶ãããŠã§ãéçºã®äžçã«ãããŠãåçã§ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããèœåã¯æãéèŠã§ããããžã¥ã¢ã«è¡šçŸã®åºç€ã§ããCSSã¯ãéçºè
ãããã€ã³ããªãžã§ã³ãã§é©å¿æ§ã®é«ããŠã§ããµã€ããæ§ç¯ã§ããããã«ãã匷åãªæ©èœãå°å
¥ãç¶ããŠããŸãããã®ãããªç»æçãªæ©èœã®äžã€ã@when
ã¢ããã«ãŒã«ã§ããããã«ãããæ¡ä»¶ä»ãã¹ã¿ã€ãªã³ã°ãå¯èœã«ãªããç¹å®ã®æ¡ä»¶ãæºããããå Žåã«ã®ã¿CSSã«ãŒã«ãé©çšã§ããŸããããã¯ãçã«ã¬ã¹ãã³ã·ãã§æèãæèãããã¶ã€ã³ãäœæããããã®å¯èœæ§ã®äžçãéããŸãã
CSS @whenãšã¯ïŒ
@when
ã¢ããã«ãŒã«ã¯ã@media
ãŸãã¯@supports
ã«ãŒã«ãšé£æºããŠæ©èœãããCSS仿§ãžã®åŒ·åãªè¿œå æ©èœã§ããããã¯æ¡ä»¶ä»ããããã¯ãšããŠæ©èœãããã®ã¹ã³ãŒãå
ã®CSS宣èšã¯ãæå®ãããæ¡ä»¶ãçãšè©äŸ¡ãããå Žåã«ã®ã¿é©çšãããŸããæ¬è³ªçã«ãããã¯ç¹å®ã®ã¹ã¿ã€ã«ããã€ã¢ã¯ãã£ãã«ãªãããå¶åŸ¡ããããã®ããããã现ãã衚çŸåè±ããªæ¹æ³ãæäŸããåŸæ¥ã®@media
ã¯ãšãªã®ã¿ã®ãããã¯ã¬ãã«ã®æ¡ä»¶ä»ããè¶
ããŠããŸãã
ããã¯ãCSSã®ããã®é«åºŠã«æŽç·Žããã`if`æã ãšèããŠãã ãããåºç¯ãªæ¡ä»¶ã«åºã¥ããŠã¹ã¿ã€ã«äžåŒãé©çšãã代ããã«ã@when
ã䜿çšãããšãã«ãŒã«å
ã®ç¹å®ã®å®£èšãã¿ãŒã²ããã«ã§ããã¹ã¿ã€ã«ã·ãŒããããå¹ççã§ä¿å®ããããããŸãã
çžä¹å¹æ: @whenãš@mediaããã³@supportsã®çµã¿åãã
@when
ã®çã®åã¯ãæ¢åã®æ¡ä»¶ä»ãã¢ããã«ãŒã«ãšçµã¿åãããŠäœ¿çšããããšãã«çºæ®ãããŸãã
1. @mediaã¯ãšãªãš@when
ããã¯ããããã@when
ã®æãäžè¬çã§åœ±é¿åã®ãã䜿çšäŸã§ããåŸæ¥ã¯ãCSSã«ãŒã«å
šäœã@media
ã¯ãšãªå
ã«ã©ããããŠãããããããŸããã@when
ã䜿çšãããšãã¡ãã£ã¢ã¯ãšãªã®æ¡ä»¶ã«åºã¥ããŠãã«ãŒã«å
ã®ç¹å®ã®å®£èšãæ¡ä»¶ä»ãã§é©çšã§ããããã«ãªããŸãã
äŸ: ã¬ã¹ãã³ã·ãã¿ã€ãã°ã©ãã£
äŸãã°ã段èœã®ãã©ã³ããµã€ãºã調æŽããããããã¥ãŒããŒãã768ãã¯ã»ã«ããåºãå Žåã«ã®ã¿èª¿æŽããããšããŸãã@when
ããªããã°ã次ã®ããã«ãããããããŸããã
.my-paragraph {
font-size: 16px;
}
@media (min-width: 768px) {
.my-paragraph {
font-size: 18px;
}
}
ããã§ã@when
ã䜿çšãããšãåãçµæãããç°¡æœã«ãããåªããå¶åŸ¡ã§å®çŸã§ããŸãã
.my-paragraph {
font-size: 16px;
@when (min-width: 768px) {
font-size: 18px;
}
}
ãã®äŸã§ã¯:
- åºæ¬ã®
font-size
ã§ãã16px
ã¯åžžã«é©çšãããŸãã 18px
ã®font-size
ã¯ããã¥ãŒããŒãã®å¹ ã768ãã¯ã»ã«ä»¥äžã®å Žåã«ã®ã¿é©çšãããŸãã
ãã®ã¢ãããŒãã¯ãã«ãŒã«ã»ããå šäœãè€è£œããããšãªããç»é¢ãµã€ãºãåãããã®ä»ã®ã¡ãã£ã¢æ©èœã«åºã¥ããŠç¹å®ã®ããããã£ããã现ãã調æŽããã®ã«éåžžã«åœ¹ç«ã¡ãŸãã
ã°ããŒãã«ãªäŸ: æ§ã ãªããã€ã¹ã«å¯Ÿå¿ããUIèŠçŽ ã®é©å¿
ã°ããŒãã«ãªeã³ããŒã¹ãã©ãããã©ãŒã ãèããŠã¿ãŸããããååã«ãŒãã¯ãã¢ãã€ã«ããã€ã¹ã§ã¯ã³ã³ãã¯ããªãã¥ãŒã衚瀺ãããã倧ããªç»é¢ã§ã¯ãã詳现ãªãã¥ãŒã衚瀺ãããããããŸããã@when
ãš@media
ã䜿çšããããšã§ããããã®é·ç§»ããšã¬ã¬ã³ãã«åŠçã§ããŸãã
.product-card {
padding: 10px;
text-align: center;
@when (min-width: 600px) {
padding: 20px;
text-align: left;
}
@when (min-width: 1024px) {
padding: 30px;
display: flex;
align-items: center;
}
}
.product-image {
width: 100%;
height: 150px;
@when (min-width: 600px) {
width: 200px;
height: 200px;
}
@when (min-width: 1024px) {
width: 250px;
height: 250px;
margin-right: 20px;
}
}
ããã«ããã.product-card
ãšãã®å
éšèŠçŽ ã§ãã.product-image
ãªã©ãããã¥ãŒããŒããµã€ãºã倧ãããªãã«ã€ããŠã¹ã¿ã€ã«ã段éçã«é©å¿ãããäžçäžã®å¹
åºãããã€ã¹ã§ã«ã¹ã¿ãã€ãºãããäœéšãæäŸã§ããŸãã
2. @supportsã¯ãšãªãš@when
@supports
ã¢ããã«ãŒã«ã䜿çšãããšããã©ãŠã¶ãç¹å®ã®CSSããããã£ãšå€ã®ãã¢ããµããŒãããŠãããã©ããã確èªã§ããŸããããã@when
ãšçµã¿åãããããšã§ãç¹å®ã®ãã©ãŠã¶æ©èœãå©çšå¯èœãªå Žåã«ã®ã¿ã¹ã¿ã€ã«ãæ¡ä»¶ä»ãã§é©çšã§ããŸãã
äŸ: æ°ããCSSæ©èœã®äœ¿çš
å®éšçãªbackdrop-filter
ããããã£ã䜿çšããããšæ³åããŠãã ããããã¹ãŠã®ãã©ãŠã¶ãå€ãããŒãžã§ã³ãããããµããŒãããŠããããã§ã¯ãããŸããã@when
ãš@supports
ã䜿çšããŠããããé©åã«é©çšã§ããŸãã
.modal-background {
background-color: rgba(0, 0, 0, 0.5);
@when supports (backdrop-filter: blur(10px)) {
backdrop-filter: blur(10px);
}
}
ãã®å Žå:
- ãã©ãŒã«ããã¯ãšããŠ
background-color
ã¯åžžã«é©çšãããŸãã backdrop-filter
ã¯ããã©ãŠã¶ãbackdrop-filter: blur(10px)
宣èšããµããŒãããŠããå Žåã«ã®ã¿é©çšãããŸãã
ããã¯ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ãã«ãšã£ãŠéåžžã«éèŠã§ãããææ°ã®CSSæ©èœããµããŒãããŠããªãç°å¢ã§ãããã¶ã€ã³ãæ©èœçã§èŠèŠçã«é åçã§ããããšãä¿èšŒããŸãã
ã°ããŒãã«ãªäŸ: ã¢ãã¡ãŒã·ã§ã³ã®ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ã
ç¹çްãªã¢ãã¡ãŒã·ã§ã³ãç¹åŸŽãšãããŠã§ããµã€ããèããŠã¿ãŸããããäžéšã®é«åºŠãªã¢ãã¡ãŒã·ã§ã³ã¯ãanimation-composition
ãç¹å®ã®ã€ãŒãžã³ã°é¢æ°ãªã©ã®æ°ããCSSããããã£ã«äŸåããå ŽåããããŸãã@when
ãš@supports
ã䜿çšããŠããããã®é«åºŠãªããããã£ããµããŒãããªããã©ãŠã¶ã«ãã©ãŒã«ããã¯ãããã·ã³ãã«ãªã¢ãã¡ãŒã·ã§ã³ãæäŸã§ããŸãã
.animated-element {
transform: translateX(0);
transition: transform 0.5s ease-in-out;
@when supports (animation-composition: replace) {
/* More advanced animation properties or sequences */
animation: slideIn 1s forwards;
animation-composition: replace;
animation-timing-function: cubic-bezier(0.25, 0.1, 0.25, 1);
}
}
@keyframes slideIn {
from { transform: translateX(-100%); }
to { transform: translateX(0); }
}
ããã§ã¯ãanimation-composition: replace
ããµããŒããããã©ãŠã¶ã¯ããæŽç·Žãããã¢ãã¡ãŒã·ã§ã³ã·ãŒã±ã³ã¹ãåŸãããŸããããã®ä»ã®ãã©ãŠã¶ã¯ããã·ã³ãã«ãªtransition
ããããã£ã«ãã©ãŒã«ããã¯ããäžçäžã®ãŠãŒã¶ãŒã«äžè²«æ§ã®ããïŒãã ã倿§ãªïŒäœéšãä¿èšŒããŸãã
3. è€æ°ã®æ¡ä»¶ãš@whenã®çµã¿åãã
åäžã®@when
ã«ãŒã«å
ã«è€æ°ã®æ¡ä»¶ãé£éãããããšãã§ããããã«ç¹å®ã®ã¹ã¿ã€ãªã³ã°ããžãã¯ãäœæã§ããŸããããã¯ãand
ãor
ãnot
ãªã©ã®è«çæŒç®åã䜿çšããŠè¡ãããŸãã
äŸ: è€éãªã¬ã¹ãã³ã·ãããžãã¯
ãµã€ãããŒãå°ããç»é¢ã§ã®ã¿é衚瀺ã«ãããã ãç¹å®ã®ãŠãŒã¶ãŒèšå®ïŒä»®ã«bodyã®ã¯ã©ã¹ã§ç€ºãããïŒãã¢ã¯ãã£ãã§ãªãå Žåã«ã®ã¿é衚瀺ã«ãããšããã·ããªãªãæ³åããŠã¿ãŸãããã
.sidebar {
display: block;
width: 250px;
/* Hide sidebar on small screens AND not in preference mode */
@when (max-width: 767px) and not (.no-sidebar-on-mobile) {
display: none;
}
/* Show sidebar on larger screens OR if preference mode is active on small screens */
@when (min-width: 768px) or (.sidebar-on-mobile) {
display: block;
}
}
ãã®ã¬ãã«ã®æ¡ä»¶ä»ãã¹ã¿ã€ãªã³ã°ã«ãããç¹å®ã®æèããŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ã«åãããéåžžã«è€éãªUIã®æåãå¯èœã«ãªããŸãã
æ§æãšãã¹ããã©ã¯ãã£ã¹
@when
ã®åºæ¬çãªæ§æã¯ç°¡åã§ãã
selector {
property: value;
@when (condition) {
property: value;
}
}
è€æ°ã®æ¡ä»¶ãçµã¿åãããå Žåãæ§æã¯æ¬¡ã®ããã«ãªããŸãã
selector {
property: value;
@when (condition1) and (condition2) {
property: value;
}
@when (condition1) or (condition2) {
property: value;
}
@when not (condition) {
property: value;
}
}
äž»ãªãã¹ããã©ã¯ãã£ã¹:
- å¯èªæ§ãåªå
ãã:
@when
ã¯ã¹ã¿ã€ã«ãç°¡æœã«ã§ããŸãããè§£èªãå°é£ã«ãªãå¯èœæ§ã®ããé床ã«è€éãªãã¹ããããæ¡ä»¶ã¯é¿ããŠãã ãããå¿ èŠã§ããã°ãè€éãªããžãã¯ãå¥ã ã®ã«ãŒã«ã«åå²ããŸãã - ããã°ã¬ãã·ããšã³ãã³ã¹ã¡ã³ã: ç¹ã«
@supports
ãšäœµçšããå Žåã@when
ã«ãŒã«ãã¿ãŒã²ãããšããæ©èœããµããŒãããªããã©ãŠã¶ãç°å¢ã®ããã«ãåžžã«é©åãªãã©ãŒã«ããã¯ãæäŸããŠãã ããã - ããã©ãŒãã³ã¹:
@when
èªäœã¯äžè¬çã«å¹ççã§ãããè§£æããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ã®ããé床ã«è€éãªæ¡ä»¶ããžãã¯ã«ã¯æ³šæããŠãã ããããã ããããã¯éåžžã®äœ¿çšã§ã¯ãã£ãã«åé¡ã«ã¯ãªããŸããã - ãã©ãŠã¶ãµããŒã:
@when
ãšãã®é¢é£ã¢ããã«ãŒã«ã®ãã©ãŠã¶ãµããŒãã«æ³šæãæã£ãŠãã ãããå°å ¥æç¹ã§ã¯æ¡çšãæ¡å€§ããŠããŸãããã¿ãŒã²ãããšãããã©ãŠã¶å šäœã§ãã¹ãããããšãäžå¯æ¬ ã§ããCan I Useãªã©ã®ããŒã«ã䜿çšããŠãææ°ã®äºææ§æ å ±ã確èªããŠãã ããã - ã°ããŒãã«ãªå±é: ã°ããŒãã«ãªèŠèŽè
åãã«èšèšããå Žåã
@when
ãš@media
ãæŽ»çšããŠãäžçäžã«æ®åããŠããå€çš®å€æ§ãªããã€ã¹ãµã€ãºãè§£å床ã«å¯Ÿå¿ããŸããç°ãªããããã¯ãŒã¯ç¶æ³ãèæ ®ãã@when
å ã§prefers-reduced-motion
ã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãã¢ãã¡ãŒã·ã§ã³ãç¡å¹ã«ããããšãéžæãããŠãŒã¶ãŒã«å¯Ÿå¿ããããšãã§ããŸãã - ä¿å®æ§:
@when
ã䜿çšããŠãé¢é£ããã¹ã¿ã€ã«ããŸãšããŸããããããã£ã®å€ãæ¡ä»¶ã«åºã¥ããŠå€æŽãããå Žåãããã©ã«ãå€ãšæ¡ä»¶ä»ãå€ã®äž¡æ¹ãåãã«ãŒã«ãããã¯å ã«æã€æ¹ããç°ãªã@media
ã¯ãšãªã«æ£åšããããããä¿å®æ§ãé«ããªãããšããããããŸãã
ãã©ãŠã¶ã®ãµããŒããšå°æ¥ã®å±æ
@when
ã¢ããã«ãŒã«ã¯ãCSSã®äžçã§ã¯æ¯èŒçæ°ããè¿œå æ©èœã§ããæåã®åºç¯ãªæ¡çšæç¹ã§ã¯ãChromeãFirefoxãSafariãEdgeãªã©ã®ã¢ãã³ãã©ãŠã¶ã§ãµããŒããããŠããŸãããã ããç¹å®ã®ããŒãžã§ã³ãæ©èœã«é¢ããææ°ã®ãã©ãŠã¶äºææ§ããŒã¿ãåžžã«ç¢ºèªããããšãéèŠã§ãã
W3C CSSã¯ãŒãã³ã°ã°ã«ãŒãã¯ãCSSã®æ©èœãæŽç·Žãããæ¡å€§ãç¶ããŠããŸãã@when
ã®ãããªæ©èœã¯ãä»ã®æ¡ä»¶ä»ãã«ãŒã«ããã¹ãã£ã³ã°ãšãšãã«ãCSSã«ãããããããã°ã©ã çã§è¡šçŸåè±ããªã¹ã¿ã€ãªã³ã°æ©èœãžã®ç§»è¡ã瀺åããŠããŸãããã®åŸåã¯ã倿§ãªã°ããŒãã«ãŠãŒã¶ãŒããŒã¹ã«å¯Ÿå¿ãããè€éã§é©å¿æ§ãããããŠãŒã¶ãŒãã¬ã³ããªãŒãªãŠã§ãäœéšãæ§ç¯ããããã«äžå¯æ¬ ã§ãã
ãŠã§ããã¶ã€ã³ãé©å¿æ§ãšããŒãœãã©ã€ãŒãŒã·ã§ã³ãåãå
¥ãç¶ããã«ã€ããŠã@when
ã¯éçºè
ã®ããŒã«ãããã«äžå¯æ¬ ãªããŒã«ã«ãªãã§ããããããã€ã¹ã®ç¹æ§ãããã©ãŠã¶ã®æ©èœãŸã§ãå¹
åºãæ¡ä»¶ã«åºã¥ããŠã¹ã¿ã€ã«ã埮調æŽãããã®èœåã¯ãããæŽç·Žãããæèãæèããã€ã³ã¿ãŒãã§ãŒã¹ãäœæããåãç§ãã¡ã«äžããŠãããŸãã
çµè«
CSS @when
ã¯ãæ¡ä»¶ä»ãã¹ã¿ã€ã«ãèšè¿°ããèœåã倧å¹
ã«åäžãããã匷åã§ãšã¬ã¬ã³ããªæ©èœã§ãã@media
ã@supports
ãšã®çžä¹å¹æã掻çšããããšã§ãéçºè
ã¯ããã¬ã¹ãã³ã·ãã§ãé©å¿æ§ããããå
ç¢ãªãŠã§ããã¶ã€ã³ãäœæã§ããŸããç°ãªãç»é¢ãµã€ãºã«åãããŠã¿ã€ãã°ã©ãã£ã調æŽããå Žåã§ããé«åºŠãªCSSæ©èœãæ¡ä»¶ä»ãã§é©çšããå Žåã§ããè€éãªã€ã³ã¿ã©ã¯ãã£ãUIãæ§ç¯ããå Žåã§ãã@when
ã¯çŸä»£ã®ãŠã§ãéçºã®èŠæ±ãæºããããã«å¿
èŠãªç²ŸåºŠãšæè»æ§ãæäŸããŸãããã®æ©èœãæ¡çšããããšã¯ãééããªããã°ããŒãã«ãªèŠèŽè
ã«ãšã£ãŠããæŽç·ŽããããŠãŒã¶ãŒäžå¿ã®ããžã¿ã«äœéšã«ã€ãªããã§ãããã
仿¥ããããªãã®ãããžã§ã¯ãã§@when
ã詊ããŠã¿ãŠãããã¹ããŒãã§ãããé©å¿æ§ãé«ããå°æ¥æ§ã®ãããŠã§ããµã€ããæ§ç¯ããŸãããã