19/10/14 html๊ณผ css๋ก ๋ง๋ค์ด๋ณด๋ ๋น๋ณด๋์ฐจํธ
์ ํ๋ธ ๋งํฌ ํ๊ฒฝ์ ๊ตฌ๋ฆIDE ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
https://github.com/develup-official/css-ep2-billie-board
ํด๋น ๋ ํ์งํ ๋ฆฌ๋ฅผ ํด๋ก ํ๊ณ html๊ณผ cssํ์ผ์ ์์ ํ์์ต๋๋ค.
๋น๋ณด๋์ฐจํธ ์์ฑ ๋ชจ์ต์ ๋๋ค.
1. ๋ ์ด์์
๊ฐ์ฅ ๋จผ์ ์ ๊ฒฝ์จ์ผ ํ๋ ๋ถ๋ถ์ ์ ์ฒด์ ์ธ ๋ ์ด์์์ ๋๋ค.
์ด์ฌ์์ผ ๋ ์ผ ์๋ก ์์ ๋ถ๋ถ์ ์ง์ฐฉํ๊ฒ ๋๋๋ฐ ์ ์ฒด์ ์ผ๋ก ๋ช ๊ฐ์ ๋ฉ์ด๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ์๋์ง๊ฐ ์ค์ํฉ๋๋ค.
์์ฑ๋ ๋น๋ณด๋์ฐจํธ๋ฅผ ์ฐธ๊ณ ํด๋ณด๋ฉด ๋ฐ๋ ์์ ํ ๋ฉ์ด๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํ ๋ฉ์ด๋ฆฌ๋ div ํ๊ทธ๋ก ๋ํ๋ด๊ณ class ๋ฅผ ๋ฌ์์ฃผ๋๋ฐ ๋ณดํต wrapper ๋ผ๊ณ ํ๊ธฐ๋ ํ๊ณ container๋ผ๊ณ ํ๊ธฐ๋ ํฉ๋๋ค.
index.html
<div class="wrapper">
...
</div>
์ ๋ค์ด๊ฐ๋์ง ํ์ธ์ ํ ๋๋ Open Preview๋ฅผ ๋๋ฅด๋ฉด ๊ฐ๋จํ๊ฒ ํ์ธ์ด ๊ฐ๋ฅํฉ๋๋ค.(๊ตฌ๋ฆ IDE) vscode ์์๋ extensions ์์ open in browser ๋ฅผ ์ค์นํ์๊ณ Alt + B
๋ฅผ ๋๋ฆ
๋๋ค.
๋ง์ ๋ถ๋ค์ด html markup์ ๋ค ํ๊ธฐ ์ ์๋ css๋ฅผ ๊ฑฐ์ ํ์ง ์์ผ๋ คํ๋ ๊ฒฝํฅ์ด ์์ง๋ง html markup์ ์ต์ํ์ผ๋ก ๊ฐ์ ธ๊ฐ๊ณ css๋ฅผ ์ต์ํ์ ๋งํฌ์ ๊ธฐ์ค์์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ด ์ ์ฒด์ ์ธ ํ์ ์ก๋ ๊ฒ๊ณผ ๊ฐ์ ๋ ์์ ์ ์ด๋ผ๊ณ ํฉ๋๋ค.
style.css
body{
background-color: #333;
}
โ
.wrapper{
background-color: #999;
width: 800px; // ๋๋น
margin: 0 auto; // ๊ฐ๋ก๊ธฐ์ค ๊ฐ์ด๋ฐ ์ ๋ ฌ(์ํ๋จ 0, ์ข์ฐ auto)
}
์ฌ๊ธฐ๊น์ง ํ๊ณ ์์ ๋งํฌ์ ์ ๋ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํ ํฌ๊ฐ ๋๋ฆด ์ ์์ง๋ง ์๋์ ์ธ ๊ฒ์ผ๋ก ์์ ์ฑ์ ์ฐ์ ์ํฉ๋๋ค.
2. ๋งํฌ์
์ ๋ชฉ์ ์์ฑํฉ๋๋ค.
<div class="wrapper">
<h1>
BILLIEBOARD
</h1>
</div>
์ฐจํธ์ ํญ๋ชฉ๋ค์ 1, 2, 3, 4, ... ์ซ์๊ฐ ์์ ๋ถ์ด์์ต๋๋ค. ๊ทธ๋ ๋ค๋ ๊ฒ์ ์์ฐจ๊ฐ ์๋ ๋ฆฌ์คํธ๋ผ๋ ๋ป์ผ๋ก ๋น์ทํ ๊ฒ์ ๋ค์ด๋ฒ ์ค์๊ฐ ๊ฒ์ ์์๊ฐ ์์ต๋๋ค. ์์ฐจ์ ๋ฆฌ์คํธ์ผ ๋๋ <ol>ํ๊ทธ๋ฅผ ๋ง์ด ์๋๋ค. ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ class๋ฅผ chart์ chart-item ์ผ๋ก ๋ฌ์์ค๋๋ค.
<div class="wrapper">
<h1 class="title">BILLIEBOARD</h1>
<ol class="chart">
<li class="chart-item">Rank1</li>
<li class="chart-item">Rank2</li>
<li class="chart-item">Rank3</li>
</ol>
</div>
์ฌ๊ธฐ๊น์ง ์ค๋ฉด ์๋์ ์ผ๋ก ๋์์ธ๋์ง ์์ ์ฌ๋ฐฑ๋ค์ด ๋ณด์ด๊ฒ ๋๋๋ฐ ๊ทธ ์ด์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํ๊ทธ์ ๋ฐ๋ฅธ ๊ธฐ๋ณธ ์คํ์ผ์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์์ฐฝ ์์ด์ฝ์ ํด๋ฆญํ๊ฒ ๋๋ฉด ํ๋ฆฌ๋ทฐ๊ฐ ์ ์ฐฝ์์ ๋ํ๋๊ฒ ๋๋๋ฐ ์ด ๋ ๊ฒ์ฌ
๋ฅผ ๋๋ฅด๋ฉด ๊ฐ๋ฐ์ ๋๊ตฌ๊ฐ ๋จ๋ฉด์ ์ด๋์ ๋ฌธ์ ๊ฐ ์๋์ง ์ฝ๊ฒ ์ฐพ์ ์ ์์ต๋๋ค. Ctrl + Shift + I
๋ F12
๋ฅผ ๋๋ฌ๋ ๊ฐ๋ฅํฉ๋๋ค.
์ค์ ๋ก ํ์ธํด๋ณด๋ฉด ๋ง์ง์ ์ค์ ํด๋์ง ์์๋๋ฐ๋ ๋ง์ง์ด ์๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ ๋ช ๊ฐ์ ํ๊ทธ์ ๊ธฐ๋ณธ์ผ๋ก ์ ํ ์ ํด์ฃผ๋ user agent stylesheet๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฐ ๋ถ๋ถ๋ค์ ์์ ๋๊ฒ ์ข์ต๋๋ค.
3-1. CSS : ์ ์ฒด์ ์ธ ํ
์ ๋ชฉ๊ณผ ๋ฆฌ์คํธ์ margin๊ณผ padding์ ์์ ๊ณ , list์ ๋ถ์ฌ์ง ์ซ์๋ค์ ์ง์๋๋ค. ์์ฑ๋ชจ์ต์๋ ์ซ์๊ฐ ์์ง๋ง list-style-type์ผ๋ก ๋๊ฐ์ด ๋ง๋ค๊ธฐ ํ๋ ๋ถ๋ถ์ด๋ฏ๋ก ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํด์ฃผ๋ ๋ฆฌ์คํธ ์คํ์ผ์ ์์ ๋๋ก ํฉ๋๋ค.
ol, h1 {
margin: 0;
padding: 0;
}
โ
li {
list-style-type: none;
}
๊ตฌ์ญํ์ธ์ฉ์ผ๋ก ์์ฑํ๋ wrapper์ background-color๋ ์ง์ฐ๊ณ body์ ์ ๊ฒฝ์์ ๋ฐ์ ํ์์ผ๋ก ์ง์ ํฉ๋๋ค.
.title {
text-align: center;
color: deeppink;
font-size: 80px;
letter-spacing: 0.2em;
text-indent: 0.2em;
padding: 50px 0;
}
letter-spacing ์์ฑ์ผ๋ก ๊ธ์๊ฐ์ ๊ฐ๊ฒฉ๋ ์กฐ์ ํ ์ ์์ต๋๋ค. em ์ด๋ ํฐํธ ์ฌ์ด์ฆ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋น๋กํ๋ ํฌ๊ธฐ๋ฅผ ๋ปํ๋๋ฐ์, ์์ ์ฝ๋์์๋ ๊ธ์ ํฌ๊ธฐ์ธ 80px์ ๊ธฐ์ค์ผ๋ก 20%์ ํด๋นํ๋ ํฌ๊ธฐ๋งํผ letter spacing์ ํ๊ฒ ๋ค๋ ๋ป ์ ๋๋ค.(๊ธ์๊ฐ ๊ฐ๊ฒฉ์ ์ค๋๋ค.)
๊ทธ๋ฅ letter-spacing ๊น์ง๋ง ํ๋ฉด ๋ง์ง๋ง ๊ธ์๊น์ง๋ letter-spacing์ด ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ ์๋จ์ ๋ค์ฌ์ฐ๊ธฐ(test-indent)์์ฑ์ ์ถ๊ฐํ์ฌ ๊ฐ์ด๋ฐ ์ ๋ ฌ์ด ์ ์ง๋๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๋๋ก ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ํ๋จ padding ๊น์ง ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
3-1. CSS : ordered list | ๋ง์ง๊ฒน์นจํ์
์ด์ ๋ถํฐ ์ค์ํ ๋ถ๋ถ์ ๋๋ค.
.chart {
background-color: #aaa;
}
.chart-item {
background-color: white;
margin: 60px;
}
์๊น๋ถํฐ background-color ๋ฅผ ์ฒ์์ ์ฃผ๋ ๋ถ๋ถ์ ์ฐจํธ๊ฐ ์ผ๋ง๋งํผ์ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์๋์ง ํ์ธํ๋๊ฒ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐจํธ์ ๊ฐ๊ฒฉ๋ค์ ์ฃผ๊ธฐ์ํด์ margin์ ์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ์์ ๊ฐ์ ๋ชจ์ต์ ๋ณด๊ฒ ๋๋๋ฐ ์ด๋ ์ฐ๋ฆฌ์ ์๋์ ๋ค๋ฅธ ๋ฐฉํฅ์ ๋๋ค. css๋ฅผ ๋ง์ด ํด๋ณธ ์ฌ๋์ ๋นจ๋ฆฌ ์ ์ ์์ง๋ง ์ด์ฌ์๋ผ๋ฉด ๋ชจ๋ฅด๋... ์ฌ๊ธฐ์์ ๊ธฐ์ด ์ง์ํ๋๋ฅผ ๊ผญ ์ง๊ณ ๊ฐ์ผํฉ๋๋ค.
ํฐ ๋ถ๋ถ๋ค์ list๋ก block level element์
๋๋ค. ์ด๋ค๋ผ๋ฆฌ๋ ์ํ๋จ ๋ง์ง์ด ๊ฒน์น๋ค. ๋๋ ๋ณํฉ๋ฉ๋๋ค. ์ด๋ฌํ ํ์์ ๋ง์ง๊ฒน์นจํ์
์ด๋ผ๊ณ ํฉ๋๋ค. ์ฌ์ค ๋ง์ง๊ฒน์นจํ์์ ์์ฐ์ค๋ฌ์ด ๋์์ธ์ธ๋ฐ ์ง๊ธ์ chart์ chart-item ์ด๋ผ๋ ๋ถ๋ชจ ์์ ๊ด๊ณ์์ ๋ง์ง๊ฒน์นจํ์์ด ์ผ์ด๋๊ณ ์์ผ๋ฏ๋ก ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ ํฉ๋๋ค.
๊ทธ๋ฆผ๊ณผ ํจ๊ป ์ค๋ช
ํด์ฃผ๋ ์์ธ์ค๋ช
์ ์์ ์ ํ๋ธ ๋งํฌ ๋์์ 35๋ถ ๋ถํฐ
ํ์ธํ์๋ฉด ๋ฉ๋๋ค. ๊ฐ๋ตํ ์์ฝ์ ํ์๋ฉด ์๋์ ๊ฐ์ต๋๋ค.
์ฌ์ค ๋ธ๋ก๊ณผ ๋ธ๋ก์ฌ์ด์ ์ํ๋จ ๋ง์ง์ด ๊ฒน์น๊ฒ๋ ํ๋๊ฑด ๊ฐ๋ฐ์์ ์๋๋ ๋ฐ์ด๋ค. ์์ฐ์ค๋ฌ์ด ๋์์ธ. ํฉ๋ฆฌ์ ์ด๋ค.
โ
๊ทธ๋ฐ๋ฐ ๋งจ ์์ ์๋๋ ๊ฒน์น๋ค๋๊ฒ ๋ฌธ์ ์ธ๊ฒ์ด๋ค. wrapper์ box ์ฆ ๋ถ๋ชจ์ ์์๊ฐ์ ๊ด๊ณ์์ ๋ง์ง๊ฒน์นํ์์ด ์ผ์ด๋๊ฒ๋๋ค. ์ปดํจํฐ๋ ๋จ์ํ ์กฐ๊ฑด์ ์ํด์ ์์ง์ด๋ ๊ฒ์ด๋ค. wrapper์ ๋ถ๋ชจ์ด๋ฉด์ block-level-element, box๋ block-level-element. ์ธ์ ํด์๋ ์๋จ ๋ง์ง, ์ธ์ ํด์๋ ํ๋จ ๋ง์ง. ๊ทธ๋์ ๋ถ๋ชจ์ ์์๊ฐ์๋ ์ํ๋จ ๋ง์ง๊ฒน์นจํ์์ด ์ผ์ด๋๋ค.
ํด๊ฒฐ๋ฐฉ๋ฒ
border: ๋ถ๋ชจ์ ์์ ์ฌ์ด์
border
๋ผ๋ ๊ณต๊ฐ์ ์ฐจ์งํ๊ณ ์๋ ๊ฒฝ๊ณ๋ฉด์ด ์๊ธฐ๋๊น ๋ง์ง๊ฒน์นจํ์์ด ํด๊ฒฐ๋๋ค.padding: ๋๋
ํจ๋ฉ์ 1px
๋ง ์ค๋ ํด๊ฒฐ์ด ๋๋ค. ์ด๊ฒ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ถ๋ชจ์ ์์ ์ฌ์ด์ ๊ณต๊ฐ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ ์ํ๋จ ๋ง์ง๊ฒน์นจํ์์ด ์ผ์ด๋์ง ์๋๋ค.overflow: ํ์ง๋ง ๋ณด๋๋ ํจ๋ฉ์ ์๊ฐ์ ์ผ๋ก ๋ณด์ผ์ ์๊ธฐ ๋๋ฌธ์
overflow: hidden;
์ ์ฌ์ฉํ๋ค. ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ง์ง ์๊ณ ๋ง์ง๊ฒน์นจํ์์ ํด๊ฒฐํ ์ ์๋ค. (์ด์ ์ํผ์๋ ์ฐธ๊ณ : ์ ํ๋ธ ์ด์ ๊ฐ์)
๋ฐ๋ผ์ ์ฝ๋๋ฅผ ๊ณ ์น๋ฉด ์๋์ ๊ฐ์ด ์ธ ์ ์๊ณ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
style.css
.chart {
background-color: #aaa;
overflow: hidden;
}
๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ์ต๋๋ค.
style.css
.chart {
background-color: #aaa;
padding: 60px;
}
โ
.chart-item {
background-color: white;
margin-bottom: 60px;
}
.chart-item:last-child {
margin-bottom: 0;
}
๋ ๋ค ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
3-2: CSS : mouse over | ํฌ์ง์ ์์ฑ
์์ฑ๋ณธ์ ๋ค์ ๋ณด๋ฉด ๋ง์ฐ์ค ์ค๋ฒํ์ ๋ ์์๋ค์ด ์ปค์ง๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๊ทธ๋ฅ ์ปค์ง๋ ๊ฒ ์๋๊ณ ์์ ์๋ ๋ด์ฉ์ ๊ฐ๋งํ ์๊ณ ์ ์ฒด ํ์ด ์ปค์ง๊ณ ์์ต๋๋ค.
์ด๋ฐ ์ ๋๋ฉ์ด์
์ ์ธ ๋ถ๋ถ๋ค ํด๊ฒฐํ๊ธฐ ์ํด์๋ ํ ๊ฐ์ง ๊ธฐ๋ณธ ์ง์์ด ํ์ํ๋ฐ ๊ทธ ์ง์์ด ๋ฐ๋ก position ์์ฑ
์
๋๋ค.
์์ธํ๊ฒ ๊ฐ์๊ฐ ํ์ํ์ ๋ถ๋ค์ ์ ํ๋ธ ์์ 47๋ถ 30์ด ๋ถํฐ ์์ฒญํ์ธ์.
์ฃผ์ํ๊ฒฝ์ ์ํฅ์ ๋ผ์น์ง ์๊ณ ์์น๋ฅผ ์์ง์ผ ์ ์๊ฒ ํ๋ ์์ฑ์ด position relative ์์ฑ์ ๋๋ค. ๋จ๋ ์ผ๋ก relative๋ง ์ฐ๋ ๊ฒฝ์ฐ๋ ๋ง์ง ์๋ค๊ณ ํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ง์ค์ ์ผ๋ก ์ฐ๋ ์์ฑ์ position absolute๋ก ์ ์ฒด ์ฐฝ์ ๊ธฐ์ค์ผ๋ก ์์ง์ด๊ฒ ๋ฉ๋๋ค.
๋ถ๋ชจ ์์ฑ์ realative๋ก ํ๋ฉด '์๋์ ์ธ ์์ฑ์์์ ์ ๋์ ์ผ๋ก ๊ฐ๋ผ.' ๊ฐ ๋์ด ์๋์ ์ธ ์ ๋์์น๋ฅผ ์ง์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ต์ฅํ ๊ธฐ๋ณธ์ ์ธ ํจํด์ด๋ฉด์ ๋ง์ด ์ฐ๋ฏ๋ก ์ ์์๋๋ฉด ์ข๊ฒ ์ต๋๋ค. relative๊ฐ ์กฐ์์ ์ฌ๋ฌ๊ฐ๋ผ๋ฉด ๋ฐ๋ก ์์ ๋ถ๋ชจ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ง์ด๊ฒ ๋ฉ๋๋ค.
02-position/02-position.html
<html>
<head>
<meta charset="utf-8">
<title>02 Position</title>
<link rel="stylesheet" href="02-position.css">
<style>
body {
background-color: #ddd;
}
.grand-father {
background-color: #eee;
width: 800px;
margin: 0 auto;
padding: 1px;
}
.father {
background-color: white;
width: 300px;
height: 200px;
margin: 50px auto;
position: relative;
}
.pos {
background-color: orange;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: 0;
transition: margin .5s;
}
.pos:hover {
margin: -30px;
}
</style>
</head>
<body>
โ
<div class="grand-father">
<div class="father">
<div class="pos">
POS
</div>
</div>
</div>
</body>
</html>
โ
์์์ ํฌ์ง์ ์ด absolute์ด๊ณ left:0; right:0; ์ด๋ฉด ์์ชฝ์ผ๋ก ๋์ด๋๋ค. ๊ทธ๋ฆฌ๊ณ top๊ณผ bottom๋ 0์ด๋ผ๋ฉด ๋ถ๋ชจ์ ํฌ๊ธฐ๋งํผ ๋์ด๋๊ฒ ๋๋ค. ์ด ๋ ๋ง์ง์ negative๋ง์ง์ ์ฃผ๊ฒ๋๋ฉด ํ์ฅ๋๋๋ฐ ์ด ์๋ฆฌ๋ฅผ ๋ฐ๋ผ์ hover๋ ๋ ๋ค๊ฑฐํฐ๋ธ ๋ง์ง์ด ๋๊ฒ๋ ํ๋ฉด ์์ ์ปจํ ์ธ ๋ ๊ฐ๋งํ ์๊ณ ํ๋ง ์ปค์ง๊ฒ ๋๋ค. ์ฌ๊ธฐ์ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ transition: margin .5s; ์ด๋ ๊ฒ ์ฃผ๋ฉด 0.5์ด๋์ ๋ง์ง ์์ฑ์์์ ์ค๊ฐ์น๊ฐ์ ๊ณ์ฐํ๊ฒ ๋ค๋ ๋ป์ด ๋๋ค.
02-position/02-position.html
.pos {
background-color: orange;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: 0;
transition: all .5s;
padding: 50px;
border: 0px solid red;
โ
}
.pos:hover {
margin: -30px;
border-radius: 20px;
border: 10px solid red;
}
์ด๋ ๊ฒ ๋ฐ๊พธ๋ฉด ๋ชจ๋ ์์ฑ๋ค์ ๋ํด์ ์ ๋๋ฉ์ด์ ์ด ์ ์ฉ๋ฉ๋๋ค.
์๋ ํ๋ก์ ํธ๋ก ๋์๊ฐ์...
๊ทธ๋์ ์ ๋ฆฌํ์๋ฉด ๋ถ๋ชจ์ธ chart-item์ position relative๋ก ์ง์ ํด๋๊ณ chart-item ์์ ๋ค์ด๊ฐ album์ ๋ํด์ position absolute๋ฅผ ์ง์ ํด๋์ด hover ๋์ ๋ margin์ ๋ง์ด๋์ค๊ฐ์ ์ฃผ๊ฒ ๋๋ฉด ์ ์ฒด ํ์ด ์ปค์ง๊ฒ ๋ฉ๋๋ค.
album์ div๋ก ๋ง๋ค์์ต๋๋ค.
index.html
<html>
<head>
<meta charset="utf-8">
<title>BillieBoard</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="wrapper">
<h1 class="title">BILLIEBOARD</h1>
<ol class="chart">
<li class="chart-item">
<div class="album">
Album01
</div>
</li>
</ol>
</div>
<script> </script>
</body>
</html>
style.css
.chart-item {
background-color: white;
margin-bottom: 60px;
position: relative;
}
โ
.album {
background-color: #999;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
transition: all .5s;
}
โ
.album:hover {
background-color: white;
margin: -30px;
}
4. ๋ณธ๊ฒฉ์ ์ธ ์ฐจํธ ๊พธ๋ฏธ๊ธฐ
1,2,3,4,5 ๋ ์ผ๋จ.. ์๋ตํ๊ณ ! ๊ฐ์ฅ ํฐ ๋ ์ด์์์ด๋ผ๊ณ ํ ์ ์๋ ์ปค๋ฒ์ด๋ฏธ์ง์ ์ฝํ ์ธ ๋ฅผ ๋จผ์ ๋ฃ์ด๋ณด๋๋ก ํฉ๋๋ค.
index.html
<div class="album">
<img class="album-cover" src="images/cover01.jpg">
<div class="album-contents">
...
</div>
</div>
์ด๋ฏธ์ง๊ฐ ์๋จ์ ์๊ณ ๋ด์ฉ๋ค์ด ๋ค๋ฐ๋ผ์ค๋ ๋ชจ์ต์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ์ง์์น๋ฅผ ์ค๋ฅธ์ชฝ์ผ๋ก ์์ง์ด๊ธฐ ์ํด์ 3-1์์ ๋ฐฐ์ด๋ด์ฉ์ ์ ์ฉ์์ผ๋ณด๊ฒ ์ต๋๋ค.
์ด๋ฏธ์ง๋ ์ค๋ฅธ์ชฝ์, ์จ๋ฒ ์ปจํ ์ธ ๋ ์ผ์ชฝ์ ์์นํ๋๋ก ํฉ๋๋ค.
style.css
.album-cover {
float: right;
height: 100%; /*๋ถ๋ชจ ํฌ๊ธฐ์ 100%*/
}
โ
.album-contents {
border: 5px solid red;
}
์ด๋ ๊ฒ ๋ณด๋ฉด border๊ฐ ์ด๋ฏธ์ง์ ๊ฒน์น๋๊ฒ์ ๋ณผ ์ ์๋๋ฐ, ์ด๋ฅผ ์์ ํ ๋ถ๋ฆฌ์ํค๊ธฐ ์ํด์ overflow ์์ฑ์ ์ด์ฉํฉ๋๋ค.
style.css
.album-contents {
border: 5px solid red;
overflow: hidden;
padding: 10px;
}
์ด์ ํจ๋ฉ๊น์ง ๋ฃ์ผ๋ฉด ์ปจํ ์ธ ์ ์ปค๋ฒ๊ฐ ๋ช ํํ๊ฒ ๋๋ ์ง๋ฉด์๋ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์ง๊ฐ ๋ฉ๋๋ค.
์ ์ฒด์ ์ธ ํ์ ๊ฐ์ท์ผ๋ ์ธ๋ถ์ ์ธ ๋งํฌ์ ์ ๋ค์ด๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ธ๋ถ์ ์ธ ๋งํฌ์
readme.md ์ ์์ฑ๋์ด์๋ ๋๋ฏธ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ html์ ๋ง์ ์์ฑํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ์ด๋ฐ ๋ชจ์ต์ ๋ณผ ์ ์๋๋ฐ์, ๋์ด๊ฐ ๊ต์ฅํ ํฝ๋๋ค. ์ด๋ฐ ๋ชจ์ต์ ์ด๋ฐ์ ์ธ๊ธํ๋ user agent stylesheet ๋ก h2์ pํ๊ทธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ฉ๋ ์ํ๋จ๋ง์ง์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฅผ ์์ ์ฃผ๊ธฐ ์ํด์ ์คํ์ผ์ ์ถ๊ฐํฉ๋๋ค.
style.css
ol, h1, h2, p {
margin: 0;
padding: 0;
}
์ด๋ ๊ฒ๋ง ํด์ฃผ๋ฉด ์๋๋๋ก ๋๋๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ border๋ฅผ ์์ ๊ณ
style.css
.album-contents {
overflow: hidden;
padding: 10px;
}
index.html
์์ <li> ๋ถํฐ๋ฅผ 5๋ฒ ๋ ๋ถ์ฌ๋ฃ์ด ์ค๋๋ค.
5. sudo-element ๊ฐ์ ์์
ํ์ดํ์๋์ ๋ฐ์ค์ ๊ธ๋ ํํ์ ํด๋ณด๊ฒ ์ต๋๋ค.
ํ์ดํ์ ์๋์ ์ธ position์์ฑ์ ์ฃผ๊ณ ๊ฐ์์์์ธ after์ ์ด์ฉํ์ฌ ๊ณต๋ฐฑ์ ์ฃผ๊ณ left, right ๋ฅผ 0 ์ผ๋ก ํ์ฌ ๋ฐ์ค์ฒ๋ผ ๋ง๋ ํ ๋ง์ง์ผ๋ก ๋์ด๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
++ left: 0; right:0; top: 0; bottom: 0; ๋์ width 100%, height 100%๋ก ํ๋ ๊ฑด ์ ์๋๋๋ฉด, ๊ทธ ๋ ๋ง์ง์ผ๋ก ์กฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ์ผ์ด 0์ผ๋ก ์ค์ ํ๋ค๊ณ ํฉ๋๋ค.
style.css
.title {
text-align: center;
color: deeppink;
font-size: 80px;
letter-spacing: 0.2em;
text-indent: 0.2em;
padding: 50px 0;
position: relative;
}
โ
.title:after {
content: ' ';
background-color: bisque;
position: absolute;
left: 0;
right: 0;
margin: 0 70px;
bottom: 60px;
border-radius: 10px;
opacity: 0.2;
height: 30px;
}
์์์ ํ ๊ฒ ์ฒ๋ผ ์จ๋ฒ์ ๋ถ๋ ์ซ์๋ค๋ ๊ฐ์์์๋ก ๋ํ๋ผ ์ ์์ต๋๋ค.
์จ๋ฒ๊ณผ, ์จ๋ฒ ์ปจํ ์ธ ๋ ์ค ์ด๋ ๊ณณ์์ ๊ฐ์์์๋ฅผ ์ถ๊ฐํ๋ ์๊ด์์ง๋ง, ์จ๋ฒ์ ์ถ๊ฐํ์ต๋๋ค.
style.css
.album:before {
content: '1';
font-size: 50px;
padding: 5px;
margin: 0 10px;
width: 1em;
text-align: right;
font-weight: bold;
font-style: italic;
float: left;
}
float ๋ 'float๋ฅผ ์ฃผ๋ฉด ๋ค ๋ฐ๋ผ์ค๋(์ฌ๊ธฐ์๋ ์จ๋ฒ ์ปจํ ์ธ )์ ์์ธ๋ค.' ๋ ๊ฐ๋ ์ ๋๋ค.
์ซ์๊ฐ ์ฆ๊ฐ๋๊ฒ๋ ํ๋ ค๋ฉด ๊ฐ์์์์ค ์ ๋ฐํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๋ถ๋ชจ์ธ chart๊ฐ <ol>, ์์์ธ chat-item ์ด <li> ์ด์ฃ ์ด ๋, chart-item์๊ฒ counter-increment๋ผ๋ ์์ฑ์ด ์์ต๋๋ค. ์์์ ํ ์คํธ๋ก ์ด๋ฆ์ ์ง์ ํด๋๊ณ , ํ์ํ ๊ณณ(์ฌ๊ธฐ์๋ album:before)์ ๊ฐ์ ์ด๋ฆ์ ์ฐ๊ฒ ๋๋ฉด ์ ์ฉ๋ฉ๋๋ค.
style.css
.chart-item {
background-color: white;
margin: 60px;
height: 80px;
position: relative;
counter-increment: rank;
}
โ
.album:before {
content: counter(rank);
font-size: 50px;
padding: 5px;
margin: 0 10px;
width: 1em;
text-align: right;
font-weight: bold;
font-style: italic;
float: left;
}
์ด๋ฐ ๊ฒ๋ค์ด ์ ํํ๊ฒ <ol> ํ๊ทธ ์์์๋ง ๋์๊ฐ๊ฒ ํ๊ธฐ ์ํ์ฌ chart์๋ counter-reset ์ ์ง์ ํด์ฃผ์์ต๋๋ค. counter-reset์ ์ง์ ํจ์ผ๋ก์จ ๋ค๋ฅธ ๊ณณ์์ counter ์์ฑ์ ์ผ์ ๋ 1๋ถํฐ ๋ค์ ์์ํ ์ ์์ต๋๋ค.
style.css
.chart {
background-color: #aaa;
overflow: hidden;
counter-reset: rank;
}
๋ง์ง๋ง! CD ๋์๊ฐ๋ ๋ถ๋ถ
cd ์ด๋ฏธ์ง๋ฅผ ์จ๋ฒ์ฌ์ง ๋ค์ ๋ฃ์ด๋ณด๊ฒ ์ต๋๋ค.
<img class="album-cover" src="images/cover01.png">
<img class="albumm-disc" src="images/disc.png">
<div class="album-contents">
<h2>Truth Hurts</h2>
<p>Risso</p>
</div>
ใ ใ ใ !! cd๊ฐ ๊ต์ฅํ ํฝ๋๋ค. ์ด์ ์ฎ๊ธธ๊ฑด๋ฐ ์ด๊ฑด float๋ก ํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ์ด๋ฏธ์ง์ ์๋๋ ๊ฐ์ ์ ์์ ๊ฒน์น๊ฒ๋ ๋๋๊ฒ ๋ชฉํ์ด๋ฏ๋ก..! ์ด์ฉ ์ ์์ด ๋ฌด์กฐ๊ฑด ์ฑ์๋ฃจํธ๋ก ์ง์ ํด์ผํฉ๋๋ค.
style.css
.album-disc {
position: absolute;
right: 0;
top: 0;
height: 100%;
}
์ด๋ ๊ฒํ๋ฉด cd์ ํฌ๊ธฐ๊ฐ ์์์ง๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด์ ๋์๊ฐ๋ ๋ถ๋ถ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ @keyframe ์ ํ์ฉํ์ฌ ๋น๊ธ๋น๊ธ ๋์๊ฐ๋ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค๊ณ album-disc์ ์ ์ฉ์ํต๋๋ค.
style.css
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
โ
.album-disc {
position: absolute;
right: 0;
top: 0;
height: 100%;
animation: spin .5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
transition: right .5s;
}
style.css
.album-disc {
position: absolute;
right: 0;
top: 0;
height: 100%;
animation: spin .5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
transition-delay: 1s;
transition: right .5s;
}
โ
.album:hover .album-disc {
right: 70px;
}
๊ทธ๋์ ๋ง์ฐ์ค๋ฅผ ์จ๋ฒ์์๋ถํฐ ๋ผ๋ฉด ๋ฐ๋ก cd๊ฐ ๋ค์ด๊ฐ๊ฒ๋transition-delay ๋ฅผ hover๋์ ๋๋ง ์ฃผ์์ต๋๋ค.
.album-disc {
position: absolute;
right: 0;
top: 0;
height: 100%;
animation: spin .5s;
animation-iteration-count: infinite;
animation-timing-function: linear;
transition: right .5s;
}
โ
.album:hover .album-disc {
right: 70px;
transition-delay: 1s;
}
์ด์ ์จ๋ฒ ์ค๋ช ๋ถ๋ถ์ ๋๋ค.
์จ๋ฒ ๋ด์ฉ์ ์ผ๋๊ฒ๊ณผ ๊ฐ์ด readme.md ๋๋ฏธ๋ฐ์ดํฐ์ ์๋ ๋ด์ฉ์ ๋ณต์ฌํ์ฌ ๊ฐ์ ์ด๋ฆ ์๋์ pํ๊ทธ๋ก ๋ฃ์ด์ค๋๋ค.
index.html
<li class="chart-item">
<div class="album">
<img class="album-cover" src="images/cover01.png">
<img class="album-disc" src="images/disc.png">
<div class="album-contents">
<h2>Truth Hurts</h2>
<p>Risso</p>
<p class="album-description">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor.</p>
</div>
</div>
</li>
์จ๋ฒ ๋ด์ฉ์ ๋ง์ฐ์ค๊ฐ hover๋์ ๋๋ง ๋ณด์ฌ์ผ ํฉ๋๋ค. ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
ํ์คํ๊ฒ opacity ๋ฅผ 0์ผ๋ก ํ๋ค๊ฐ ์จ๋ฒ์ hover๊ฐ ๋์ ๋น์์ album-description opacity๋ฅผ 1๋ก ๋ฐ๊พผ๋ค. ์ด ๋ ์์ฐ์ค๋ฝ๊ฒ ํ๊ธฐ์ํด์ transition์ ์ค๋ค.
์ด ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค ์จ๋ดค์ต๋๋ค.
style.css
.album-description {
margin-top: 10px;
opacity: 0;
transition: opacity .5s;
}
โ
.album:hover .album-description {
transition-delay: .5s;
opacity: 1;
}
์ถ๊ฐ๋ก ์จ๋ฒ์ด hover๋์ ๋น์ ์ซ์์ ์๊น์ด ๋ณํ์ผ๋ฉด ์ข๊ฒ ๋ค.
๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ์์ฑํ ์ ์๋ค. ์จ๋ฒ์ด hover ๋์ ๋น์ ๊ฐ์ํด๋์ค(:before)์ ์์์ด ๋ณ๊ฒฝ๋๋ค.
style.css
.album:hover:before {
color: pink;
}
style.css
.album:hover {
background-color: white;
margin: -30px;
box-shadow: 0 0 40px rgba(0,0,0,0.4);
}
'๐ > HTML | CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[CSS] nth-child ์ nth-of-type ์ ์ฐจ์ด์ (0) | 2020.02.09 |
---|
๋๊ธ