๋ฐ์ํ ์คํ์ผ๋ง์์ calc๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด ๊ฐ๋
์ฑ์ด ๋จ์ด์ง๋๋ค.
์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฝ๋์ ์์ ์ค์ด๊ณ ๊ฐ๋
์ฑ์ ๋์ด๊ธฐ ์ํ์ฌ ๋ง๋ค์์ต๋๋ค.
์ ๋ ์ฃผ๋ก React styled-components์์ ์ฌ์ฉํฉ๋๋ค.
์ฌ์ฉํ์๋ฉด ๊นํ๋ธ์ โญ ํ ๋ฒ๋ง ๋๋ฌ์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!!
์ค๋ฅ๊ฐ ์๊ฑฐ๋ ๋ฌธ์ํ ๊ฒ ์์ผ๋ฉด Issues ํน์ ์ด๋ฉ์ผ๋ก ์ฐ๋ฝ ๋ถํ๋๋ฆฝ๋๋ค.
// ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ์
@media (max-width: 1024px) {
width: calc(100vw * (300/428));
margin: calc(100vw * (10/428)) calc(100vw * (15/428)) calc(100vw * (20/428)) calc(100vw * (30/428));
font-size: calc(100vw * (15, 428));
display:flex;
}
// ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ ํ
import { FontSize, Margin, Media, Px, Width } from '@hellojh/easy-media-calc';
const mediaPxMb = 1024;
const mbSize = 428;
.
.
.
${Media(mediaPxMb,[
Width(400, mbSize),
Margin(10, 15, 20, 30, mbSize),
FontSize(15, mbSize),
"display:flex",
])}
๋จ์ด๋ ";"๊ฐ ์๋ ","๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
์ ์ฝ๋์ ๊ฐ์ด ์ผ๋ฐ css๋ ๋ฌธ์์ด์ฒ๋ผ ๋ฃ์ด์ผ ํฉ๋๋ค.
์ต์๋จ์ ๋ถ๊ธฐ ์ฌ์ด์ฆ๋ฅผ ๋ณ์๋ก ์ง์ ํด๋๋ฉด ๋์ค์ ์์ ์ ํ ๋ ์ฉ์ดํฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ | ์ถ๋ ฅ ์ฝ๋ |
---|---|
Media(1024,[]) | @media(max-width: 1024px){} |
Px(100, 428) | calc(100vw * (100/428)) |
Width(100, 428) | width:calc(100vw * (100/428)); |
Height(100, 428) | height:calc(100vw * (100/428)); |
Top(100, 428) | top:calc(100vw * (100/428)); |
Bottom(100, 428) | bottom:calc(100vw * (100/428)); |
Left(100, 428) | left:calc(100vw * (100/428)); |
Right(100, 428) | right:calc(100vw * (100/428)); |
FontSize(100, 428) | font-size:calc(100vw * (100/428)); |
MT(100, 428) | margin-top:calc(100vw * (100/428)); |
MB(100, 428) | margin-bottom:calc(100vw * (100/428)); |
ML(100, 428) | margin-left:calc(100vw * (100/428)); |
MR(100, 428) | margin-right:calc(100vw * (100/428)); |
PT(100, 428) | padding-top:calc(100vw * (100/428)); |
PB(100, 428) | padding-bottom:calc(100vw * (100/428)); |
PL(100, 428) | padding-left:calc(100vw * (100/428)); |
PR(100, 428) | padding-right:calc(100vw * (100/428)); |
LineH(100, 428) | line-height:calc(100vw * (100/428)); |
BgColor(100, 428) | background-size:calc(100vw*(100/428)); |
BgColor(100, 50, 428) | background-size:calc(100vw*(100/428)) calc(100vw*(50/428)); |
๋ง์ง๊ณผ ํจ๋ฉ ๊ฐ์ ๊ฒฝ์ฐ ์ถ์ฝํ์ ๋ง์ด ์ฌ์ฉํฉ๋๋ค.
ํ์ฅ์ฑ์ ์ข๊ฒ ํ๊ธฐ ์ํ์ฌ ํ๋์ ํจ์์์์ ๋ถ๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํ์์ต๋๋ค.
์ฝ๋๋ ์๋๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค.
margin์์ auto๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฌธ์์ด๋ก auto๋ฅผ ๋ฃ์ผ์๋ฉด ๋ฉ๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ | ์ถ๋ ฅ ์ฝ๋ |
---|---|
Margin(100, 50, 100, 50, 428) | margin:calc(100vw * (100/428)) calc(100vw * (50/428)) calc(100vw * (100/428)) calc(100vw * (50/428)) |
Margin(100, 50, 100, 428) | margin:calc(100vw * (100/428)) calc(100vw * (50/428)) calc(100vw * (100/428)) |
Margin(100, "auto", 100, 428) | margin:calc(100vw * (100/428)) "auto" calc(100vw * (100/428)) |
Margin(100, 50, 428) | margin:calc(100vw * (100/428)) calc(100vw * (50/428)) |
Margin(100, "auto", 428) | margin:calc(100vw * (100/428)) "auto" |
Padding(100, 50, 100, 50, 428) | padding:calc(100vw * (100/428)) calc(100vw * (50/428)) calc(100vw * (100/428)) calc(100vw * (50/428)) |
Padding(100, 50, 100, 428) | padding:calc(100vw * (100/428)) calc(100vw * (50/428)) calc(100vw * (100/428)) |
Padding(100, 50, 428) | padding:calc(100vw * (100/428)) calc(100vw * (50/428)) |
๋ง์ฝ ๋ฐ์ํ ๋ถ๊ธฐ๊ฐ 2๋ฒ์๊ณ ์กฐ๊ฑด์ ๋ฐ๋ผ ์คํ์ผ๋ง์ด ๋ฌ๋ผ์ง๋ค๋ฉด ์๋ ์ฝ๋์ ๊ฐ์ด ํ์๋ฉด ๋ฉ๋๋ค.
import { Media, Width } from '@hellojh/easy-media-calc';
const mediaPxTb = 1000;
const tbSize = 1000;
const mediaPxMb = 500;
const mbSize = 500;
function App() {
return (
<Test bool={true}>
qwe
</Test>
);
}
export default App;
const Test = styled.div`
width: 100vw;
background-color:slategray;
${({bool}) =>
Media(mediaPxTb,[
"background-color:slateblue",
Width(bool?1000:500, tbSize),
])
+
Media(mediaPxMb,[
"background-color:salmon",
Width(bool?500:250, mbSize),
])
}
`