[TIL] 1115 LikeLion๐Ÿฆ FES 11

์ด์ถ˜๊ตฌยท2021๋…„ 11์›” 15์ผ
1

ํฐํŠธ ์ ์šฉ

rel="preconnect"์˜ ์‚ฌ์šฉ
preload, prefetch, preconnect
์›นํฐํŠธ ์ตœ์ ํ™” ํ•˜๊ธฐ
์›น ํฐํŠธ ์‚ฌ์šฉ๊ณผ ์ตœ์ ํ™”์˜ ์ตœ๊ทผ ๋™ํ–ฅ

<link rel="preconnect" href="font ์ฃผ์†Œ">
ํ˜„์žฌ ํŽ˜์ด์ง€์—์„œ ์™ธ๋ถ€ ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐธ๊ณ ํ•˜๋Š” ๊ฒƒ์„ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค ๋ฏธ๋ฆฌ ์™ธ๋ถ€ ๋„๋ฉ”์ธ๊ณผ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

preconnect๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์‚ฌ์ดํŠธ์— ํ•„์š”ํ•œ ์—ฐ๊ฒฐ์„ ๋ฏธ๋ฆฌ ์˜ˆ์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ํ•„์š”ํ•œ ์†Œ์ผ“์„ ๋ฏธ๋ฆฌ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— DNS, TCP, TLS ์™•๋ณต์— ํ•„์š”ํ•œ ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์‚ฌ์ดํŠธ ๋„๋ฉ”์ธ ๋‚ด์— ์—…๋กœ๋“œ๋œ ์›นํฐํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ์ด๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ์•Œ๋ ค์ค˜์„œ ๋ฏธ๋ฆฌ ์‚ฌ์ „์ž‘์—…์„ ํ•˜๊ฒŒ ํ•ด์„œ ๋น ๋ฅด๊ฒŒ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

Holy Grail Layout

์šฐ๋ฆฌ๋ง๋กœ ์„ฑ๋ฐฐ ๋ ˆ์ด์•„์›ƒ์ด๋ผ๊ณ  ํ•˜๋ฉฐ header, nav, main, aside, footer๋กœ ์ด๋ฃจ์–ด์ง„ ์ด์ƒ์ ์ธ ๋ ˆ์ด์•„์›ƒ์ด๋‹ค. ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๊ฒƒ์ด ๋งˆ์น˜ ์„ฑ๋ฐฐ๋ฅผ ์ฐพ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ์–ด๋ ต๋‹ค๊ณ  ํ•ด์„œ ๋ถ™์—ฌ์ง„ ์ด๋ฆ„๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ, flex์™€ grid๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
์ด๋ฏธ์ง€ ์ถœ์ฒ˜: ์ƒํ™œ์ฝ”๋”ฉ

    <body>
        <div>
            <header>HEADER</header>
            <section>
                <nav>NAV</nav>
                <main>MAIN</main>
                <aside>ASIDE</aside>
            </section>
            <footer>FOOTER</footer>
        </div>
    </body>

์ „์ฒด๋ฅผ ๊ฐ์‹ธ๋Š” <div>์—๋Š” flex-direction: column;์„ ์ ์šฉ์‹œ์ผœ์„œ ์ˆ˜์ง์ •๋ ฌ ์‹œํ‚ค๊ณ ,
nav, main, aside๋ฅผ ๊ฐ์‹ธ๋Š” section์—๋Š” flex-direction: row;(๊ธฐ๋ณธ๊ฐ’์ด๋ฏ€๋กœ ์•ˆ ์ ์–ด์ค˜๋„ ์ž๋™ ์ ์šฉ)์„ ์ ์šฉ์‹œ์ผœ์„œ ์ˆ˜ํ‰์ •๋ ฌ ์‹œํ‚ค๋Š” ๊ฒƒ์ด ๊ด€๊ฑด์ด๋‹ค.

            div {
                display: flex;
                flex-direction: column;
                border: 5px solid black;
            }
            header {
                border: 5px solid red;
            }
            section {
                display: flex;
            }
            nav {
            	width: 150px;
                flex-grow: 2;
                flex-shrink: 0;
                border: 5px solid yellow;
            }
            main {
                flex-grow: 6;
                flex-shrink: 0;
                border: 5px solid green;
            }
            aside {
            	flex-basis: 150px;
                flex-grow: 2;
                flex-shrink: 0;
                border: 5px solid blue;
            }
            footer {
                border: 5px solid purple;
            }

            @media screen and (max-width: 700px) {
                section {
                    flex-direction: column;
                }
                nav,
                main,
                aside {
                    flex-basis: auto;
                }
            }

nav, main, aside์—flex-grow ๊ฐ’์œผ๋กœ ๊ฐ๊ฐ 2, 6, 2๊ฐ€ ๋ถ€์—ฌ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ,
์ด๋Š” ์ „์ฒด ๋„ˆ๋น„์—์„œ nav๊ฐ€ 10๋ถ„์˜ 2, main์ด 10๋ถ„์˜ 6, aside๊ฐ€ 10๋ถ„์˜ 2๋ฅผ ์ฐจ์ง€ํ•˜๋„๋ก ํ•œ๋‹ค.(width๋‚˜ flex-basis๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์— ํ•œ์ •ํ•จ)

nav์™€ aside์— flex-shrink: 0;๋ฅผ ๋ถ€์—ฌํ•ด์„œ ์ปจํ…Œ์ด๋„ˆ์˜ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ฆ์— ๋”ฐ๋ผmain์€ ์ค„์–ด๋“ค์ง€๋งŒ nav์™€ aside๋Š” 150px ์ดํ•˜๋กœ๋Š” ์ค„์–ด๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

width์™€ flex-basis์˜ ์ฐจ์ด

CSS width vs flex-basis
700px ์ดํ•˜์—์„œ section์˜ flex-direction์ด column์œผ๋กœ ๋ฐ”๋€Œ์ž nav์˜ ๋„ˆ๋น„๋Š” ๊ณ ์ •๊ฐ’ 150px์ด ๋˜์—ˆ๊ณ  aside๋Š” ๋„ˆ๋น„๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๊ฐ€๋“ ์ฑ„์šฐ๊ณ  ๋†’์ด๊ฐ€ 150px์ด ๋˜์—ˆ๋‹ค.
width๋Š” flexbox์˜ ์ฃผ์ถ• ๋ฐฉํ–ฅ๊ณผ ์ƒ๊ด€์—†์ด ๊ฐ€๋กœ๊ธธ์ด๋ฅผ ์„ค์ •ํ•˜๋Š” ์†์„ฑ์ด๊ณ  flex-basis๋Š” ๊ธธ์ด๋ฅผ flexbox์˜ ์ฃผ์ถ• ๋ฐฉํ–ฅ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ์†์„ฑ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ์ฐจ์ด์ด๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด flex-basis๋ฅผ auto๋กœ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

profile
ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€