styled-conents感情に変換
20795 ワード
これまでCS-In-JS、styled-conntsを使用してきました.最近感情を使う人が増えているようで、私もこの機会に感情を知りたいです.
styled-conentsはよく似ていて、勉強にはあまり難しくないように見えますが、実際に経験してから知ったようです.
以前はstyled-conentsで
次の順番で文章を書いてみます.スタイル-成分と感情の違い スタイル-コンポーネントを感情に変換 global styles theme 反応式レイアウト 情緒コードGithub
https://blog.songc.io/react/react-js-in-css/
https://velog.io/@bepyan/styled-components-%EA%B3%BC-emotion-%EB%8F%84%EB%8C%80%EC%B2%B4-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EB%AD%94%EA%B0%80
世界的な知名度が高く、国内ではstyle-componentが優位に立っている.
また、
感情からGlobal,cssを導入する. グローバルラベルを生成した後、グローバルcssにスタイルで挿入します.
TypeScriptを使用する場合、トピック.d.tsを生成するには、
Styled ComponentsインタラクティブレイアウトCommit履歴
Emotion+Type ScriptインタラクティブレイアウトCommit履歴
Emotionドキュメントを参照して、tablet、desktopブレークポイントが設定されています.
まだ感情をしっかり勉強していないので、コード実装には未熟ですが、コンビネーション学習を続けていきたいと思います.styled-conentsは、感情の両方にそれぞれの長所と短所があるようだ.だから今までどちらが良いか分からなかったのですが、入社すると感情を使っていると言うかもしれませんので、コードが実現するときは、早めに勉強して反感を持たないようにしたほうがいいです.
styled-conentsはよく似ていて、勉強にはあまり難しくないように見えますが、実際に経験してから知ったようです.
以前はstyled-conentsで
반응형 레이아웃
を実現しており、それを感情と見なし、グローバルに使用されるcss globalStyles
とtheme
も感情で代替される.次の順番で文章を書いてみます.
styled-conentsと感情の違い
https://blog.songc.io/react/react-js-in-css/
https://velog.io/@bepyan/styled-components-%EA%B3%BC-emotion-%EB%8F%84%EB%8C%80%EC%B2%B4-%EC%B0%A8%EC%9D%B4%EA%B0%80-%EB%AD%94%EA%B0%80
世界的な知名度が高く、国内ではstyle-componentが優位に立っている.
번들 크기
はemotion
であり、デザイン-部品작다
よりも優れている.성능
賞は有意義な차이가 나지는 않는다
賞ですまた、
emotion
において、서버 사이드 렌더링
は、さらに서버쪽에 설정을 하지 않아도 된다
の利点を有する.サーバ側が設定をレンダリングする場合、感情的に他の設定はありませんが、styled-components
は설정이 필요
の面倒があります.Global Styles
styled-components
import { createGlobalStyle } from 'styled-components';
import reset from 'styled-reset';
const GlobalStyle = createGlobalStyle`
${reset}
html {
font-size: 16px;
};
body {
font-family: 'Noto Sans KR', sans-serif;
}
select,
input,
button,
textarea {
border: 0;
outline: 0 !important;
}
`;
export default GlobalStyle;
emotion
// src/styles/global
import React from 'react';
import { Global, css } from '@emotion/react';
const style = css`
html {
font-size: 16px;
}
body {
font-family: 'Noto Sans KR', sans-serif;
}
select,
input,
button,
textarea {
border: 0;
outline: 0 !important;
}
`;
const GlobalStyle = () => {
return <Global styles={style} />;
};
export default GlobalStyle;
index.tsx
import React from 'react';
import { render } from 'react-dom';
import GlobalStyle from '@src/styles/global';
import theme from '@src/styles/theme';
import { ThemeProvider } from '@emotion/react';
render(
<ThemeProvider theme={theme}>
<GlobalStyle />
</ThemeProvider>,
document.querySelector('#app'),
);
Theme
styled-components
import styled, { css } from 'styled-components';
const fontSizes = {
xxs: '12px',
xs: '13px',
sm: '14px',
base: '16px',
md: '18px',
lg: '24px',
};
const colors = {
black: '#000',
dark: '#191a20',
primary: '#3f4150',
secondary: '#8c8d96',
};
const theme = {
fontSizes,
colors,
};
export default theme;
emotion
type
を指定します.// theme.ts
import { DefaultTheme } from '@emotion/react';
const theme: DefaultTheme = {
fontSizes: {
xxs: '12px',
xs: '13px',
sm: '14px',
base: '16px',
md: '18px',
lg: '24px',
},
colors: {
black: '#000',
dark: '#191a20',
primary: '#3f4150',
secondary: '#8c8d96',
},
};
export default theme;
// theme.d.ts
import '@emotion/react';
declare module '@emotion/react' {
export interface DefaultTheme {
fontSizes: {
xxs: string;
xs: string;
sm: string;
base: string;
md: string;
lg: string;
};
colors: {
black: string;
dark: string;
primary: string;
secondary: string;
};
}
}
Responsive Layout
Styled ComponentsインタラクティブレイアウトCommit履歴
Emotion+Type ScriptインタラクティブレイアウトCommit履歴
utils/media
styled-components
styled-media-query
ライブラリを使用して、タブレット、デスクトップサイズを区分します.import { generateMedia } from 'styled-media-query'
import { theme } from '../index'
export const media = generateMedia({
...theme.breakpoints,
})
emotion
Emotionドキュメントを参照して、tablet、desktopブレークポイントが設定されています.
const breakpoints = [768, 1200];
export const media = breakpoints.map((bp) => `@media (min-width: ${bp}px)`);
Grid/styles
styled-components
styled-media-query
を使用してメディアを表現します.タブレットとデスクトップアプリケーションcssに分けることができます.export const StyledContainer = styled.div`
width: 100%;
padding: 0 5px;
margin: 0 auto;
${media.greaterThan('tablet')`
max-width: 1020px;
padding: 0 30px;
`}
${media.greaterThan('desktop')`
max-width: 1140px;
padding: 0;
`}
`;
emotion
export const StyledContainer = styled.div`
width: 100%;
padding: 0 5px;
margin: 0 auto;
${media[0]} {
max-width: 1020px;
padding: 0 30px;
}
${media[1]} {
max-width: 1140px;
padding: 0;
}
`;
の最後の部分
まだ感情をしっかり勉強していないので、コード実装には未熟ですが、コンビネーション学習を続けていきたいと思います.styled-conentsは、感情の両方にそれぞれの長所と短所があるようだ.だから今までどちらが良いか分からなかったのですが、入社すると感情を使っていると言うかもしれませんので、コードが実現するときは、早めに勉強して反感を持たないようにしたほうがいいです.
Reference
この問題について(styled-conents感情に変換), 我々は、より多くの情報をここで見つけました https://velog.io/@godud2604/styled-components-를-emotion-으로-변환하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol