February 08, 2021
ํ์ฌ ํผ์คํธ ํ๋ก์ ํธ์ 2์ฃผ์ฐจ๊ฐ ๋๋ ์์์ผ ์ ๋ ์ด์ง๋ง, ๋ฐค์ ์ ์์ ์ด๋ฏ๋ก ์ผ๋จ ์ฐ์ํ๊ฒ ์ค๋๋ง์ ๋ธ๋ก๊ทธ ๊ธ์ ์จ๋ณธ๋ค.
(๋ฆฌ์กํธ ์ปดํฌ๋ํธ ์์ ๋ฐ ํ์ด์ง ์คํฌ๋กค๋ง ์๋๋ ๊ฒ์ ์ด์ฉโฆ?!๐๐ปโโ๏ธ)
๋ฐฐ์ ๋ค ๋ผ๋ ์๋ฏธ๊ฐ ํ๋์ ๊ธฐ์ ์ ํต๋ฌํ๋ค ๋ผ๋ ์๋ฏธ๊ฐ ์๋๋ผ๋ ๊ฐ์ ํ์์ ๋์ ์๊ฐ๊ณผ ๋๋์ ์ ๋ฆฌํด ๋ณด๊ธฐ๋ก ํ๋ค.
์ผ๋จ ๋๋ ํ๋ก ํธ ์๋ ํํธ๋ฅผ ์ง๋งํด์ ๋ค๋ฅธ ํ๋ก ํธ ํ์ด๋๊ณผ ๋์ด์ ํ์ฌ ํ๋ก์ ํธ๋ฅผ ์งํํด๊ฐ๊ณ ์๋ค.
์ด ํ์ด๋๊ณผ ๊ฐ์ด ์ํ๋ค๋ฉด ์์ ๋ชฐ๋์ ๋ฒํ ๊ฒ๋ค์ ๋ํ ์๊ฐ๋ฅผ ํด๋ณผ๊ฑด๋ฐ ๊ทธ์ค ๋ํ๊ฐ ๋ฐ๋ก โFigmaโ ์ด๋ค.
Pre ์ฝ์ค ๋ ๋ฐฐ์ด ํธ์ํ๋ฌ์ธ๋ฐ ์ด ๋ html ๋งํฌ์ ์ ์งํํ๊ธฐ ์ , ๊ทธ๋ฆผํ ๋ฑ์ผ๋ก ๋ฐ์ค๋ฅผ ๊ทธ๋ ค๊ฐ๋ฉฐ ์ฌ๊ธฐ๋ li ํ๊ทธ๊ฐ ์์นํ ๊ณณ, ์ฌ๊ธฐ๋ ์ ๋ชฉ ์ด ์์นํ ๋ฐ์ค ๋ฑ์ ์ ์ํด ๊ฐ๋ ์์ ์ด ์์ด์ด ํ๋ ์ด๋ฐ (Wired Framing) ์ด๋ผ๋ ๊ฒ์ ๋ฐฐ์ ๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์๋ ๋ฌผ๋ก ์ฝ๋์คํ ์ด์ธ ์ ์ดํด๋์ค์ Figma ๋ฅผ ์ฌ์ฉํ๋ผ๋ ๋ด์ฉ์ ์์์ง๋ง ๋ง์ ๋ค๋ฃจ๋ ค๋ ๋ญ๊ฐ ๋ญ์ง ํ๋๋ ๋ชฐ๋์๋ค.
๊ทธ๋ฐ๋ฐ ๊ฐ์ด ํ๋ ํ์ด๋์ด ๋์์ธ ๊ด๋ จ ๊ณต๋ถ๋ฅผ ํ์ ์์ธ์ง ๋ฅ์ํ๊ฒ ๋ค๋ฃจ๋ ๊ฒ์ ๋ณด๊ณ ๋ฐฐ์ฐ๊ฒ ๋์๋ค.
๋๋ ๋ชจ๋ฐ์ผ UI ๋ฅผ ํผ๊ทธ๋ง๋ก ๋ด๋นํ๋๋ฐ ํ์ด๋๊ป ํ๋ฒ ์ผ๋ ์ผ๋ก ๋ฐฐ์ฐ๊ณ ๋์ ์๋์ ๊ฐ์ ๋์์ธ์ ๋ง๋ค์ด ๋ผ ์ ์์๋ค.
์๋๋ ํ์๊ฐ์ Mobile UI ์ด๋ค.
์๋๋ ๋ก๊ทธ์ธ Mobile UI ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์๋๋ ์ต์ข ์ฑํ์ ๋์ง ์์์ง๋ง, ๋๋ฆ ๋์ค์ฝ๋๋ฅผ ๋ฐ๋ผํด๋ณธ๋ค๊ณ ๋ชจ๋ฐ์ผ ์ฑ์ ๋ค์ด๋ฐ์ ์ค์ค๋ก ๊ทธ๋ ค๋ณธ ์์ด์ด ํ๋ ์ด๋ฐ ์ด๋ค.
์ฒ์์๋ ๊ทธ๋ฅ ์ ๋นํ ์ง๊ณ ์ปดํฌ๋ํธ๋ก ๊ฐ์ ๋ง๋ค๋ฉด ๋์ง ์์๊น ์ถ์๋ค.
์ง๋์น ๊ณต์ ๋ค์ผ ๊ฒ ๊น์ง๋ ์๋๋๋ผ๋,
๋๋ต์ ์ธ ์์๋๋ฅผ ํผ๊ทธ๋ง๋ก ์ ๊ณํํ๋ฉด ๋์ค์ html ๋งํฌ์ ์์ ์ ํ๊ฑฐ๋ css ์์ ์ ํ ๋ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๊ฐํก์งํก ํ์ง ์๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋งํฌ์ API (?) ๊ต๋ณธ ๊ฐ์ ์ญํ ์ ํ๋ค๊ณ ์๊ฐํ๋ค.
์ด ๋ํ ์ฒ์์ ๊ทธ๋ฅ ๋ฐ๋ก ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ ๋ง๋ฐ๋ก ๊ฐ์ ธ๋ค ์ฐ๋ฉด ๋ ๋น ๋ฅด์ง ์์๊ฐ ์ถ์๋๋ฐ
ํ์ด๋์ ํตํด์ ์์๋ฅผ ์ข ์๊ฒ ๋์๋ค.
๋ฌผ๋ก ๋ฐฉ์์ด ์ด๊ฒ ๋ง๋ค ์๋๋ค ์ ๋์ ์ธ ๊ฒ์ ์๋์ง๋ง ํ์ด๋์ ๋ฐฉ์๋ ๋๋ฆ ๊ตฌ์กฐ๋ฅผ ์ง๊ณ ๋ค์ ๋๋์๊ฐ๋ ์๊ณ ๋ฅผ ๋๊ธฐ ์ํด์๋
ํจ์จ์ ์ธ ๋ฐฉ์์ด๋ผ ์๊ฐํ๋ค.
๊ณผ์ ์ ํ๋ฉด์ ๋๋ ์ค์ค๋ก HTML, CSS ๋ฅผ ์ด๋ ์ ๋ ๋ค๋ฃฌ๋ค๊ณ ์๊ฐํด ์๋ค.
๊ทผ๋ฐ ๊ทธ๊ฒ ์ง๋ ์ผ์ฃผ์ผ ๋์ ์ฐ์ฐ ์กฐ๊ฐ์ด ๋๊ธฐ๋ ํ๋ค.
์ข์ ํด ์๊ธฐ ๋ณด๋ค ์ด๋ป๊ฒ ๊ณต๋ถ๋ฅผ ํด๋๊ฐ ์ง ์๊ฐํด ๋ณด์๋ค.
์ฑํ ์ ํ๋ ๋ชจ๋ฐ์ผ ํ๋ฉด์ ์๋์ ๊ฐ์ CSS ์ฝ๋๋ก ๊ตฌ์ฑํ๋ค.
// ์ฑํ
๋ด์ญ๋ค CSS
.list-chat {
padding: 20px 40px;
.item-chat {
display: flex;
align-items: center;
padding-bottom: 15px;
.chat-avatar {
width: 55px;
height: 55px;
}
}
.info-chat {
// border: 2px solid red;
margin-left: 20px;
font-size: 22px;
flex: 1;
.date-chat {
font-size: 18px;
}
}
.text-like {
// border: 2px solid blue;
display: flex;
align-items: center;
p {
margin: 0;
}
.like-chat {
// border: 2px solid green;
display: flex;
position: sticky;
left: 90%;
}
}
}
// ์๋ ์ฑํ
์ธํ์ฐฝ
.input-chat {
background: $dark-level3;
padding: 0.5rem;
position: fixed;
bottom: 0;
left: 0;
right: 0;
display: flex;
height: 60px;
button {
background: none;
border: none;
padding: 0 0.5rem;
margin: 0.25rem;
outline: none;
}
}
#inputChat {
// border: 1px solid red;
background: $bg-input;
color: black;
padding: 0 1rem;
flex-grow: 1;
// border-radius: 2rem;
margin: 0.25rem;
&:focus,
&:hover {
background: $font-color;
}
}
์์ฝํ๋ฉด flex ์ margin, padding ์ ์ ์ ํ ํ์ฉํ ๊ฒ ๋ค์๋ค.
์์ ๊ฐ์ ํ๋ฉด์ด ๋์ค๊ธฐ๋ ํ๋๋ฐ, ํ์ด๋๊ณผ ๊ณต์ ํ๋ฉด์ ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ์๊ฒ ๋์๋ค.
๊ทธ๊ฒ์ flex ์ ์ฌ์ฉ์ด ์๋ grid ์ ์ฌ์ฉ์ ๋ํ ๊ฒ์ด์๋ค.
.real-chatting {
display: flex;
flex-direction: column;
flex-grow: 1;
justify-content: flex-end;
}
.item-chat {
display: grid;
grid-template:
'avatar writer likes' 30px
'avatar text likes' 1fr
/80px 1fr 80px;
padding: 12px 20px;
&:hover {
background: $dark-level2;
}
}
.avatar-grid {
grid-area: avatar;
display: flex;
justify-content: center;
}
.writer {
grid-area: writer;
}
.text-chat {
grid-area: text;
white-space: normal;
word-break: normal;
}
.likes {
grid-area: likes;
display: flex;
flex-flow: column;
align-items: center;
}
grid ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ ๊ฒ ๋ง์ผ๋ก๋ ์์ ์ ๊ทธ ํ๊ณผ ์ด์ฒ๋ผ ์๋์ผ๋ก ๋ชจ์์ด ๋ง์ถฐ์ง๊ฒ ๋์๊ณ ,
grid-template ์ ๋ฃ์ ๋ณ์ ์ด๋ฆ์ผ๋ก grid-area ๋ฅผ ์ง์ ํด ์ฃผ๋ฉด ํด๋น ์์น์ ๋ฐฐ์น๊ฐ ๋๋๊ฒ ๋๋ฌด๋ ์ ๊ธฐํ๋ค.
์ด๊ฒ ๋ฟ๋ง์ด ์๋๋ผ
SCSS ๋ฅผ ์ฐ๊ฒ ๋๋ฉด์ css ๋ฅผ ์ฌ์ฉํจ์ ์์ด ์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ปฌ๋ฌ๋ ๊ธฐํ css ์ ์ธ ์์๋ฅผ ๋ณ์๋ก ๋์ด ํ์ํ ๋๋ง๋ค ๊บผ๋ด์ ์ฌ์ฉํ๋ค ๋ ๊ฒ์ ๋ํ ๊ฐ๋ ๋ ์๊ฒ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ ,
.wrap-main {
section[class$='-side']:not(.side-active) {
display: none;
}
}
์์ ์ฝ๋์ฒ๋ผ class ๋ช ์ด side ๋ก ๋๋๋ section ํ๊ทธ ๋ด์ ๋ชจ๋ ํด๋์ค๋ฅผ ์ ํํ๊ฒ ํ๊ณ ,
๊ทธ ์ค์์ class ๊ฐ side-active ๊ฐ ์๋ ๊ฒ๋ค์ ์ ํํ๊ฒ ํ๋ ๋ฐฉ์์ ๋ํด์๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๊ฐ ์๋ css ๋ง์ผ๋ก๋ ์ ํํ ์ ์๋ค๋ ๊ฒ์ ๋ํด ์๊ฒ ๋์๋ค.
๊ทธ๋ฆฌ๊ณ CSS ๋ ์ฒ์์ ์ด๊ธฐ ์ธํ ์ด ํ์ํ๋ค๋ผ๋ ๊ฒ์ ์๊ฒ ๋์๋ค.
@import 'color';
h1,
h2,
h3,
h4,
h5,
h6,
a,
p,
pre {
margin: 0;
padding: 0;
font-size: 1rem;
}
body,
html {
margin: 0;
padding: 0;
}
body * {
box-sizing: border-box;
font-weight: normal;
color: inherit;
}
input,
button {
border: none;
}
a {
text-decoration: none;
&:visited {
color: inherit;
}
}
button {
cursor: pointer;
}
ul {
list-style: none;
margin: 0;
padding: 0;
}
๊นํ๋ธ ํ๋ก์ ํธ์์ ์นธ๋ฐ ๋ณด๋๋ฅผ ๋ง๋ค์ด ํธ๋ ๋ก ์ฒ๋ผ ์์ ์ ๋๋์ด ์ผ์ ์ ํ ๋์ ๊ด๋ฆฌํ๋ ๋ฒ์ ์ง์ ๋ง๋ค์ด ๋ด์ ์ด๋์ ๋ ์ต์ํด ์ก๋ค.
ํธ๋ ๋ก๋ ๋ ธ์ ์ ์ฌ์ฉํด์ ๊ด๋ฆฌ ํ ์ค ์์๋๋ฐ ๋ผ๋ฒจ๋ ๋ณ๋๋ก ๋ง๋ค์ด ๋ถ์ผ ์ ์๊ณ ๊นํ๋ธ์ ์นธ๋ฐ๋ณด๋๋ ์๊ฐ๋ณด๋ค ๊ด์ฐฎ์๋ค.
๋ญฃ๋ ๋ชจ๋ฅด๊ณ ๊ทธ๋ฅ ๋ด๊ฐ ํ๊ฒ ๋ค ํ๋๋ฐ ํ๋ก์ ํธ๋ฅผ ํ ๋์ ๋ณผ ์ ์๊ฒ๋ ํ๋ก์ฐ ์ฐจํธ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ๋ ๊ฐ๋ฐํ๋ ์ฌ๋์ ์ํด์ ํ์ํ ์์ ๋ผ๋ ๊ฒ์ ๋๊ผ๋ค.
์ด๋ป๊ฒ ๋์ฌ์ง ๋๋ ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ๋จ ํด๋ณธ ๋๋ก ํ๋ค ๋ณด๋ฉด ๋ญ๋ผ๋ ์ฐ๋ฆฌ์ง ์๊ฒ ๋ ์ถ๋ค.