
์ง๊ธ๊น์ง ๊ฐ๋จํ๊ฒ ์ดํด๋ณธ HTML๊ณผ CSS ๊ธฐ์ด๋ฅผ ํ์ฉํด์
๊ฐ๋จํ ์ฑํ ์ฐฝ UI๋ฅผ ๊ตฌํํด๋ณด์๋๋ฐ,
์ด๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด๋ณด๊ณ ์ ํ๋ค.
๐งฑ ์ ๋ฐ์ ์ธ HTML ๊ตฌ์กฐ
<!DOCTYPE html>
<html>
<head>
<title>์ฑํ
์ฐฝ ๋ง๋ค๊ธฐ ์ฐ์ต</title>
<style> ... </style>
</head>
<body>
<div class="chat">
<div class="message friend">
...
</div>
<div class="message me">
...
</div>
<div class="message friend">
...
</div>
<div class="message me">
...
</div>
</div>
</body>
</html>
1๏ธโฃ <!DOCTYPE html>
๋จผ์ ์ด ๋ฌธ์๋ HTML5 ๋ฌธ์์์ ์ ์ธํด์ค๋ค.
2๏ธโฃ <html> ... </html>
HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๊ฐ์ธ์ค๋ค.
3๏ธโฃ <head> ... </head>
๋ฌธ์ ์ ๋ณด๋ฅผ ์ค์ ํด์ฃผ๊ธฐ ์ํ ๊ฒ์ผ๋ก,
title ํ๊ทธ ์์๋ ํญ ์ ๋ชฉ์ ๋ํ๋๋ ๋ฌธ๊ตฌ๋ฅผ ์ค์ ํด์ฃผ๊ณ ,
style ํ๊ทธ ์์๋ ์ง์ CSS ์คํ์ผ๋ค์ ์์ฑํด์ค๋ค.
4๏ธโฃ <body> ... </body>
์ฐ๋ฆฌ๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ค์ ๋ก ๋ณด๊ฒ ๋๋ ์น ํ์ด์ง ๋ด์ฉ์ ๋ํ ๊ฒ์ผ๋ก,
chat ํด๋์ค๋ฅผ ํตํด ์ ์ฒด ์ฑํ UI๋ฅผ ๊ฐ์ธ์ฃผ๊ณ ,
๋ด๋ถ๋ ๊ฐ๊ฐ์ ๋ฉ์์ง๋ฅผ ๊ตฌ์ฑํ๋ message ํด๋์ค๋ค๋ก ๊ตฌ์ฑ๋๋ค.
๐ฉ chat ํด๋์ค ๋ด๋ถ ๊ตฌ์กฐ
<div class="chat">
<div class="message friend">
<div class="message-info">์์ฐ</div>
<p class="message-body">์ค๋ ๋ฐ๋น ?</p>
<time class="message-time">์ค์ 11:18</time>
</div>
<div class="message me">
<p class="message-body">์๋ ์?</p>
<time class="message-time">์ค์ 11:23</time>
</div>
<div class="message friend">
<div class="message-info">์์ฐ</div>
<p class="message-body">๊ทธ๋ฅ ์ฌ์ฌํด์..</p>
<time class="message-time">์ค์ 11:24</time>
</div>
<div class="message me">
<p class="message-body">๊ทธ๋ผ ๊ฐ์ด ์ ์ฌ ๋จน์ !!</p>
<time class="message-time">์ค์ 11:27</time>
</div>
</div>
๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ์ฌ๋์ด ๋์ธ์ง ์๋๋ฐฉ์ธ์ง,
์ง๊ธ ํ์ํ๋ ์ ๋ณด๊ฐ ์๋๋ฐฉ์ ์ด๋ฆ์ ๋ํ ๊ฒ์ธ์ง,
๋ณธ๋ฌธ ํ ์คํธ ๋ด์ฉ์ธ์ง, ๋ณด๋ธ ์๊ฐ์ธ์ง ๊ตฌ๋ถํ๊ธฐ ์ํด
๊ตฌ์ฒด์ ์ธ ํด๋์ค ์ด๋ฆ๋ค์ ๋ถ์ฌ์ค๋ค.
1๏ธโฃ me | friend
๋ณด๋ธ ์ฌ๋์ด ๋์ธ์ง ์๋๋ฐฉ์ธ์ง ๊ตฌ๋ถํ๊ธฐ ์ํ ํด๋์ค
2๏ธโฃ message-info
๋ฉ์์ง๋ฅผ ๋ณด๋ธ ์๋๋ฐฉ์ ์ ๋ณด์์ ๊ตฌ๋ถํ๊ธฐ ์ํ ํด๋์ค
3๏ธโฃ message-body
๋ฉ์์ง์ ํ ์คํธ ๋ด์ฉ์์ ๊ตฌ๋ถํ๊ธฐ ์ํ ํด๋์ค
4๏ธโฃ message-time
๋ฉ์์ง๋ฅผ ๋ณด๋ธ ์๊ฐ์์ ๊ตฌ๋ถํ๊ธฐ ์ํ ํด๋์ค
๐จ style ํ๊ทธ ์ CSS ์์ฑ
๐งพ ์ ์ฒด ํ์ด์ง ์คํ์ผ ์ค์
body {
font-family: 'Arial', sans-serif;
margin: 0;
padding: 0;
background-color: aliceblue;
}
1๏ธโฃ font-family๋ฅผ ํตํด ๊ธ๊ผด ์ค์
Arial ํฐํธ๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ ์ฉํ๊ณ ,
๋ง์ฝ ์ด ํฐํธ๊ฐ ์๋ค๋ฉด sans-serif ํฐํธ๋ก ์ค์ ํ๋ค.
(๊ฐ์ฅ ์ฐ์ ์ ์ผ๋ก ์ ์ฉ๋๊ธธ ์ํ๋ ํฐํธ๋ฅผ ๊ฐ์ฅ ์ผ์ชฝ์ ํ๊ธฐํ๋ค.)
2๏ธโฃ margin์ ํตํด ์ธ๋ถ ์ฌ๋ฐฑ ์ค์
0์ผ๋ก ์ฃผ์ด ์ธ๋ถ ์ฌ๋ฐฑ์ ์์ ์ค๋ค.
3๏ธโฃ padding์ ํตํด ๋ด๋ถ ์ฌ๋ฐฑ ์ค์
0์ผ๋ก ์ฃผ์ด ๋ด๋ถ ์ฌ๋ฐฑ์ ์์ ์ค๋ค.
4๏ธโฃ background-color ์ค์
๋ฐฐ๊ฒฝ ์์์ ์ํ๋ ์์์ผ๋ก ์ค์ ํด์ค๋ค.
๐ฆ ์ฑํ ๋ฐ์ค ์คํ์ผ ์ค์
.chat {
width: 100%;
max-width: 300px;
margin: auto;
padding: 20px;
background-color: #fdefff;
}
1๏ธโฃ width ์ค์
100%๋ก ์ค์ ํด์ ๋ฐ์ํ์ผ๋ก ๋๋น๋ฅผ ๊ฝ ์ฑ์ฐ๋๋ก ํ๋ค.
2๏ธโฃ max-width ์ค์
์ต๋ ๋๋น๋ฅผ 300px๋ก ์ ํํ๋ค.
3๏ธโฃ margin์ผ๋ก ์ ๋ ฌ
auto๋ก ํ์ฌ ๊ฐ์ด๋ฐ ์ ๋ ฌ ๋๋๋ก ํ๋ค.
4๏ธโฃ padding ์ค์
์์ชฝ ์ฌ๋ฐฑ์ 20px๋ก ์ค์ ํ๋ค.
5๏ธโฃ background-color ์ค์
์ฑํ ์ฐฝ์ ๋ฐฐ๊ฒฝ ์์์ ์ํ๋ ์์ผ๋ก ์ค์ ํ๋ค.
๐งฑ ๋ฉ์์ง ๋ฐ์ค ๊ณตํต ์ค์
.message {
display: flex;
flex-direction: column;
margin-bottom: 10px;
}
1๏ธโฃ display + flex-direction ์ค์
display๋ฅผ flex๋ก ํ๊ณ ,
flex-direction์ column์ผ๋ก ์ค์ ํด์
์ธ๋ก๋ก ์๋ ๊ตฌ์กฐ๋ก ๋ง๋ค์ด์ค๋ค.
2๏ธโฃ margin-bottom ์ค์
10px๋ก ์ค์ ํ์ฌ ๋ฉ์์ง ํ์ ์ฌ์ด์ฌ์ด์ ๊ฐ๊ฒฉ์ ์ค๋ค.
๐ ๋ฉ์์ง ์ด๋ฆ ๋ฐ ์๊ฐ ๊ด๋ จ ์ค์
.message-info {
font-size: 0.85em;
color: rgb(104, 104, 104);
}
.message-time {
font-size: 0.75em;
color: rgb(104, 104, 104);
}
1๏ธโฃ font-size ์ค์
์ด๋ฆ๊ณผ ์๊ฐ์ ํ์ํ ํฐํธ ์ฌ์ด์ฆ๋ฅผ ์ค์ ํด์ค๋ค.
2๏ธโฃ color ์ค์
๊ธ์ ํฌ๊ธฐ๋ฅผ ์ํ๋ ์์์ผ๋ก ์ค์ ํด์ค๋ค.
๐ฌ ๋ฉ์์ง ๋ณธ๋ฌธ ์คํ์ผ
.message-body {
max-width: 80%;
padding: 10px;
border-radius: 10px;
margin: 5px 0;
}
1๏ธโฃ max-width ์ค์
80%๋ก ์ค์ ํ์ฌ ํ ์คํธ ์ฐฝ์ด ๋๋ฌด ํฌ์ง ์๋๋ก ์ค์ ํ๋ค.
2๏ธโฃ padding ์ค์
์ฑํ ๋งํ์ ๋ด๋ถ ์ฌ๋ฐฑ์ ์ค์ ํ๋ค.
(๊ธ์๊ฐ ๋งํ์ ์ ๊ฝ ์ฐจ๋ฉด ์ด์ํ๋๊น)
3๏ธโฃ border-radius ์ค์
10px๋ก ์ค์ ํ์ฌ ๋งํ์ ์ ๋ฅ๊ทผ๋ค๋ชจ๋ก ๋ง๋ค์ด์ค๋ค.
4๏ธโฃ margin ์ค์
์์๋ ์ฌ๋ฐฑ์ ์ค์ ํด์ค๋ค.
์๋๋ margin: (์) (์ค๋ฅธ์ชฝ) (์๋) (์ผ์ชฝ) ์์๋ก ์ฌ๋ฐฑ์ ์ง์ ํ๋๋ฐ,
์ง๊ธ์ฒ๋ผ ์์ 2๊ฐ๋ง ์ค์ ํ๋ฉด ์ฐ๋ฆฌ๋ ์, ์ค๋ฅธ์ชฝ ์ฌ๋ฐฑ์ ์ง์ ์ ์ผ๋ก ์ง์ ํด์ค ๊ฒ์ด๊ณ ,
์๋๋ ์์ ๋์ผํ๊ฒ, ์ผ์ชฝ์ ์ค๋ฅธ์ชฝ๊ณผ ๋์ผํ๊ฒ ์๋์ผ๋ก ์ค์ ๋๋ค.
-> ์ฆ, ์ฐ๋ฆฌ๋ margin: 5px 0 5px 0;์ผ๋ก ์ค์ ํ ๊ฒ์ผ๋ก ๋ณผ ์ ์๋ค.
๐ฑ๏ธ ๋งํ์ ํธ๋ฒ ํจ๊ณผ ์ค์ (๋ง์ฐ์ค๋ฅผ ์ฌ๋ ธ์ ๋)
.message-body:hover {
transition: box-shadow 0.8s;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.8);
}
1๏ธโฃ transition ์ค์
box-shadow ์์ฑ์ด ๋ณ๊ฒฝ๋ ๋ 0.8์ด ๋์ ์ ํ ํจ๊ณผ๋ฅผ ์ฃผ๋๋ก ์ค์ ํ๋ค.
2๏ธโฃ box-shadow ์ค์
์์์ 15px์ ์ด๋์ด ๊ทธ๋ฆผ์ ํจ๊ณผ๋ฅผ ์ค์ ํ๋ค.
์ด ๋, 0 0์ (x, y) ์์น๋ ์๋ค๋ ์๋ฏธ์ด๋ค.
(์ ์๋ ์์ ๋ชจ๋ ๊ทธ๋ฆผ์ ์์ฑ)
๐ ๋ณด๋ธ ์ฌ๋์ ๋ฐ๋ฅธ ์์น ์ค์
.me .message-time {
align-self: flex-end;
}
.friend .message-time {
align-self: flex-start;
}
1๏ธโฃ .me
๋ด๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ ๋งํ์ ์ ์ค๋ฅธ์ชฝ (๋)์ ๋ฐฐ์นํ๋ค.
2๏ธโฃ .friend
์๋๋ฐฉ์ด ๋ณด๋ธ ๋ฉ์์ง๋ ๋งํ์ ์ ์ผ์ชฝ (์ฒ์)์ ๋ฐฐ์นํ๋ค.
๐จ ๋ณด๋ธ ์ฌ๋์ ๋ฐ๋ฅธ ๋งํ์ ์๊ณผ ์ ๋ ฌ ๊ตฌ๋ถ
.friend .message-body {
background-color: #fff;
align-self: flex-start;
}
.me .message-body {
background-color: rgb(255, 221, 244);
align-self: flex-end;
}
1๏ธโฃ .friend
์น๊ตฌ๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ ํฐ์ ๋งํ์ + ์ผ์ชฝ ์ ๋ ฌ ๋๋๋ก ์ค์ ํ๋ค.
2๏ธโฃ .me
๋ด๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ ๋ถํ์ ๋งํ์ + ์ค๋ฅธ์ชฝ ์ ๋ ฌ ๋๋๋ก ์ค์ ํ๋ค.
โ ์ต์ข ์ฝ๋
<!DOCTYPE html>
<html>
<head>
<title>์ฑํ
์ฐฝ ๋ง๋ค๊ธฐ ์ฐ์ต</title>
<style>
body {
font-family: 'Arial', sans-serif;
margin: 0;
padding: 0;
background-color: aliceblue;
}
.chat {
width: 100%;
max-width: 300px;
margin: auto;
padding: 20px;
background-color: #fdefff;
}
.message {
display: flex;
flex-direction: column;
margin-bottom: 10px;
}
.message-info {
font-size: 0.85em;
color: rgb(104, 104, 104);
}
.message-body {
max-width: 80%;
padding: 10px;
border-radius: 10px;
margin: 5px 0;
}
.message-body:hover {
transition: box-shadow 0.8s;
box-shadow: 0 0 15px rgba(0, 0, 0, 0.8);
}
.message-time {
font-size: 0.75em;
color: rgb(104, 104, 104);
}
.me .message-time {
align-self: flex-end;
}
.friend .message-time {
align-self: flex-start;
}
.friend .message-body {
background-color: #fff;
align-self: flex-start;
}
.me .message-body {
background-color: rgb(255, 221, 244);
align-self: flex-end;
}
</style>
</head>
<body>
<div class="chat">
<div class="message friend">
<div class="message-info">์์ฐ</div>
<p class="message-body">์ค๋ ๋ฐ๋น ?</p>
<time class="message-time">์ค์ 11:18</time>
</div>
<div class="message me">
<p class="message-body">์๋ ์?</p>
<time class="message-time">์ค์ 11:23</time>
</div>
<div class="message friend">
<div class="message-info">์์ฐ</div>
<p class="message-body">๊ทธ๋ฅ ์ฌ์ฌํด์..</p>
<time class="message-time">์ค์ 11:24</time>
</div>
<div class="message me">
<p class="message-body">๊ทธ๋ผ ๊ฐ์ด ์ ์ฌ ๋จน์ !!</p>
<time class="message-time">์ค์ 11:27</time>
</div>
</div>
</body>
</html>
โ ๊ฒฐ๊ณผ


'๐ป ์น > ๐ ์น ๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์น ๊ธฐ์ด] ๋๋ฉ์ธ ์ด๋ฆ์ด๋ (0) | 2025.05.21 |
|---|---|
| [์น ๊ธฐ์ด] ์ธํฐ๋ท์ ์ด๋ป๊ฒ ์๋ํ๋๊ฐ (0) | 2025.05.20 |
| [์น ๊ธฐ์ด] CSS์ ์์ฑ (0) | 2025.05.11 |
| [์น ๊ธฐ์ด] CSS๋ (0) | 2025.05.10 |
| [์น ๊ธฐ์ด] HTML์ด๋ (2) | 2025.05.07 |