CSSããã¯ã¯ããã¥ãŒããŒãã®çŸåšã®ãµã€ãºã«å¿ããŠãããå€ããå¥ã®å€ã«ãžã£ã³ãããã®ã§ã¯ãªããã¹ã ãŒãºã«ç§»åã§ããããã«ããé©å¿åWebãã¶ã€ã³ã®ææ³ã§ãã ã¢ã€ãã¢ãšå®è£
ã®1ã€ã¯ãTim Brownã®èšäºã
CSSããã¯ã«ãããã¬ãã·ãã«ã¿ã€ãã°ã©ãã£ãã§ææ¡ãããŸããã ãã®å®è£
ãçè§£ããç¬èªã®ãªãã·ã§ã³ãäœæããããšãããšããäœãèµ·ãã£ãŠããã®ãã»ãšãã©çè§£ã§ããŸããã§ããã ç§ã¯å€ãã®èšç®ãè¡ãããã®æ°åŠå
šäœãä»ã®äººã«èª¬æããããšã圹ç«ã€ãšèããŸããã
ãã®èšäºã§ã¯ãæ¹æ³è«èªäœããã®éçãããã³åºç€ãšãªãæ°åŠã«ã€ããŠèª¬æããŸãã å¿é
ããªãã§ãã ããïŒäž»ã«å ç®ãšæžç®ããããŸãã ããã«ããã¹ãŠã段éã«åããŠã°ã©ãã§è£
食ããããšããŸããã
CSSã²ãŒããŠã§ã€ãšã¯äœã§ããïŒ
ãã¥ãŒããŒãã®ãµã€ãºäŸåæ§
ç§ã®æè¿ã®ãããžã§ã¯ãã§ã¯ãããããŒãšå€§ããªãã©ã³ããåããããã¹ã¯ãããããã³ãã¬ãŒãã®ã¿ãåããå
šå¹
ãããŒã䜿çšãããŸããã å°ããªç»é¢ã«ã¯å°ããªãã©ã³ããå¿
èŠã§ãäžèŠæš¡ã®ç»é¢ã«ã¯äœããå¿
èŠã ãšå€æããŸããã ã§ã¯ããã©ã³ããµã€ãºããã¥ãŒããŒãã®å¹
ã«äŸåãããªãã®ã¯ãªãã§ããïŒ
以åã¯ã次ã®ãããªããšãããŠããŸããã
h1 { font-size: 4vw; }
ãã®ã¢ãããŒãã«ã¯2ã€ã®åé¡ããããŸãã
- éåžžã«å°ããªç»é¢ã§ã¯ãããã¹ãã¯å°ãããªãïŒç»é¢å¹
320ãã¯ã»ã«ã§é«ã12.8ãã¯ã»ã«ïŒã倧ããªç»é¢ã§ã¯å·šå€§ã«ãªããŸãïŒ1600ã§64ïŒã
- ã«ã¹ã¿ã ãã©ã³ããµã€ãºã®èšå®ã¯èæ
®ãããŸããã
CSSã²ãŒããŠã§ã€ã¯ãæåã®åé¡ãåãé€ãããšãã§ããŸãã
åªãã CSSã²ãŒããŠã§ã€ã¯ããŠãŒã¶ãŒèšå®ãèæ
®ããããšããŸãã
CSSã²ãŒããŠã§ã€ã®ã¢ã€ãã¢
CSSã²ãŒããŠã§ã€ã¯ã次ã®ç¹å¥ãªã¿ã€ãã®CSSå€èšç®ã§ãã
- æå°å€ãšæå€§å€ãããã
- 2ã€ã®ãã¬ãŒã¯ãã€ã³ãããããŸãïŒéåžžã¯ãã¥ãŒããŒãã®å¹
ã«äŸåããŸãïŒ
- ãããã®ãã€ã³ãéã§ã¯ãå€ã¯æå°ããæå€§ãŸã§çŽç·çã«å€åããŸãã

ãå¹
ã320ãã¯ã»ã«æªæºã®å Žåã20ãã¯ã»ã«ã®ãã©ã³ãã960ãã¯ã»ã«ãè¶
ãã-40ãã¯ã»ã«ãããã³320ã960-20ãã¯ã»ã«ãã40ãã¯ã»ã«ã䜿çšããŸããã
CSSåŽã§ã¯ã次ã®ããã«ãªããŸãã
h1 { font-size: 1.25rem; } @media (min-width: 320px) { h1 { font-size: ; } } @media (min-width: 960px) { h1 { font-size: 2.5rem; } }
æåã®ã¿ã¹ã¯ã¯
éæ³ã®æå³ãçè§£ãã
ããšã§ãã ç§ã¯ããªãã®åã³ãå°ãå°ç¡ãã«ããããã«æ¬¡ã®ããã«èŠãããšèšããŸãïŒ
h1 { font-size: calc(1.25rem + viewport_relative_value); }
ããã§ã
viewport_relative_value
ã¯åäžã®å€ïŒäŸïŒ
3vw
ïŒã«ããããšããããè€éãªèšç®ïŒãã¥ãŒããŒã
vw
ã®ãã¥ãŒã®
vw
ãŸãã¯ãã®ä»ã®åäœã«åºã¥ãïŒã«ããããšãã§ããŸãã
å¶éäºé
CSSã²ãŒããŠã§ã€ã¯ãã¥ãŒããŒããŠãããã«é¢é£ä»ããããŠãããããã²ãŒããŠã§ã€ã«ã¯å€ãã®éèŠãªå¶éããããŸãã
æ°å€ã®ã¿ãåãå
¥ãã calc()
䜿çšã ããã¯ã»ã«åäœã®å€ãåãå
¥ããŸã ã
ãªããã ãã¥ãŒããŒãåäœïŒ
vw
ã
vh
ã
vmin
ããã³
vmax
ïŒã¯åžžã«ãã¯ã»ã«ã§å®çŸ©ãããŠããããã§ãã ããšãã°ããã¥ãŒããŒãã®å¹
ã768ãã¯ã»ã«ã®å Žåã
1vw
ã¯7.68ãã¯ã»ã«ãšããŠå®çŸ©ãããŸãã
ïŒTimã®èšäºã«èª€ãããããŸãïŒåœŒã¯ã
100vw - 30em
ãããªèšç®ãå€
em
äžãããšæžããŠããŸããããã¯ããã§ã¯ãããŸããããã©ãŠã¶ã¯ãã¯ã»ã«ã§
100vw
ãèæ
®ãããã®èŠçŽ ãšããããã£ããå€
30em
ãåŒããŸãã
åäœããªãäŸïŒ
opacity: calc(.5+1px)
ã¯èª€ãã§ããããã opacity
ããããã£ã®CSSã²ãŒããŠã§ã€ã- ã»ãšãã©ã®
transform
æ©èœã®CSSã²ãŒããŠã§ã€ïŒããšãã°ã rotate
ïŒã²ãŒããŠã§ã€ã¯ãã¯ã»ã«åäœã®å€ã«åºã¥ããŠå転ã§ããŸããïŒã
ãã®ããããã¯ã»ã«ã®å¶éããããŸãã ãã¶ãåæ°ã®ãã人
ãããŠãCSSã²ãŒããŠã§ã€
ã§äœ¿çš
ã§ãããã¹ãŠã®ããããã£ãšãã¯ããã¯ãèšç®ããŸãã
æåã«ã
font-size
ããã³
line-height
ããããã£ãååŸãããã¯ã»ã«ãŸãã¯emã«åºã¥ããã³ã³ãããŒã«ãã€ã³ãã䜿çšããŠãããã®CSSã²ãŒããŠã§ã€ãäœæããæ¹æ³ã確èªããŸãã
ãã¯ã»ã«ãã¬ãŒã¯ãã€ã³ããæã€CSSã²ãŒããŠã§ã€
ãã¢
次ã«ããããã®åäŸã®CSSã³ãŒããååŸããæ¹æ³ãèŠãŠãããŸãã
ç·åœ¢é¢æ°ãšããŠã®ãã©ã³ããµã€ãº
font-sizeã¯ãå¹
ã320pxã®20pxããå¹
ã960pxã®40pxã«æ¯äŸããŠå¢å ããå¿
èŠããããŸãã ããããã£ãŒãã«åæ ããŸãã

èµ€ãç·ã¯ãç·åœ¢é¢æ°ã®ã°ã©ãã§ãã
y = mx + b
æžãããšãã§ããŸãïŒ
y
ãã©ã³ããµã€ãºïŒåçŽè»žïŒãx
ã¯ããã¯ã»ã«åäœã®ãã¥ãŒããŒãã®å¹
ïŒæ°Žå¹³è»žïŒã§ããm
ã¯é¢æ°ã®åŸé
ã§ãïŒãã¥ãŒããŒãã®å¹
ã1ãã¯ã»ã«å¢å ãããšãã«ãã©ã³ããµã€ãºã«è¿œå ãããã¯ã»ã«æ°ïŒãb
ãã¥ãŒããŒãã®ãµã€ãºã倧ããããåã®ãã©ã³ããµã€ãºã
m
ãš
b
ãèšç®ããå¿
èŠããããŸãã æ¹çšåŒã§ã¯ããããã¯å®æ°ã§ãã
ãŸãã
m
æ±ããŸãããã ããã«ã¯ã座æš
(x,y)
ã®ã¿ãå¿
èŠã§ãã ããã¯é床ïŒåäœæéãããã®ç§»åè·é¢ïŒã®èšç®ã«äŒŒãŠããŸããããã®å Žåããã¥ãŒããŒãã®å¹
ã«å¿ããŠãã©ã³ããµã€ãºãèšç®ããŸãã
m = font_size_increase / viewport_increase m = (y2 - y1) / (x2 - x1) m = (40 - 20) / (960 - 320) m = 20 / 640 m = 0.03125
å¥ã®åœ¢åŒïŒ
åèšãã©ã³ããµã€ãºã®å¢å ã¯20ãã¯ã»ã«ïŒ
40 - 20
ïŒã§ãã
衚瀺é åã®å
šäœçãªçž®å°ã¯640ãã¯ã»ã«ïŒ
960 - 320
ïŒã§ãã
é åã®å¹
ã1ãã¯ã»ã«å¢ãããšããã©ã³ããµã€ãºã¯ã©ãã ãå¢å ããŸããïŒ
20 / 640 = 0.03125 px.
次ã«
b
èšç®ããŸãã
y = mx + b b = y - mx b = y - 0.03125x
ãããã®ãã€ã³ãã®äž¡æ¹ã䜿çšããŠé¢æ°ããã§ãã¯ãããããããããã®ãã€ã³ãã®åº§æš
(x,y)
ã§ããŸãã æåã®ãã®ãåããŸãïŒ
b = y1 - 0.03125 Ã x1 b = 20 - 0.03125 Ã 320 b = 10
ãšããã§ãã°ã©ããèŠãã ãã§ãããã®10ãã¯ã»ã«ãèšç®ã§ããŸãã ããããæã
ã¯åžžã«ãããæã£ãŠããããã§ã¯ãããŸãã:-)
ããã§ã颿°ã¯æ¬¡ã®ããã«ãªããŸãã
y = 0.03125x + 10
CSSã«å€æ
y
ã¯ãã©ã³ããµã€ãºã§ãããCSSã§åºæ¬çãªæäœãè¡ãã«ã¯ã
calc()
ãå¿
èŠã§ãã
font-size: calc( 0.03125x + 10px );
ãã¡ããã
x
æå¹ãªæ§æã§
x
ãªããããããã¯ç䌌CSSã§ãã ããããç·åœ¢é¢æ°ã§ã¯ã
x
ã¯ãã¥ãŒããŒãã®å¹
ã衚ããCSSã§ã¯
100vw
ãšããŠè¡šçŸã§ããŸãã
font-size: calc( 0.03125 * 100vw + 10px );
CSSãæ©èœããããã«ãªããŸããã ãã£ãšç°¡æœã«è¡šçŸããå¿
èŠãããå Žåã¯ãä¹ç®ãå®è¡ããŸãã
0.03125 Ã 100 = 3.125
ãæ¬¡ã®ããã«ãªããŸãã
font-size: calc( 3.125vw + 10px );
ãã¥ãŒããŒãã®å¹
ã320ããã³960ãã¯ã»ã«ã«å¶éããŸãã ããã€ãã®ã¡ãã£ã¢ã¯ãšãªã远å ããŸãã
h1 { font-size: 20px; } @media (min-width: 320px) { h1 { font-size: calc( 3.125vw + 10px ); } } @media (min-width: 960px) { h1 { font-size: 40px; } }
ãã£ãŒãã¯æ¬¡ã®ããã«ãªããŸãã

ããã§ãããfont-sizeã宣èšãããšãããã¯ã»ã«å€ã¯ããŸã奜ãã§ã¯ãããŸããã ãã£ãšè¯ãããããšã¯å¯èœã§ããïŒ
ã«ã¹ã¿ã èšå®ãé©çšãã
ã»ãšãã©ãã¹ãŠã®ãã©ãŠã¶ã§ããŠãŒã¶ãŒã¯ããã©ã«ãã®ããã¹ããµã€ãºãèšå®ã§ããŸãã ã»ãšãã©ã®å Žåãæåã¯16ãã¯ã»ã«ã§ãããæã
倿ŽãããŸãïŒéåžžã¯å¢å ããŸãïŒã
åŒã«ã«ã¹ã¿ã èšå®ãæ¿å
¥ãããã®ã§ã
rem
ã®å€ã«æ³šæããŠãã ããã
em
ããã³ããŒã»ã³ããŒãžã«ã€ããŠããåãååãé©çšãããŸãã
æåã«ãããŒã¹ïŒã«ãŒãïŒãã©ã³ããµã€ãºã«çµ¶å¯Ÿå€ãå²ãåœãŠãããŠããªãããšã確èªããŸãã ããšãã°ãBootstrap 3ã®CSSã䜿çšããå Žåãæ¬¡ã®ãããªããšããããããããŸãã
html { font-size: 10px; }
絶察ã«ããªãã§ãã ããïŒ ïŒå¹žããªããšã«ãBootstrap 4ã¯ãããä¿®æ£ããŸãããïŒå®éã«åºæ¬emïŒ
1rem
ïŒ
1rem
ã倿Žããå¿
èŠãããå Žåã¯ã次ã䜿çšããŸãã
html { font-size: 62.5%; }
ããã«ãããããããåºæ¬çãªãã©ã³ããµã€ãºã¯ãã®ãŸãŸã«ããŠãããã©ã«ãã§16ãã¯ã»ã«ã«ããŸãã font-sizeã²ãŒããŠã§ã€ã§ãã¯ã»ã«å€ã
rem
å€ã§çœ®ãæãããšã©ããªããèŠãŠã¿ãŸãããã
h1 { font-size: 1.25rem; } @media (min-width: 320px) { h1 { font-size: calc( 3.125vw + .625rem ); } } @media (min-width: 960px) { h1 { font-size: 2.5rem; } }
ããã©ã«ãã®ãã©ãŠã¶èšå®ã§ã³ãŒããå®è¡ãããšããã¯ã»ã«ã䜿çšãã以åã®ã³ãŒãã®ããã«åäœããŸãã ãããïŒ
ãããããŠãŒã¶ãŒã«ãã
倿ŽããµããŒãããããã«ãããè¡ã£ãããããã¹ãŠãã©ã®ããã«æ©èœãããã確èªããå¿
èŠããããŸãã ãŠãŒã¶ãŒã16ã§ã¯ãªã24ãã¯ã»ã«ã®ãã©ã³ããµã€ãºãèšå®ãããšããŸãïŒ50ïŒ
以äžïŒã ã³ãŒãã¯ã©ã®ããã«åäœããŸããïŒ

éãç·ïŒfont-sizeã¯ããã©ã«ãã§16ãã¯ã»ã«ã§ãã
èµ€ãç·ïŒfont-sizeã®ããã©ã«ãã¯24ãã¯ã»ã«ã§ãã
衚瀺é åã320ãã¯ã»ã«ã«å¢å ãããšããã©ã³ãã¯
å°ãããªã ïŒ30ãã¯ã»ã«ãã25ã«æžå°ïŒã2çªç®ã®å¶åŸ¡ç¹ã«éãããšã段éçã«ïŒ45ãã60ãã¯ã»ã«ã«ïŒå¢å ããŸãã çãã
3ã€ã®ãµã€ãºãã¹ãŠã«å¯ŸããŠåããŠãŒã¶ãŒèšå®å¯èœãªããŒã¹ã©ã€ã³å€ãããããä¿®æ£ããã®ã«åœ¹ç«ã¡ãŸãã ããšãã°ã
1.25rem
éžæããŸãã
h1 { font-size: 1.25rem; } @media (min-width: 320px) { h1 { font-size: calc( 1.25rem + 3.125vw - 10px ); } } @media (min-width: 960px) { h1 { font-size: calc( 1.25rem + 20px ); } }
3.125vw - 10px
泚æããŠ
3.125vw - 10px
ã ããã¯ãå€ãç·åœ¢é¢æ°ïŒ
mx + b
圢åŒïŒã§ããã
b
å€ãç°ãªããŸãã ããã
bâ²
ãšåŒã³ãŸãã ãã®å ŽåãããŒã¹å€ã20ãã¯ã»ã«ã§ããããšãããã£ãŠãããã
bâ²
åçŽãªæžç®
bâ²
ã®å€ãååŸã§ããŸãã
bâ² = b - baseline_value bâ² = 10 - 20 bâ² = 10
å¥ã®æ¹æ³ã¯
ãæåããããŒã¹å€ãéžæããæ¬¡ã«ãã©ã³ããµã€ãºã®
å¢å ã衚ãç·åœ¢é¢æ°ãæ¢ãããšã§ãïŒãã©ã³ããµã€ãº
y
å€ãšæ··åããªãããã«ãããã
yâ²
ãšåŒã³ãŸãããïŒã
x1 = 320 x2 = 960 yâ²1 = 0 yâ²2 = 20 m = (yâ²2 - yâ²1) / (x2 - x1) m = (20 - 0) / (960 - 320) m = 20 / 640 m = 0.03125 bâ² = yâ² - mx bâ² = yâ²1 - 0.03125 Ã x1 bâ² = 0 - 0.03125 Ã 320 bâ² = -10
颿°
yâ² = 0.03125x - 10
ãååŸããŸãããããã¯æ¬¡ã®ããã«ãªããŸãã

rem
ã®ããŒã¹å€ãš
vw
ããã³/ãŸãã¯
px
远å å€ã䜿çšããŠãæçµçã«font-sizeã®æ¬æ Œçãªäœæ¥ã²ãŒããŠã§ã€ãäœæã§ããŸãã ãŠãŒã¶ãŒãããã©ã«ãã®ãã©ã³ããµã€ãºã倿ŽããŠããã·ã¹ãã ã¯ããã«åãããŠèª¿æŽããç ŽæããŸããã

ããŒã³ã¿ã©ã€ã³ïŒãã©ã³ããµã€ãºãå¢å ãã床åãã
éãç·ïŒfont-sizeã¯ããã©ã«ãã§16ãã¯ã»ã«ã§ãã
èµ€ãç·ïŒfont-sizeã®ããã©ã«ãã¯24ãã¯ã»ã«ã§ãã
ãã¡ãããããã¯ãŠãŒã¶ãŒãèŠæ±ãããã®ãšãŸã£ããåãã§ã¯ãããŸããããŠãŒã¶ãŒã¯ãã©ã³ãã50ïŒ
å¢ãããããšæã£ãŠããŸãããå°ããªè¡šç€ºé åã§ã¯50ïŒ
ã倧ããªè¡šç€ºé åã§ã¯25ïŒ
å¢ãããŸããã ããããããã¯è¯ãåŠ¥åæ¡ã§ãã
è¡ã®é«ãã®ã²ãŒããŠã§ã€ãäœæãã
ãã®å Žåããã·ããªãªã§ã¯ãè¡ã®é«ãã140ïŒ
ã§è¡šç€ºé åã320ãã¯ã»ã«ã180ïŒ
ã960ã§ããæ®µèœããå¿
èŠã«ãªããŸãã
åºæºå€ã«
å ããŠåçã«å€åãããã¯ã»ã«åäœã®å€ã䜿çšããŠäœæ¥ãããããä¿æ°1.4ããã³1.8ã®ãã¯ã»ã«æ°ãç¥ãå¿
èŠããããŸãã ã€ãŸããæ®µèœã®
font-size
ãèšç®ããå¿
èŠããããŸãã åºæ¬ãã©ã³ããµã€ãºã16ãã¯ã»ã«ã ãšããŸãããã ååŸãããã®ïŒ
16 * 1.4 = 22.4
ãã¯ã»ã«ãããäœããã¥ãŒããŒããµã€ãºïŒ 320 px
ïŒ16 * 1.8 = 28.8
ãã¯ã»ã«ãããããã¥ãŒããŒããµã€ãºïŒ 960 px
ïŒ
åºæ¬å€ãšããŠã
140% = 22.4px
ãŸãã å
šäœçãªãã©ã³ãã®å¢å ã¯6.4ãã¯ã»ã«ã§ãã æ¬¡ã®ç·åœ¢åŒã䜿çšããŸãã
x1 = 320 x2 = 960 yâ²1 = 0 yâ²2 = 6.4 m = (yâ²2 - yâ²1) / (x2 - x1) m = (6.4 - 0) / (960 - 320) m = 6.4 / 640 m = 0.01 bâ² = yâ² - mx bâ² = yâ²1 - 0.01 Ã x1 bâ² = 0 - 0.01 Ã 320 bâ² = 3.2 yâ² = 0.01x - 3.2
CSSã«å€æïŒ
line-height: calc( 140% + 1vw - 3.2px );
泚 ïŒåºæ¬å€ã¯ã140ïŒ
ãŸãã¯
1.4em
ãšããŠè¡šçŸããå¿
èŠããããŸãã ç¡æ¬¡å
1.4
ã¯
calc()
å
ã§ã¯æ©èœããŸããã
次ã«ãã¡ãã£ã¢ã¯ãšãªã远å ãã
ãã¹ãŠã® line-height
åºåãåãããŒã¹å€ïŒ
140%
ïŒã䜿çšããŠããããšã確èªã
ãŸã ã
p { line-height: 140%; } @media (min-width: 320px) { p { line-height: calc( 140% + 1vw - 3.2px ); } } @media (min-width: 960px) { p { line-height: calc( 140% + 6.4px ); } }
æãåºããŠãã ãããåºã衚瀺é åã§ã¯ã
180%
ã ãã䜿çšããããšã¯ã§ããŸãããåºæ¬å€ã«è¿œå ããããã¯ã»ã«ã§è¡šãããéšåãå¿
èŠã§ãã
180%
ãååŸãããšãåºæ¬çãªãã©ã³ããµã€ãºã¯16ãã¯ã»ã«ã«ãªãããŠãŒã¶ãŒã倿ŽãããŸã§ãã¹ãŠãæ£åžžã«ãªããŸãã
ããŸããŸãªåºæ¬çãªãã©ã³ããµã€ãºã®å€ã«ã€ããŠãã³ãŒãã®åäœãããããããŠç¢ºèªããŸãã

éãç·ïŒfont-sizeã¯ããã©ã«ãã§16ãã¯ã»ã«ã§ãã
èµ€ãç·ïŒfont-sizeã®ããã©ã«ãã¯24ãã¯ã»ã«ã§ãã
line-height
åŒã¯ç¬èªã®ãã©ã³ããµã€ãºã«äŸåããŠããããããã©ã³ããµã€ãºã倿ŽãããšåŒã倿ŽãããŸãã ããšãã°ã
ãã®ãã¢ã§ã¯ã次ã®ããã«å®çŸ©ãããæ¡å€§ããã¹ããå«ã段èœã瀺ããŠããŸãã
.big { font-size: 166%; }
ããã«ããããã¬ãŒã¯ãã€ã³ãã倿ŽãããŸãã
16 * 1.66 * 1.4 = 37.184
ãã¯ã»ã«ãããäœããã¥ãŒããŒããµã€ãºïŒ 320px
ïŒ16 * 1.66 * 1.8 = 47.808
ãã¯ã»ã«ãããããã¥ãŒããŒããµã€ãºïŒ 960px
ïŒ
èšç®ãå®è¡ããæŽæ°ãããåŒ
yâ² = 0.0166x - 5.312
ãŸãã æ¬¡ã«ãCSSã§ãããšä»¥åã®ã¹ã¿ã€ã«ãçµã¿åãããŸãã
p { line-height: 140%; } .big { font-size: 166%; } @media (min-width: 320px) { p { line-height: calc( 140% + 1vw - 3.2px ); } .big { line-height: calc( 140% + 1.66vw - 5.312px ); } } @media (min-width: 960px) { p { line-height: calc( 140% + 6.4px ); } .big { line-height: calc( 140% + 10.624px ); } }
CSSã«èšç®ãå²ãåœãŠãããšãã§ããŸãã æšæºã®æ®µèœãšåãã³ã³ãããŒã«ãã€ã³ããšçžå¯Ÿçãªè¡ã®é«ãã䜿çšããããã1.66ã®ä¿æ°ã远å ããã ãã§æžã¿ãŸãã
p { line-height: 140%; } .big { font-size: 166%; } @media (min-width: 320px) { p { line-height: calc( 140% + 1vw - 3.2px ); } .big { line-height: calc( 140% + (1vw - 3.2px) * 1.66 ); } } @media (min-width: 960px) { p { line-height: calc( 140% + 6.4px ); } .big { line-height: calc( 140% + 6.4px * 1.66 ); } }
ãã©ã³ããµã€ãºãšã©ã€ã³ãã€ãã®ã²ãŒããŠã§ã€ãçµã¿åããã
ããã§ã¯ããã¹ãŠããŸãšããŸãããã ã·ããªãªïŒH1ãšããã€ãã®æ®µèœãå«ãã¢ãããã£ãããã¹ãåïŒæµäœåïŒããããŸãã æ¬¡ã®å€ã䜿çšããŠãfont-sizeãšline-heightã倿Žããå¿
èŠããããŸãã
èŠçŽ ãšãããã㣠| 320pxã®å€ | 960pxã§ã®å€ |
H1ãã©ã³ããµã€ãº | 24ãã¯ã»ã« | 40 ppi |
H1ç·ã®é«ã | 133.33ïŒ
| 120ïŒ
|
ãã©ã³ããµã€ãº | 15 ppi | 18 ppi |
Pã©ã€ã³ã®é«ã | 150ïŒ
| 166.67ïŒ
|
è¡ã®é«ãã§2ã€ã®ããšãè¡ãããšãããããŸãã äžè¬çãªã«ãŒã«ããããŸãïŒããã¹ããå¢å ãããšããè¡ã®é«ãã¯æžå°ããªããã°ãªãããåãåºããªããšã-å¢å ããŸãã ãããããã®ã·ããªãªã§ã¯ãäž¡æ¹ã®ç¶æ³ãåæã«ççŸããŠããŸãïŒ ãããã£ãŠãåªå
é äœãéžæããå¿
èŠããããŸãã
- H1ã®å Žåãfont-sizeã®å¢å ã¯ãåã®å¹
ã®å¢å ãããéèŠã§ãã
- 段èœã®å Žåãfont-sizeãå°ãå¢ããããããåã®å¹
ãå¢ããããšãéèŠã§ãã
次ã«ãå¹
ã320ãã¯ã»ã«ãš960ãã¯ã»ã«ã®è¡šç€ºé åã®2ã€ã®ã³ã³ãããŒã«ãã€ã³ããéžæããŸãã font-sizeã®ã²ãŒããŠã§ã€ãæžãããšããå§ããŸãããã
h1 { font-size: 1.5rem; } p { font-size: .9375rem; } @media (min-width: 320px) { h1 { font-size: calc( 1.5rem + 2.5vw - 8px ); } p { font-size: calc( .9375rem + .46875vw - 1.5px ); } } @media (min-width: 960px) { h1 { font-size: calc(1.5rem + 16px); } p { font-size: calc( .9375rem + 3px ); } }
ããã§ã¯æ°ããããšã¯äœããããŸãããå€ã®ã¿ã倿ŽãããŠããŸãã
次ã«ã
line-height
ã²ãŒããŠã§ã€ãèšç®ããŸãã ååããããã£ãšé£ããã§ãããã
èŠçŽ H1ããå§ããŸãããã
line-height
ã120ïŒ
ã®çžå¯ŸããŒã¹å€ã䜿çšã
line-height
ã èŠçŽ ã®ãã©ã³ããµã€ãºã¯å€æŽå¯èœã§ããããããããã®120ïŒ
ã«ããã2ã€ã®ãã€ã³ãã«ãã£ãŠæ±ºå®ãããåçãªç·åœ¢å€ãèšè¿°ããããšãã§ããŸãã
- äžã®ã³ã³ãããŒã«ãã€ã³ãã§
24 Ã 1.2 = 28.8px
ã - äžéšã³ã³ãããŒã«ãã€ã³ãã§
40 Ã 1.2 = 48px
ã
äžéšã®ã³ã³ãããŒã«ãã€ã³ãã§ã¯ã133.33ïŒ
ã®
line-height
å€ãå¿
èŠã§ããããã¯çŽ32ãã¯ã»ã«ã§ãã
ã120ïŒ
ã®ããŒã¹å€ã«è¿œå ããããã®ããèšè¿°ããç·åœ¢é¢æ°ãèŠã€ããŸãã ãããã®120ïŒ
ãåé€ãããšã2ã€ã®å€æŽãããå€ãåŸãããŸãã
24 Ã (1.3333 - 1.2) = 3.2px
äžéšã³ã³ãããŒã«ãã€ã³ãã§24 à (1.3333 - 1.2) = 3.2px
ã40 Ã (1.2 - 1.2) = 0px
äžéšã³ã³ãããŒã«ãã€ã³ãã§40 à (1.2 - 1.2) = 0px
ã
è² ã®åŸé
ãåŸãããŸãã
m = (yâ²2 - yâ²1) / (x2 - x1) m = (0 - 3.2) / (960 - 320) m = -3.2 / 640 m = -0.005 bâ² = yâ² - mx bâ² = yâ²1 - (-0.005 Ã x1) bâ² = 3.2 + 0.005 Ã 320 bâ² = 4.8 yâ² = -0.005x + 4.8
CSSã«å€æïŒ
h1 { line-height: calc( 120% - .5vw + 4.8px ); }
ãã£ãŒããèŠãŠã¿ãŸãããïŒ

éãç·ïŒè¡ã®é«ããæžãããŸãã
èµ€ãç·ïŒline-heightã®åºæ¬å€ïŒããããŒã®font-sizeã®120ïŒ
ïŒã
ããŒã³ã¿ã©ã€ã³ïŒæçµçãªã©ã€ã³ã®é«ãã
ã°ã©ãã¯ãçµæã®è¡ã®é«ãïŒããŒã³ã¿ã®ç·ïŒã120ïŒ
ã®åºæ¬å€ãšè¡ã®é«ãã®æžå°ïŒéãç·ïŒã«çããããšã瀺ããŠããŸãã
GraphSketch.comã§èšç®ã
èªåã§ç¢ºèªã§ã
ãŸã ã
段èœã®å Žåã
150%
åºæ¬å€ã䜿çšããŸãã è¡ã®é«ããå¢ããïŒ
(1.75 - 1.5) Ã 18 = 4.5px.
ç§ã®èšç®æ©ã§ã¯ãåŒã¯æ¬¡ã®ããã«ãªããŸãã
yâ² = 0.00703125x - 2.25
CSSã³ãŒãå
šäœã確èªããã«ã¯ã
font-sizeãšline-heightãçµã¿åããã
ãã¢ã®ãœãŒã¹ã³ãŒããã芧ãã ããã ãã©ãŠã¶ãŠã£ã³ããŠã®ãµã€ãºã倿Žãããšã匱ã广ã§ã¯ãããã广ãããããšãããããŸãã
ããã©ã«ãã®ãã©ã³ããµã€ãºã倿ŽããŠããã®ãã¢ããã¹ãããããšããå§ãããŸãã ããã§ãè¡ã®é«ãã®æ¯çã¯ãããã«ç°ãªããŸãããããªã蚱容ã§ããããšã«æ³šæããŠãã ããã è¡ã®é«ããåºæ¬å€ãããå°ãããªã£ãŠãåé¡ã¯ãããŸããã
ãªãŒãã¡ãŒã·ã§ã³ã³ã³ãã¥ãŒãã£ã³ã°
ãã®ã»ã¯ã·ã§ã³ã®æºåã§ã¯ããã¹ãŠã®èšç®ãæåã§ããŸãã¯Soulverèšç®æ©ã䜿çšããŠå®è¡ããŸããã ããããããã¯ããªãé¢åã§ããããšã©ãŒã®å¯èœæ§ã¯é«ãã§ãã 人çèŠå ãæé€ããããã«ãèªååãå°å
¥ãããšããã§ãããã
æåã®æ¹æ³ã¯ããã¹ãŠã®èšç®ãCSSã«è»¢éããããšã§ãã ããã¯ããã¹ãŠã®å€ã詳现ã«èª¿ã¹ããšãã«ãfont-sizeã䜿çšããäŸã§äœ¿çšãããŠããåŒã®å€åœ¢ã§ãã
@media (min-width: 320px) and (max-width: 959px) { h1 { font-size: calc( /* y1 */ 1.5rem /* + m à x */ + ((40 - 24) / (960 - 320)) * 100vw - ((40 - 24) / (960 - 320)) * 320px ); } }
ããããããã¯ããŸãã«ãå€ãã®æçŽã倿ããã®ã§ããã£ãšç°¡æœã«æžãããšãã§ããŸãïŒ
@media (min-width: 320px) and (max-width: 959px) { h1 { font-size: calc( 1.5rem + 16 * (100vw - 320px) / (960 - 320) ); } }
å¶ç¶ã«ãããã®åŒã¯èšäºã
CSSããã¯ä»ãã®æè»ãªã¿ã€ãã°ã©ãã£ãã§ãã£ã ãã©ãŠã³ã䜿çšããŸãããã倿°å€ã«ã¯
em
ã§ã¯ãªããã¯ã»ã«ã䜿çšãããŠããŸãã ããã¯ãfont-sizeãšline-heightãçµã¿åãããããŒãžã§ã³ã§ã¯æ©èœããŸãããç¹ã«è² ã®åŸé
ã®å Žåãããã»ã©æçœã§ã¯ãªãå ŽåããããŸãã
@media (min-width: 320px) and (max-width: 959px) { h1 { font-size: calc( 1.5rem + 16 * (100vw - 320px) / (960 - 320) ); line-height: calc( 120% + 3.2 * (100vw - 960px) / (320 - 960) ); } }
2çªç®ã®æ¹æ³ã¯ãSassãã©ã°ã€ã³ãŸãã¯PostCSS mixinã䜿çšããŠèšç®ãèªååããããšã§ãã
emãã§ãã¯ãã€ã³ããæã€CSSã²ãŒããŠã§ã€
æ°ãããã¢
æåã®3ã€ã®ãã¢ãåããã³ã³ãããŒã«ãã€ã³ããšå¢åã®ãã¯ã»ã«å€ã®ä»£ããã«ã
rem
åºã¥ããŠå€ãæ¿å
¥ããŸããã
次ã®ã»ã¯ã·ã§ã³ã§ã¯ããããã®ãã¢ã§ç¹å®ã®æ§æãã©ã®ããã«æ©èœããããèŠãŠãããŸãã
emããŒã¹ã®ã¡ãã£ã¢ã¯ãšãªã®mÃ100vwæ§æã¯ãå§ãã§ããŸãã
äžèšã§ã¯ãæ§æ
m à 100vw
ïŒããšãã°ã
calc(base + 2.5vw)
ã§ã¯
calc(base + 2.5vw)
ïŒã䜿çšããŸããã
em
ããŒã¹ã®ã¡ãã£ã¢ã¯ãšãªã§ã¯äœ¿çšã§ããŸããã
ã¡ãã£ã¢ã¯ãšãªã®ã³ã³ããã¹ãããã¹ãŠã§ãã åäœ
em
ãš
rem
ã¯ãåãããšãã€ãŸããŠãŒã¶ãŒãšãŒãžã§ã³ãã®åºæ¬ãã©ã³ããµã€ãºãæããŸãã ãããŠããã§ã«äœåºŠãèŠãŠããããã«ãéåžžã¯16ãã¯ã»ã«ã§ãããå€ã¯ç°ãªãå ŽåããããŸãã ãªãã§ïŒ
- ãã©ãŠã¶ãŸãã¯OSã®æå¿ã«ããïŒäž»ã«TVãã©ãŠã¶ããªãŒããŒã®ãããªç¹å®ã®å ŽåïŒã
- ãŠãŒã¶ãŒã®æå¿ã«ããã
ãããã£ãŠãã³ã³ãããŒã«ãã€ã³ã
20em
ããã³
60em
å Žåããããã¯å®éã®CSSå¹
ã«å¯Ÿå¿ããŸãã
- åºæ¬ãã©ã³ããµã€ãºã16ãã¯ã»ã«ã®320ããã³960ãã¯ã»ã«ã
- 480ããã³1440-24ãã¯ã»ã«ãªã©
ïŒãããã¯
ããŒããŠã§ã¢ ãã¯ã»ã«ã§ã¯ãªã
CSSãã¯ã»ã«ã§ããããšã«æ³šæããŠãã ããããã®èšäºã§ã¯ãèšç®ã«åœ±é¿ãäžããªããããããŒããŠã§ã¢ãã¯ã»ã«ã¯èæ
®ããŸãããïŒ
äžèšã®ã³ãŒãäŸã¯æ¬¡ã®ãšããã§ãã
font-size: calc( 3.125vw + .625rem );
ãã®æ§æã§ãã¹ãŠã®ã³ã³ãããŒã«ãã€ã³ãã
em
ã䜿çšããŠçœ®ãæããã¡ãã£ã¢ãªã¯ãšã¹ãã§1 emã16ãã¯ã»ã«ã§ãããšä»®å®ãããšã次ã®ããã«ãªããŸãã
h1 { font-size: 1.25rem; } @media (min-width: 20em) { h1 { font-size: calc( 1.25rem + 3.125vw - 10px ); } } @media (min-width: 60em) { h1 { font-size: calc( 1.25rem + 20px ); } }
ããã¯ãOSããã©ãŠã¶ãããã³ãŠãŒã¶ãŒãããã©ã«ãã®ãã©ã³ããµã€ãºã倿Žããªãå Žåã«æ©èœããŸãã ããã§ãªããã°ãããã¯æªãã§ãããïŒ

éãç·ïŒfont-sizeã¯ããã©ã«ãã§16ãã¯ã»ã«ã§ãã
èµ€ãç·ïŒfont-sizeã®ããã©ã«ãã¯24ãã¯ã»ã«ã§ãã
ããã§äœãèµ·ãã£ãŠããŸããïŒ ããŒã¹ãã©ã³ããµã€ãºã倿Žãããšã
em
ããŒã¹ã®ãã¬ãŒã¯ãã€ã³ããããé«ããã¯ã»ã«å€ã«ã·ãããããŸãã ç¹å®ã®ãã€ã³ãã®å¯äžã®çã®å€ã¯
3.125vw - 10px
ã§ãïŒ
- 320ãã¯ã»ã«ã§
3.125vw - 10px
ã¯0ãã¯ã»ã«ã§ãã - 480ãã¯ã»ã«ã§ã¯
3.125vw - 10px
10ãã¯ã»ã«ã¯5ãã¯ã»ã«ã«çžåœããŸãã
ã³ã³ãããŒã«ãã€ã³ããé«ãå Žåãããã«æªãããšïŒ
- 960ãã¯ã»ã«ã§ã¯ã
3.125vw - 10px
ã¯20ãã¯ã»ã«ã«çžåœããŸãã - 1440ãã¯ã»ã«ã§ã¯
3.125vw - 10px
ãã¯ã»ã«ã¯35ãã¯ã»ã«ïŒ15å以äžïŒã§ãã
em
ããŒã¹ã®ãã§ãã¯ãªã¹ãã䜿çšããå Žåã¯ãå¥ã®æ¹æ³ã§è¡ãå¿
èŠããããŸãã
èšç®ãããçŽããŸã
ãã®ææ³ã¯
ãTim Brownã®èšäºã§å®èšŒãããŠã
ãŸã ã ããã¯ãã»ãšãã©ã®èšç®ãCSSã§2ã€ã®å€æ°éšåã䜿çšããŠè¡ãããããšãæå³ããŸãã
100vw
å¹
ãrem
衚ãããäžäœåºæºç¹ã
次ã®åŒã䜿çšããŸãã
y = m à (x - x1) / (x2 - x1)
ãªã圌女ãªã®ãïŒ æé ãèŠãŠãããŸãããã , font-size line-height :
y = mx + b
CSS
x
(
100vw
).
m
b
vw
, , , ,
em
, .
m
b
,
(x1,y1)
(x2,y2)
.
b
:
b = y - mx b = y1 - m à x1
:
y = mx + b y = mx + y1 - m à x1
b
!
,
font-size
line-height
,
,
.
yâ²
:
y = y1 + yâ² yâ² = y - y1
y
:
yⲠ= mx + y1 - m à x1 - y1 yⲠ= mx + y1 - m à x1 - y1
+ y1
- y1
!
yⲠ= m à x - m à x1 yⲠ= m à (x - x1)
m
:
m = (y2 - y1) / (x2 - x1)
次ã«ïŒ
yâ² = (y2 - y1) / (x2 - x1) Ã (x - x1)
:
yⲠ= max_value_increase à (x - x1) / (x2 - x1)
CSS
CSS. « 20 40 »:
@media (min-width: 20em) and (max-width: 60em) { h1 { font-size: calc( 1.25rem /* */ + 20px /* */ * (100vw - 20rem) / (60rem - 20rem) ); } }
. , ,
calc()
CSS , .
100vw - 20rem
. .
, font-size â 16 , â 600 , 280 (
600 - 20 Ã 15
). font-size â 24 , â 600 , 120 (
600 - 20 Ã 24
).

,
rem
.
em
? CSS-
em
font-size, font-size ( ) font-size (
font-size
).
CSS â , . . â
rem
, font-size,
.
CSS :
html { font-size: 10px; } :root { font-size: 16px; } :root { font-size: 125%; }
calc
60rem - 20rem
. ,
(x - x1) / (x2 - x1)
0 1.
n
.
16 600 :
n = (x - x1) / (x2 - x1) n = (600 - 320) / (960 - 320) n = 280 / 640 n = 0.475
, .
,
calc()
- CSS-. . ?
?
calc((100vw - 20rem)/(60 - 20))
?
â 16 |
| CSS | çµæ |
20em (320px) | (320px â 16px à 20) / (60 â 20) | = 0px |
40em (640px) | (640px â 16px à 20) / (60 â 20) | = 8px |
60em (960px) | (960px â 16px à 20) / (60 â 20) | = 16px |
â 24 |
| CSS | çµæ |
20em (480px) | (480px â 24px à 20) / (60 â 20) | = 0px |
40em (960px) | (960px â 24px à 20) / (60 â 20) | = 12px |
60em (1440px) | (1440px â 24px à 20) / (60 â 20) | = 24px |
, (
20em
60em
)
0rem
1rem
. !
CSS
20px
. .
:
font-size: calc( 1.25rem + 20px * n );
n
0 1. -
calc()
0 1.
0rem â 1rem
;
r
.
calc()
.
calc(a * b)
,
a
b
.
r
( ), .
20 . 20 â
1.25rem
,
1.25
:
font-size: calc( 1.25rem + 1.25 * r );
åäœããã¯ãã§ãã ,
r
:
- 16 :
1.25 * r
0 20 . - 24 :
1.25 * r
0 30 .
CSS- , media-, :
h1 { font-size: 1.25rem; } @media (min-width: 20em) { h1 { font-size: calc( 1.25rem + 1.25 * (100vw - 20rem) / (60 - 20) ); } } @media (min-width: 60em) { h1 { font-size: calc( 1.25rem + 1.25 * 1rem ); } }
, font-size, , 50%, 50%: , . 30â60 20â40.

: font-size 16 .
: font-size 24 .
, em .
line-height c em/rem
line-height
140% 180%.
140%
, ,
font-size
.
p { line-height: 140%; } @media (min-width: 20em) { p { line-height: calc( 140% + .4 * (100vw - 20rem) / (60 - 20) ); } } @media (min-width: 60em) { p { line-height: calc( 140% + .4 * 1rem ); } }
line-height
rem-,
(100vw - 20rem) / (60 - 20)
0rem
1rem
.
font-size
1rem
,
40%
.4rem
.
calc()
-.
line-height
.
line-height
H1 133,33% 120%. ,
font-size
.
, :
24 Ã (1.3333 - 1.2) = 3.2px
,40 Ã (1.2 - 1.2) = 0px
.
120%
, 3,2 0 . 16 , 3,2
= 0.2rem
,
.2
.
, , :
h1 { line-height: calc( 120% + 0.2 * 1rem ); } @media (min-width: 20em) { h1 { line-height: calc( 120% + 0.2 * (100vw - 60rem) / (20 - 60) ); } } @media (min-width: 60em) { h1 { line-height: 120%; } }
2ã€ã®ãã€ã³ãïŒ
.2rem
, font-size 24 40 . , .- ,
(100vw - 60rem) / (20 - 60)
60em
20em
(). , 16 -640px / -40
. , , 0.2
.
ãããã«
. CSS-:
- , ,
font-size
line-height
,- ,
em
.
â . , ,
font-size
.
em
. , .
: media-
em
, .
font-size
CSS-:
@media (min-width: 20em) and (max-width: 60em) { selector { property: calc( baseline_value + multiplier * (100vw - 20rem) / (60 - 20) ); } }
multiplier
â ,
rem
, . : 0.75
0.75rem
.
media- ,
font-size
. . CSS-.
em/rem
-, :
@media (min-width: 320px) and (max-width: 960px) { selector { property: calc( baseline_value + multiplier * (100vw - 320px) / (960 - 320) ); } }
multiplier
â
, , . :
12
12px
.
. , , , :
@media (min-width: 320px) and (max-width: 960px) { selector { property: calc( baseline_value + 0.25vw - 10px; ); } }
0.25vw
-10px
, , Sass PostCSS.
( mixin), .