브라우저마다 다른 css가 적용되어 있는 경우도 있고, 혹시 모를 경우를 방지하기 위해서 기본 브라우저의 css를 없애줄 필요가 있다. 이 작업을 실행하지 않는다면, 각 브라우저마다 내가 작업한 웹 페이지의 css가 조금씩 차이가 날 수 있다!
https://meyerweb.com/eric/tools/css/reset/
방법은 결국 모든 태그들에 대해서 기본css를 지정하는 것 이다. 해당 코드들은 위의 링크를 통해서 확인할 수 있다.
사이트마다 초기세팅이 어떻게 되었는지 정확히 알 수 없기 떄문에, 모든 태그에 대해서 등록하는것!
이를 쉽게 하기 위해서 styled-reset 라이브러리를 사용하는 방법도 있지만, 저는 제 프로젝트에서 styled-components 라이브러리를 사용하기 때문에 해당 라이브러리의 createGloablStyle을 활용하였다.
위의 링내용을 GLobalStyle에 등록한다
import { createGlobalStyle } from 'styled-components';
/// rest css 용
const GlobalStyle = createGlobalStyle`
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, menu, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
main, menu, nav, output, ruby, section, summary,
time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font: inherit;
vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, main, menu, nav, section {
display: block;
}
/* HTML5 hidden-attribute fix for newer browsers */
*[hidden] {
display: none;
}
body {
line-height: 1;
}
menu, ol, ul {
list-style: none;
}
blockquote, q {
quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
content: '';
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
//style custom
* {
box-sizing: border-box;
}
body {
font-family: 'Source Sans Pro', sans-serif;
background-color: ${(props) => props.theme.bgColor};
color: ${(props) => props.theme.textColor}
}
a {
text-decoration: none;
}
`;
export default GlobalStyle;
이때 저는 추후 사이트의 테마 색 까지 고려하여서 themeprovider도 같이 적용하였습니다.
import ReactDOM from 'react-dom/client';
import { BrowserRouter } from 'react-router-dom';
import { ThemeProvider } from 'styled-components';
import { basicTheme } from './assets/styles/theme';
import App from './App';
import GlobalStyle from './assets/styles/GlobalStyle';
const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
root.render(
<ThemeProvider theme={basicTheme}>
{/* <QueryClientProvider client={client}> */}
<BrowserRouter>
<GlobalStyle />
<App />
</BrowserRouter>
{/* </QueryClientProvider> */}
</ThemeProvider>,
);
index.tsx 폴더에 ThemProvide를 등록하고 <GlobalStyle/>을 호출하면 적용할 수 있습니다.
background-color: ${(props) => props.theme.bgColor};
color: ${(props) => props.theme.textColor}
GlobalStyle의 위 코드는 테마 적용시 기본색을 바꾸기 위해서 props 형식으로 내려받도록 하였습니다.
우선 저희 프로젝트에서는 색을 아래와 같이 지정하였습니다.
import { DefaultTheme } from 'styled-components';
// colors TODO: 변수명 수정, 추후 테마 변경 적용하려면 코드 추가
export const color = {
color1: '#845EC2',
color2: '#A178DF',
color3: '#BE93FD',
color4: '#DCB0FF',
color5: '#FACCFF',
};
// 추후 테마색 결정
export const basicTheme: DefaultTheme = {
bgColor: 'white',
textColor: 'black',
};
추후 테마색을 적용하기 위해선 color를 수정해야겠습니다.
'프론트엔드' 카테고리의 다른 글
전역 변수(redux-toolkit) 관리를 통한 모달 컴퍼넌트 리랜더링 관리 - 2 (0) | 2023.08.28 |
---|---|
antd 라이브러리를 활용해서 공용 Modal 컴퍼넌트 만들기(상태관리)-1 (0) | 2023.08.28 |
typescript 로 axios instance 생성하기 ( JWT토큰 자동전송) (0) | 2023.08.23 |
VITE 란? (0) | 2023.08.22 |
React swiper 라이브러리 사용 (0) | 2023.08.21 |