-
๐จ CSS 1 | CSS layout (display, position)CSS 2021. 12. 16. 22:48
CSS (Cascading Style Sheets)
CSS๋ Cascading Style Sheets์ ์ฝ์์ด๋ค. html์ด ์นํ์ด์ง์ content๋ฅผ ๋ด๋นํ๊ณ , javascript๊ฐ ์นํ์ด์ง์ ๋์ ์ธ ์์๋ค์ ๋ด๋นํ๋ค๋ฉด, css๋ ์นํ์ด์ง๋ฅผ ์๋ฆ๋ต๊ฒ ๋ง๋ค์ด์ฃผ๋ ์ญํ ์ ๋ด๋นํ๋ค.
์นํ์ด์ง๊ฐ ์คํ์ผ๋ง ๋ ๋๋ ์๋ 3๊ฐ์ง๋ฅผ ์ฐธ๊ณ ํ๋ค.
1. Author style : ๋ด๊ฐ ์์ฑํ style sheets. (.cssํ์ผ)
2. User Style : ์ฌ์ฉ์๊ฐ ์คํ์ผํ๋ ๊ฒ(๋คํฌ๋ชจ๋, ๊ธ์ ํฌ๊ธฐ ์ค์ ๋ฑ)
3. Browser : ๋ธ๋ผ์ฐ์ ์์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ ๋ ์คํ์ผ.
๊ทธ๋ฆฌ๊ณ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋๋ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๊ฐ ์์ฑํ style sheets์ธ author style์ด 1์์, user style์ด 2์์, ๋ง์ง๋ง์ผ๋ก browser๊ฐ 3์์์ด๋ค. ์ฐ์ ์์๋ ์ด๋ค ๊ฒ์ ๋จผ์ ์ฐธ๊ณ ํ๋๊ฐ๋ฅผ ์๋ฏธํ๋ค. ๋จผ์ 1์์๋ฅผ ๋ฐํ์ผ๋ก ์ฐธ๊ณ ํ๊ณ 1์์๊ฐ ์๋ค๋ฉด ๋ค์ ๊ฒ์, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ค์ ๊ฒ์ ์ฐธ๊ณ ํ๋๋ฐ, ์ด๋ฌํ ๊ณผ์ ์ Cascading์ด๋ผ๊ณ ํ๋ค.
ํ์ง๋ง !important ํค์๋๋ฅผ ์ฌ์ฉํด์ ์คํ์ผ์ ์ง์ ํ๋ฉด, ์ฐ์ ์์๋ค์ ๋ฌด์๋๊ณ 1์์๋ฅผ ๊ฐ์ง๋ค.
p { color : red; !important; }
ํ์ง๋ง ์ด๋ฌํ ํจํด์ ์ง์๋ฅผ ์ด์ง๋ฝํ๊ธฐ ๋๋ฌธ์ !important ์ฌ์ฉ์ ์ง์ํด์ผ ํ๋ค.
Selectors(์ ํ์)
์ ํ์๋ html ์์ ์ด๋ค ์ฝ๋๋ฅผ ๊พธ๋ฐ ๊ฒ์ธ์ง ์ ํํ ์ ์๋๋ก ํด์ฃผ๋ ๋ฌธ๋ฒ์ด๋ค.
* { color : blue; }
* ๋ ๋ชจ๋ ํ๊ทธ๋ฅผ ์ ํํ๋ ์ ํ์์ด๋ค.
div { color : blue; }
ํน์ ํ๊ทธ๋ฅผ ์ ํ์๋ก ์ง์ ํ๋ฉด ํ๊ทธ์ ์คํ์ผ์ด ์ฃผ์ด์ง๋ค.
#name { color : blue; }
id ๊ฐ์ด name์ธ ํ๊ทธ๊ฐ ์ ํ๋๋ค. #์ id์ ํ์์ด๋ค. ํ๊ทธ๋ฅผ ์ ์ธํ ๋ id ๊ฐ์ ์ฃผ๋ฉด id์ ํ์๋ฅผ ์ฌ์ฉํด์ ์คํ์ผ์ ์ค ์ ์๋ค.
.class { color : blue; }
class ๊ฐ class์ธ ํ๊ทธ๊ฐ ์ ํ๋๋ค. ํ๊ทธ๋ฅผ ์ ์ธํ ๋ class๊ฐ์ ์ฃผ๋ฉด class์ ํ์๋ฅผ ์ฌ์ฉํด์ ์คํ์ผ์ ์ค ์ ์๋ค.
button:hover{ color : blue; }
์ํ๊ฐ์ ์ฃผ๋ ค๋ฉด : ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ์์ ์ฝ๋๋ button์ ์ํ๊ฐ hover์ผ ๋(๋ฒํผ์ ๋ง์ฐ์ค๊ฐ ์ฌ๋ ค์ ธ ์์ ๋) ๊ธ์ ์์ด ํ๋์์ผ๋ก ๋ณํ๋ ์ฝ๋์ด๋ค.
a[href="https://example.org"]{ color : blue; }
[] ๋ ํน์ ์์ฑ์ ์ง์ ํ ์ ์๋ค. a ํ๊ทธ ์ค์์ ๋งํฌ ์ฃผ์๊ฐ example.org ์ธ ๊ฒ์ ์ ํํ๊ณ ์๋ค.
์ด ์ธ์๋ ๋ง์ ์ ํ์๋ค์ด ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ ํ์์๋ ์ฐ์ ์์๊ฐ ์๋ค.
1. !important ์ ํ์
2. html ํ๊ทธ ์์ ๋ฃ๋ ์ธ๋ผ์ธ ์คํ์ผ
3. id ์ ํ์
4. class ์ ํ์
5. ์์ฑ ๊ธฐ๋ฐ ์ ํ์
6. ํ๊ทธ ์ ํ์
7. ์ ์ฒด ์ ํ์
๊ฐ์ ์ ํ์๋ผ๋ฆฌ๋ ๋์ค์ ์ฐ์ฌ์ง ์ฝ๋๋ก ๋ฎ์ด ์์์ง๋ค.
CSS ๋ ์ด์์ #1 Display
css ๋ ์ด์์์์๋ display์ position์ด ์ค์ํ๋ค.
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <link rel="stylesheet" href="style.css"> <title></title> </head> <body> <div></div> <div></div> <div></div> <span></span> <span></span> <span></span> </body> </html>
div์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก block level์ด๊ณ , span์ ๊ฒฝ์ฐ inline level ํ๊ทธ์ด๋ค.
style.css
div, span{ width : 80px; height : 80px; margin : 20px; background-color : blueviolet; }
์ค์ ํ๋ฉด์์๋ div ํ๊ทธ๋ง ๋ ๋๋ง ๋์๋ค.
span ํ๊ทธ์ ๊ฒฝ์ฐ๋ ์์ content ๊ฐ ์์ผ๋ฉด ํ๋ฉด์ ์ถ๋ ฅ๋์ง ์๋ inline level์ด๊ธฐ ๋๋ฌธ์ด๋ค. span ํ๊ทธ๋ content ์ ๋ฐ๋ผ ๋ฐ์ค์ ํฌ๊ธฐ๊ฐ ์กฐ์ ๋๋ค.
div ํ๊ทธ์ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ div ํ๊ทธ๋ค์ด ํ ์ค์ ์ฐจ์งํ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
ํ์ง๋ง span ํ๊ทธ์ ๊ฒฝ์ฐ, content์ ์๋งํผ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์๋ค.
span์ inline-level์์ block-level๋ก ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด display ์์ฑ์ ์ฃผ๋ฉด ๋๋ค.
style.css
div, span{ width : 80px; height : 80px; margin : 20px; } div{ background-color: blueviolet; } span{ background-color: aqua; display : block; }
div ์ญ์ block level์์ display๋ฅผ ๋ณ๊ฒฝํด์ค ์ ์๋ค.
style.css
div, span{ width : 80px; height : 80px; margin : 20px; } div{ background-color: blueviolet; display : inline-block; } span{ background-color: aqua; display : block; }
์ด์ display ๊ฐ์ inline-block ์์ inline์ผ๋ก ๋ฐ๊ฟ๋ณด์.
style.css
div, span{ width : 80px; height : 80px; margin : 20px; } div{ background-color: blueviolet; display : inline; } span{ background-color: aqua; display : block; }
์์์ ๋งํ๋ฏ์ด, inline์ ๊ฒฝ์ฐ๋ content ์์ฒด๋ฅผ ๊พธ๋ฉฐ์ฃผ๋ ์์ฑ์ด๊ธฐ ๋๋ฌธ์ content๊ฐ ์๋ค๋ฉด ํ๋ฉด์ ์ถ๋ ฅ๋์ง ์๋๋ค. inline-block์ ๊ฒฝ์ฐ๋ content์ ์๊ด์์ด ํ๋์ block(์์)์ผ๋ก ์ฒ๋ฆฌ๋๋๋ฐ inline์ผ๋ก ํ ์ค์ ์ฌ๋ฌ๊ฐ์ block์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
CSS ๋ ์ด์์ #2 Postion
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <link rel="stylesheet" href="style.css"> <title></title> </head> <body> <article class="container"> <div></div> <div class="box">I'm Box</div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </article>> </body> </html>
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; } .box{ background-color: aqua; }
container๋ผ๋ class๋ฅผ ๊ฐ์ง article ํ๊ทธ ์์ ์ฌ๋ฌ๊ฐ์ div ํ๊ทธ๋ค์ด ๋ค์ด์๋ ๊ตฌ์กฐ์ด๋ค. ๊ทธ๋ฆฌ๊ณ div ํ๊ทธ๋ค ์ค ํ๋์ box๋ผ๋ class๋ฅผ ์ฃผ์๋ค.
divํ๊ทธ์ ํฌ๊ธฐ๋ width ์ height์ผ๋ก ๋ณ๊ฒฝํ ์ ์๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก divํ๊ทธ์ ์์น๋ top, left, right, bottom ์์ฑ์ ์ฌ์ฉํด์ ๋ณ๊ฒฝํ ์ ์๋ค.
container์ ์์น๋ฅผ ๋ณ๊ฒฝํด๋ณด์.
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; left : 20px; top : 20px; } .box{ background-color: aqua; }
container๋ฅผ ์์์๋ถํฐ 20px, ์ผ์ชฝ์ผ๋ก๋ถํฐ 20px ์ด๋์์ผฐ๋ค. ํ์ง๋ง ํ๋ฉด ์์ container์ ์์น ๋ณํ๋ ์๋ค.
position ์์ฑ์ ๊ธฐ๋ณธ ๊ฐ์ด static์ด๊ธฐ ๋๋ฌธ์ด๋ค. position ์์ฑ ๊ฐ์ ์ง์ ํด์ฃผ์ง ์์์ ๋๋(์ฒ์ ์์ ) div ๋ฐ์ค๋ค์ด ๋งจ ์ผ์ชฝ, ๊ทธ๋ฆฌ๊ณ ์์ชฝ๋ถํฐ ์ฐจ๋ก๋ก ํ๋ฉด์ ๋ณด์ฌ์ก๋ค. ์ด ์์ฑ๊ฐ์ด static์ด๊ธฐ ๋๋ฌธ์ด๋ค.
container์ ์์น๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด์๋ position์ ๊ฐ์ ๋ฐ๊ฟ์ค์ผ ํ๋ค.
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; left : 20px; top : 20px; position : relative; } .box{ background-color: aqua; }
container๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ชฝ, ์ผ์ชฝ์ ํ์ด ์๊ธด ๊ฒ์ ๋ณผ ์ ์๋ค(20px ์ด๋).
๋ฐ์ค๋ ์์น๋ฅผ ๋๊ฐ์ด ๋ฐ๊ฟ๋ณด์.
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; left : 20px; top : 20px; position : relative; } .box{ background-color: aqua; left : 20px; top : 20px; position : relative; }
์๋ ์๋ ์์น์์ 20px ์ฉ ์ด๋๋์๋ค. position์ ๊ฐ์ผ๋ก ์ฃผ์๋ relative๋ ์๋ ์๋ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ํ๋ค.
relative์ธ์๋ ์ฌ๋ฌ ๊ฐ๋ค์ด ์๋ค.
absolute์ ๊ฒฝ์ฐ, ๋๋ฅผ ํฌํจํ๊ณ ์๋ ๊ฐ์ฅ ์์์ ํ๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์น๊ฐ ๋ณ๊ฒฝ๋๋ค.
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; left : 20px; top : 20px; position : relative; } .box{ background-color: aqua; left : 20px; top : 20px; position : absolute; }
.box ํ๊ทธ์ ๊ฐ์ฅ ์์ ํ๊ทธ๋ class๊ฐ container์ธ article ํ๊ทธ์ด๋ฏ๋ก, container๊ฐ ๋ด ๊ธฐ์ค์ด ๋๋ค.
fixed์ ๊ฒฝ์ฐ๋ ์์ ์์๋ฅผ ๋ฒ์ด๋์ window์์์ ์์ง์ธ๋ค. ์นํ์ด์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ํ๋ค.
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; left : 20px; top : 20px; position : relative; } .box{ background-color: aqua; left : 20px; top : 20px; position : fixed; }
๋ง์ง๋ง์ผ๋ก sticky์ ๊ฒฝ์ฐ๋, ์๋ ์์น์ ๋ฑ ๋ถ์ด์ ์คํฌ๋กค์ ๋ด๋ ค๋ ๊ทธ ์์น ๊ทธ๋๋ก ์์ง์ด์ง ์๋๋ค.
style.css
div { width : 50px; height : 50px; margin : 20px; background-color: red; } .container{ background-color: blueviolet; left : 20px; top : 20px; position : relative; } .box{ background-color: aqua; left : 20px; top : 20px; position : sticky; }
[์ฐธ๊ณ ์๋ฃ]
'CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐จ CSS 6 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 2ํ (0) 2022.09.09 ๐จ CSS 5 | ๊ทธ๋ฆฌ๋(with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํ (0) 2022.09.09 ๐จ CSS 4 | Flexbox (with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 2ํ (0) 2022.09.05 ๐จ CSS 3 | CSS ๋จ์ ( %, em, rem, vw, vh ) (0) 2021.12.17 ๐จ CSS 2 | Flexbox (with ๋๋ฆผ์ฝ๋ by ์จ๋ฆฌ) 1ํ (0) 2021.12.17