CSSã®åºæãµã€ãºãšã¢ã¹ãã¯ãæ¯ã«ã€ããŠæ·±ãæãäžããã³ã³ãã³ãã®æ¯çèšç®ãå®è£ ãã¯ããã¯ãã¬ã¹ãã³ã·ãWebãã¶ã€ã³ã«ããããã¹ããã©ã¯ãã£ã¹ã解説ããŸãã
CSSã®åºæãµã€ãºãšã¢ã¹ãã¯ãæ¯ïŒã³ã³ãã³ãã®æ¯çèšç®ããã¹ã¿ãŒãã
é²åãç¶ããWebéçºã®äžçã§ã¯ãã³ã³ãã³ããæ§ã ãªç»é¢ãµã€ãºã§ãã®æ¯çãç¶æããããšã¯æ¥µããŠéèŠã§ããCSSã®åºæãµã€ãºãšã¢ã¹ãã¯ãæ¯ã¯ããã®èª²é¡ã«å¯Ÿãã匷åãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãããã®å æ¬çãªã¬ã€ãã§ã¯ããã®ãã¯ããã¯ã®è€éãã«æ·±ãèžã¿èŸŒã¿ãã¬ã¹ãã³ã·ãã§èŠèŠçã«é åçãªãŠã§ããµã€ããäœæããããã®ç¥èãšããŒã«ãæäŸããŸãã
CSSã«ãããåºæãµã€ãºã®çè§£
ã¢ã¹ãã¯ãæ¯ã«ã€ããŠæ·±ãæãäžããåã«ãCSSã«ãããåºæãµã€ãºãçè§£ããããšãéèŠã§ããåºæãµã€ãºãšã¯ãèŠçŽ ã®å 容ã«ãã£ãŠæ±ºå®ããããèŠçŽ ã®èªç¶ãªå¯žæ³ãæããŸããäŸãã°ãç»åã®åºæã®å¹ ãšé«ãã¯ãç»åãã¡ã€ã«ã®å®éã®ãã¯ã»ã«å¯žæ³ã«ãã£ãŠå®çŸ©ãããŸãã
以äžã®ã·ããªãªãèããŠã¿ãŸãããã
- ç»åïŒåºæãµã€ãºã¯ç»åãã¡ã€ã«èªäœã®å¹ ãšé«ãã§ãïŒäŸïŒ1920x1080ãã¯ã»ã«ã®ç»åã¯ãåºæã®å¹ ã1920pxãåºæã®é«ãã1080pxã§ãïŒã
- åç»ïŒç»åãšåæ§ã«ãåºæãµã€ãºã¯åç»ã®è§£å床ã«å¯Ÿå¿ããŸãã
- ãã®ä»ã®èŠçŽ ïŒæç€ºçã«å¯žæ³ãã³ã³ãã³ããèšå®ãããŠããªã空ã®
divèŠçŽ ãªã©ãäžéšã®èŠçŽ ã¯æåãåºæã®ãµã€ãºãæã¡ãŸããããããã®ãµã€ãºã¯ãåšå²ã®èŠçŽ ãCSSã¹ã¿ã€ã«ãªã©ã®ä»ã®èŠå ã«äŸåããŸãã
ã¢ã¹ãã¯ãæ¯ãšã¯ïŒ
ã¢ã¹ãã¯ãæ¯ã¯ãèŠçŽ ã®å¹ ãšé«ãã®éã®æ¯äŸé¢ä¿ã§ããéåžžãå¹ ïŒé«ãïŒäŸïŒ16:9ã4:3ã1:1ïŒãšããŠè¡šçŸãããŸããã¢ã¹ãã¯ãæ¯ãç¶æããããšã§ããªãµã€ãºæã«èŠçŽ ãæªãããšãé²ããŸãã
æŽå²çã«ãéçºè
ã¯ã¢ã¹ãã¯ãæ¯ãç¶æããããã«JavaScriptãpadding-bottomããã¯ã«é Œã£ãŠããŸãããããããCSSã®aspect-ratioããããã£ã¯ãããã¯ãªãŒã³ã§å¹ççãªãœãªã¥ãŒã·ã§ã³ãæäŸããŸãã
aspect-ratioããããã£
aspect-ratioããããã£ã䜿çšãããšãèŠçŽ ã®æšå¥šãããã¢ã¹ãã¯ãæ¯ãæå®ã§ããŸãããã©ãŠã¶ã¯ããã®æ¯çã䜿çšããŠãããäžæ¹ã®å¯žæ³ã«åºã¥ããŠå¹
ãŸãã¯é«ããèªåçã«èšç®ããŸãã
æ§æïŒ
aspect-ratio: width / height;
ããã§ãwidthãšheightã¯æ£ã®æ°ïŒæŽæ°ãŸãã¯å°æ°ïŒã§ãã
äŸïŒ
16:9ã®ã¢ã¹ãã¯ãæ¯ãç¶æããã«ã¯ã次ã®ããã«èšè¿°ããŸãã
aspect-ratio: 16 / 9;
ããŒã¯ãŒãautoã䜿çšããããšãã§ããŸããautoã«èšå®ãããšãèŠçŽ ã®åºæã®ã¢ã¹ãã¯ãæ¯ïŒç»åãåç»ã®ããã«ã¢ã¹ãã¯ãæ¯ãæã€å ŽåïŒã䜿çšãããŸããèŠçŽ ã«åºæã®ã¢ã¹ãã¯ãæ¯ããªãå Žåããã®ããããã£ã¯å¹æããããŸããã
äŸïŒ
aspect-ratio: auto;
å®è·µçãªäŸãšå®è£
äŸ1ïŒã¬ã¹ãã³ã·ãç»å
ç»åã®çžŠæšªæ¯ãç¶æããããšã¯ãæªã¿ãé¿ããããã«éåžžã«éèŠã§ããaspect-ratioããããã£ã¯ãã®ããã»ã¹ãç°¡çŽ åããŸãã
HTMLïŒ

CSSïŒ
img {
width: 100%;
height: auto;
aspect-ratio: auto; /* ç»åã®åºæã®ã¢ã¹ãã¯ãæ¯ãäœ¿çš */
object-fit: cover; /* ãªãã·ã§ã³ïŒç»åãã³ã³ãããã©ã®ããã«åããããå¶åŸ¡ */
}
ãã®äŸã§ã¯ãç»åã®å¹
ã¯ã³ã³ããã®100%ã«èšå®ãããé«ãã¯ç»åã®åºæã®ã¢ã¹ãã¯ãæ¯ã«åºã¥ããŠèªåçã«èšç®ãããŸããobject-fit: cover;ã¯ãå¿
èŠã«å¿ããŠç»åãããªãã³ã°ããå¯èœæ§ããããŸãããç»åãæªãããšãªãã³ã³ãããåããããšãä¿èšŒããŸãã
äŸ2ïŒã¬ã¹ãã³ã·ãåç»
ç»åãšåæ§ã«ãåç»ãã¢ã¹ãã¯ãæ¯ãç¶æããããšã§æ©æµãåããŸãã
HTMLïŒ
CSSïŒ
video {
width: 100%;
height: auto;
aspect-ratio: 16 / 9; /* ç¹å®ã®ã¢ã¹ãã¯ãæ¯ãèšå® */
}
ããã§ã¯ãåç»ã®å¹ ã100%ã«èšå®ãããé«ãã¯16:9ã®ã¢ã¹ãã¯ãæ¯ãç¶æããããã«èªåçã«èšç®ãããŸãã
äŸ3ïŒãã¬ãŒã¹ãã«ããŒèŠçŽ ã®äœæ
aspect-ratioããããã£ã䜿çšããŠãã³ã³ãã³ããããŒããããåã§ãç¹å®ã®åœ¢ç¶ãç¶æãããã¬ãŒã¹ãã«ããŒèŠçŽ ãäœæã§ããŸããããã¯ãã¬ã€ã¢ãŠãã·ãããé²ãã®ã«ç¹ã«åœ¹ç«ã¡ãŸãã
HTMLïŒ
CSSïŒ
.placeholder {
width: 100%;
aspect-ratio: 1 / 1; /* æ£æ¹åœ¢ã®ãã¬ãŒã¹ãã«ããŒãäœæ */
background-color: #f0f0f0;
}
ããã«ãããã³ã³ããã®å šå¹ ãå ããæ£æ¹åœ¢ã®ãã¬ãŒã¹ãã«ããŒãäœæãããŸããèæ¯è²ã¯èŠèŠçãªãã£ãŒãããã¯ãæäŸããŸãã
äŸ4ïŒCSS Gridãšaspect-ratioã®çµ±å
aspect-ratioããããã£ã¯ãCSS Gridã¬ã€ã¢ãŠãå
ã§äœ¿çšãããšéåžžã«å¹æçã§ãããã°ãªããã¢ã€ãã ã®æ¯çããã詳现ã«å¶åŸ¡ã§ããŸãã
HTMLïŒ
CSSïŒ
.grid-container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
.grid-item {
aspect-ratio: 1 / 1; /* ãã¹ãŠã®ã°ãªããã¢ã€ãã ãæ£æ¹åœ¢ã«ãªããŸã */
background-color: #ddd;
padding: 20px;
text-align: center;
}
ãã®å Žåãåã°ãªããã¢ã€ãã ã¯ããã®äžã®ã³ã³ãã³ãã«é¢ä¿ãªãã匷å¶çã«æ£æ¹åœ¢ã«ãªããŸããgrid-template-columnsã®1fråäœã«ãããã³ã³ããã®å¹
ãã¬ã¹ãã³ã·ãã«ãªããŸãã
äŸ5ïŒCSS Flexboxãšaspect-ratioã®çµã¿åãã
aspect-ratioãCSS Flexboxãšçµã¿åãããŠããã¬ãã·ãã«ã³ã³ããå
ã®ãã¬ãã¯ã¹ã¢ã€ãã ã®æ¯çãå¶åŸ¡ããããšãã§ããŸãã
HTMLïŒ
CSSïŒ
.flex-container {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
.flex-item {
width: 200px; /* åºå®å¹
*/
aspect-ratio: 4 / 3; /* åºå®ã¢ã¹ãã¯ãæ¯ */
background-color: #ddd;
padding: 20px;
text-align: center;
}
ããã§ã¯ãåãã¬ãã¯ã¹ã¢ã€ãã ãåºå®å¹ ãæã¡ããã®é«ãã¯4/3ã®ã¢ã¹ãã¯ãæ¯ã«åºã¥ããŠèšç®ãããŸãã
ãã©ãŠã¶äºææ§
aspect-ratioããããã£ã¯ãChromeãFirefoxãSafariãEdgeãOperaãªã©ã®ã¢ãã³ãã©ãŠã¶ã§åªãããµããŒããåããŠããŸãããã ããç°ãªããã©ãããã©ãŒã ãããŒãžã§ã³ã§æé©ãªããã©ãŒãã³ã¹ã確ä¿ããããã«ã¯ãCan I use...ã®ãããªãªãœãŒã¹ã§ææ°ã®äºææ§ããŒã¿ãåžžã«ç¢ºèªããããšãè¯ãç¿æ
£ã§ãã
ãã¹ããã©ã¯ãã£ã¹ãšèæ ®äºé
- ç»åãšåç»ã«ã¯
aspect-ratio: autoã䜿çšããïŒç»åãåç»ãæ±ãå Žåãaspect-ratio: autoã䜿çšãããšããã©ãŠã¶ãã³ã³ãã³ãã®åºæã®ã¢ã¹ãã¯ãæ¯ã掻çšã§ããŸããããã¯äžè¬çã«æãé©åãªã¢ãããŒãã§ãã - ãã¬ãŒã¹ãã«ããŒèŠçŽ ã«ã¢ã¹ãã¯ãæ¯ãæå®ããïŒåºæã®å¯žæ³ãæããªãèŠçŽ ïŒäŸïŒç©ºã®
divèŠçŽ ïŒã®å Žåãç®çã®æ¯çãç¶æããããã«aspect-ratioãæç€ºçã«å®çŸ©ããŸãã object-fitãšçµã¿åãããïŒobject-fitããããã£ã¯ãaspect-ratioãšé£æºããŠãã³ã³ãã³ããã³ã³ãããã©ã®ããã«åããããå¶åŸ¡ããŸããäžè¬çãªå€ã«ã¯ãcoverãcontainãfillãnoneããããŸãã- åºæã®å¯žæ³ãäžæžãããªãïŒèŠçŽ ã®åºæã®å¯žæ³ãäžæžãããããšã«æ³šæããŠãã ããã
widthãšheightã®äž¡æ¹ãaspect-ratioãšäžç·ã«èšå®ãããšãäºæããªãçµæã«ã€ãªããå¯èœæ§ããããŸããéåžžãäžæ¹ã®å¯žæ³ïŒå¹ ãŸãã¯é«ãã®ããããïŒãå®çŸ©ããaspect-ratioããããã£ã«ä»æ¹ãèšç®ãããã®ãããã§ãããã - ãã©ãŠã¶ãšããã€ã¹ã§ã®ãã¹ãïŒä»ã®CSSããããã£ãšåæ§ã«ãç°ãªããã©ãŠã¶ãšããã€ã¹ã§å®è£ ããã¹ãããäžè²«ããåäœã確ä¿ããããšãéèŠã§ãã
- ã¢ã¯ã»ã·ããªãã£ïŒ
aspect-ratioãç»åãšãšãã«äœ¿çšããå Žåãç»åãèŠãããšãã§ããªããŠãŒã¶ãŒã®ããã«ãalt屿§ã説æçãªä»£æ¿ããã¹ããæäŸããŠããããšã確èªããŠãã ãããããã¯ã¢ã¯ã»ã·ããªãã£ã«ãšã£ãŠéåžžã«éèŠã§ãã
ããããèœãšã穎ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°
- ç«¶åããã¹ã¿ã€ã«ïŒ
aspect-ratioããããã£ãšç«¶åããå¯èœæ§ã®ããã¹ã¿ã€ã«ããªãããšã確èªããŠãã ãããäŸãã°ãwidthãšheightã®äž¡æ¹ãæç€ºçã«èšå®ãããšãèšç®ããã寞æ³ãäžæžããããå¯èœæ§ããããŸãã - 誀ã£ãã¢ã¹ãã¯ãæ¯ã®å€ïŒ
aspect-ratioããããã£ã®widthãšheightã®å€ãæ£ç¢ºã§ããããšãå確èªããŠãã ããã誀ã£ãå€ã¯ã³ã³ãã³ãã®æªã¿ã«ã€ãªãããŸãã object-fitã®æ¬ åŠïŒobject-fitããªãå Žåãã³ã³ãã³ããã³ã³ãããæ£ããåãããäºæãã¬ééãã¯ãããã³ã°ãçºçããå¯èœæ§ããããŸãã- ã¬ã€ã¢ãŠãã·ããïŒ
aspect-ratioã¯ã¬ã€ã¢ãŠãã·ãããé²ãã®ã«åœ¹ç«ã¡ãŸãããç»åã®ããªããŒãããã®ä»ã®ãã¯ããã¯ã䜿çšããŠãèªã¿èŸŒã¿ããã©ãŒãã³ã¹ãæé©åããããã«ããŠãã ããã - å¹
ãŸãã¯é«ããèšå®ãããŠããªãå ŽåïŒ
aspect-ratioããããã£ã¯ãå¹ ãŸãã¯é«ãã®ããããã®å¯žæ³ãæå®ãããŠããå¿ èŠããããŸããäž¡æ¹ãautoã§ãããããŸãã¯èšå®ãããŠããªãå Žåãaspect-ratioã¯å¹æããããŸããã
é«åºŠãªãã¯ããã¯ãšãŠãŒã¹ã±ãŒã¹
ã³ã³ããã¯ãšãªãšã¢ã¹ãã¯ãæ¯
æ¯èŒçæ°ããCSSæ©èœã§ããã³ã³ããã¯ãšãªã䜿çšãããšãã³ã³ããèŠçŽ ã®ãµã€ãºã«åºã¥ããŠã¹ã¿ã€ã«ãé©çšã§ããŸããã³ã³ããã¯ãšãªãšaspect-ratioãçµã¿åãããããšã§ãã¬ã¹ãã³ã·ããã¶ã€ã³ã«ãããŠããã«æè»æ§ãé«ãŸããŸãã
äŸïŒ
```css @container (min-width: 600px) { .container { aspect-ratio: 16 / 9; } } @container (max-width: 599px) { .container { aspect-ratio: 1 / 1; } } ```
ãã®äŸã§ã¯ã.containerèŠçŽ ã®ã¢ã¹ãã¯ãæ¯ãããã®å¹
ã«åºã¥ããŠå€æŽãããŸãã
ã¢ã¹ãã¯ãæ¯ãçšããã¬ã¹ãã³ã·ãã¿ã€ãã°ã©ãã£ã®äœæ
çŽæ¥ã¿ã€ãã°ã©ãã£ã«é¢é£ããããã§ã¯ãããŸããããaspect-ratioã䜿çšããŠãç¹ã«ã«ãŒãããã®ä»ã®UIã³ã³ããŒãã³ãå
ã§ãããã¹ãèŠçŽ ã®åšå²ã«äžè²«ããèŠèŠçééãäœæããããšãã§ããŸãã
ã¢ã¹ãã¯ãæ¯ãã¢ãŒããã£ã¬ã¯ã·ã§ã³ã«æŽ»çšãã
aspect-ratioãšobject-fitãå·§åŠã«çµã¿åãããããšã§ãç»åãããªãã³ã°ãããæ¹æ³ã埮åŠã«èª¿æŽããŠç¹å®ã®çŠç¹ç¹ã匷調ããã¬ã¹ãã³ã·ããã¶ã€ã³å
ã§ã¢ãŒããã£ã¬ã¯ã·ã§ã³ã®åºŠåããæäŸã§ããŸãã
CSSã«ãããã¢ã¹ãã¯ãæ¯ã®æªæ¥
CSSãé²åãç¶ããã«ã€ããŠãaspect-ratioããããã£ãšä»ã®ã¬ã€ã¢ãŠãæè¡ãšã®çµ±åãããã«åŒ·åãããããšãæåŸ
ãããŸããã³ã³ããã¯ãšãªã®æ®åã¯ããã®æ©èœãããã«æ¡åŒµããããæŽç·Žãããã¬ã¹ãã³ã·ããã¶ã€ã³ãå¯èœã«ããã§ãããã
çµè«
CSSã®aspect-ratioããããã£ã¯ãã³ã³ãã³ãã®æ¯çãç¶æããã¬ã¹ãã³ã·ããªã¬ã€ã¢ãŠããäœæããããã®åŒ·åãªããŒã«ã§ãããã®æ§æãå®è£
ãããã³ãã¹ããã©ã¯ãã£ã¹ãçè§£ããããšã§ããŠã§ããµã€ãã®èŠèŠçãªäžè²«æ§ãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã倧å¹
ã«åäžãããããšãã§ããŸãããã®ãã¯ããã¯ã掻çšããŠãæ§ã
ãªç»é¢ãµã€ãºãããã€ã¹ã«ã·ãŒã ã¬ã¹ã«é©å¿ãããã¶ã€ã³ãäœæããŸãããã