styled-components
タグテンプレート共通
온전히 추출
可能`hello {{foo: 'bar' }} ${() => 'world'}!`
// 결과 : "hello [object Object] () => 'world'!"
テンプレートにオブジェクトまたは関数を配置するとシェイプが失われます[object Object]
function tagged(...args) {
console.log(args);
}
tagged`hello ${{foo: 'bar' }} ${() => 'world'}!`
コードを確認します.マークされたスタンプテンプレート文字を使用すると、テンプレート間に入るJavaScriptオブジェクトまたは関数の元の値を上記のように抽出できます.
styled-componsesこれらのプロパティを使用すると、→styled-componsesで作成した構成部品のpropsがスタイルの面でクエリーしやすくなります.
styled.ラベル名
import styled from 'styled-components';
const MyComponent = styled.div`
font-size: 2rem;
`;
こんな風にdivの後にTagged Tampletteral構文でスタイルを追加します.スタイルを適用したdivからなるリトラクト構成部品が作成されます
divではなくbuttonまたはinputでスタイリングしたい場合はstyled.を選択します.Inputのような形で後ろにサインを付けてください
styled(「ラベル名」)|styled(構成部品名)
使用するラベル名は、動的でもよいし、
特定の構成部品自体をモデリングするために使用
const MuInput = styled('input')`
background: gray;
`
const StyledLink = styled(Link)`
color: blue;
`
このようにして素子をstyledのパラメータとする.このコンポーネントには、classNameplsを最上位DOMに設定するclassName値を内部に含める必要があります.
const Samplr = ({ className }) => {
return <div className={className}>Sample</div>;
};
const StyledSample = styled(Sample)`
font-size: 2rem;
`;
スタイルでpropsをクエリーする
styled-componsesを使用すると、スタイル端にショートカットリンクを作成して、構成部品に渡されるprops値を参照できます.
参照
복제
コピーファイル참조
シンボルリンクやショートカットの作成に似ている심볼릭 링크에 저장된 원본의 주소를 참조
シンボリックリンクで元のファイルの場所を特定し、元のファイルを操作するこれにより、ストレージ容量を節約し、元のファイルのすべてのコピーを同じ内容に保つことができます
const Box = styled.div`
background: ${props => props.color || 'blue'};
padding: 1rem;
display: flex;
`;
<Box color="black"></Box>
上のコードのように、propsで直接あなたの価値を伝えることができます.バックグラウンドでpropsをクエリーするcolorの値を使用
また、色値が与えられていない場合は、基本的に青色に設定する
propsベースの条件付き造形
&:hover
利用可能&
文字による自己選択import styled, { css } from 'styled-components';
const Button = styled.button`
background: white;
color: black;
border-radius: 4px;
(코드생략)
&:hover {
background: rgba(255, 255, 255, 0.9);
}
${props =>
props.inverted &&
css`
background: none;
border: 2px solid whitel
color: white;
&:hover {
background: white;
color: black;
}
`};
& + button {
margin-left: 1rem;
}
`;
<Button>안녕하세요</Button>
<Button inverted={true}>테두리만</Button>
反応器からpropsを伝送する2つの方法
<제목 색상="blue"></제목>
<제목 색상={'red'}></제목>
マルチラインスタイルコードをpropsに従って挿入する場合は、styled-componsesにcssをロードする必要があります.${props =>
props.inverted &&
css`
background: none;
border: 2px solid whitel
color: white;
&:hover {
background: white;
color: black;
}
`};
cssを使わずに文字列を直接入れても正常に動作します.${props =>
props.inverted &&
`
background: none;
border: 2px solid whitel
color: white;
&:hover {
background: white;
color: black;
}
`};
はんのうせっけい
const Box = styled.div`
background: ${props => props.blue || 'blue'};
padding: 1rem;
display: flex;
width: 1024px;
margin: 0 auto;
@media (max-width: 1024) {
width: 768px;
}
@media (max-width: 768) {
width: 100%;
}
`;
background: ${props => props.blue || 'blue'};
これでアイテムで加えた値を直接伝えることができます @media (max-width: 1024) {
width: 768px;
}
@media (max-width: 768) {
width: 100%;
}
基本的には横1024 pxzで中央に整列し、横径が小さくなるにつれて縮小し、768 px未満ではmarinを除去し、充填する反作用設計反復関数の作成
これらの操作を複数の構成部品で繰り返すと面倒になるかもしれませんが、関数化されている場合は使いやすいです
メディアを宣言して使用すると、スタイル面のコードが簡単になります.
メディアをStyledComponentに設定します.jsで作成されている場合は、実際の開発環境では、直接他のファイルにモジュール化→あちこちでロードして使用する方が便利です.
import styled, { css } from 'styled-components';
const sizes = {
dexktop: 1024,
tablet: 768,
};
// size 객체에 따라 자동으로 media 쿼리 함수를 만들어준다
const media = Object.keys(sizes).reduce((acc, label) => {
acc[label] = (...arg) => css`
@media (max-width: ${sizes[label] / 16}em) {
${css(...args)};
}
`;
return acc;
}, {});
const Box = styled.div`
background: ${props => props.color || 'blue'};
padding: 1rem;
display: flex;
width: 1024px;
margin: 0 auto;
${media.desktop`width: 768px;`}
${medai.tablet`width: 100%;`}
`;
`Reference
この問題について(styled-components), 我々は、より多くの情報をここで見つけました https://velog.io/@beanlove97/styled-componentsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol