「反応」反応におけるSCSS/Til 54の使用
ReactでのScssの使用本明細書のすべての例は、SCSSを使用して記述される.
Reactでのスタイルの変更
超現代反応
classnames,mixinの詳細な使用例
Reactでのスタイルの変更
html要素のスタイルを変更する方法はいくつかありますが、スタイル要素を直接行またはファイルに書き込むよりも、cssファイルを作成して接続して使用する方法が一般的です.
反応も同じですが、方法は少し違います
スタイルファイルに関連付ける
reactはjsファイルなのでhtmlとは異なり、import
を使用して対応するcssファイルを接続します.import 'css파일 path'
className
htmlでcssファイルのコレクタにアクセスする方法は次のとおりです.class='클래스 이름'
ただし、reactを使用する場合、jsにはclassという名前の保持語が既に存在するため、classNameを使用してアクセスする必要があります(同様に、jsはclass-nameのような名前を使用しません)
実際の応用
では、上記の内容に基づいて、実際のプロジェクトに適用します.// App.js
import React from 'react';
import Button from './Button';
import './App.scss';
class App extends React.Component {
render() {
return (
<main>
<Button />
</main>
);
}
}
export default App;
// button.js
import React from 'react';
import './Button.scss';
class Button extends React.Component {
render() {
return (
<button className="button">
버튼
</button>
);
}
}
export default Button;
// App.scss
main {
text-align: center;
}
// button.scss
.button {
width: 100px;
height: 30px;
color: white;
background-color: tomato;
}
App、Button構成部品、scssファイルを作成します.<button className="button">버튼</button>
に示すように、classNameでスタイリングしました
じょうけんせいけい
上のボタンをスイッチとして使い、スイッチの状態によって背景色を変えたい場合は、条件付きの造形が必要です.
ただし、前例のように固定値が与えられると、条件付き造形はできない
したがって、classNameに変数を割り当てる必要があります.// onClick 이벤트를 통해 className의 배경색을 변경해보자
// button.js
import React from 'react';
import './Button.scss';
class Button extends React.Component {
constructor() {
super();
this.state = {
btnState: 'on',
};
}
handleBtn = () => {
this.state.btnState === 'on'
? this.setState({
btnState: 'off',
})
: this.setState({
btnState: 'on',
});
};
render() {
console.log(this.state.btnState);
return (
<button className={`Button ${this.state.btnState}`} onClick={this.handleBtn}>
버튼
</button>
);
}
}
export default Button;
// button.scss
.Button {
width: 100px;
height: 30px;
color: white;
&.on {
background-color: tomato;
}
&.off {
background-color: teal;
}
}
上のようにボタンを押すと背景の色が変わります.
scssファイルの&
は親を意味します
したがって、.Button.on .Button.off
と言えば.少なくなければ適用されません
クラス名ライブラリ
上記テンプレートライブラリは使用できますが、classnameというライブラリを使用すると条件造形がより容易に行えますnpm install classnames
<button className={classNames('Button', this.state.btnState)} onClick={this.handleBtn}>
classNames('Button', this.state.btnState)
と併用可能
必ず使いますか?🤔
テンプレート・ライブラリの場合、プロパティがコレクタに変換されると、すべての文字列がチェックされるため、オフセットの前に一貫性を保つ必要があります.
したがって,このライブラリを使用するとよりよいように見えるが,通常のようにプロジェクト,チームメンバーの使用状況に応じて決定すべきであると考える.
複数)SCSS変数の使用
cssでは変数も使用できますが、scssでは変数を宣言して使用するのが簡単です.$onColor: tomato;
$offColor: teal;
.Button {
width: 100px;
height: 30px;
color: white;
&.on {
background-color: $onColor;
}
&.off {
background-color: $offColor;
}
}
宣言変数は$변수이름 : 값;
で、$변수이름
として使用できます.
現在は1つの場合にのみ使用されている色が変数として使用されているため、役に立たないように見えますが、この色がプロジェクトでよく使用される色であれば、最もbasicColor: #2d9a6d;
のように宣言して複数の場所で使用されます.
(共通cssフォルダに入れて使用することもできます)
変数としてではなく多くの場所で使用される場合は、#2d9a6d
の値を覚えておく必要があります.書くたびに使用します.
Mixin
重複するコードがあり、条件に応じてscssで異なるスタイルを実現したい場合はmixinを使用します.@mixin 이름(인자) {
내용
}
.Button {
@include mixin이름(전달할 값);
}
위와 같이 사용하면 중복코드를 제거하고 전달할 값에 따라 다른 스타일링이 가능하다
심지어 조건문도 작성이 가능하기 때문에 마치 프로그래밍 언어처럼 사용할 수 있다
@if 조건1 {
내용
} @else if 조건2 {
내용
} @else {
내용
}
// App.js
import React from 'react';
import Button from './Button';
import './App.scss';
class App extends React.Component {
render() {
return (
<main>
<Button />
</main>
);
}
}
export default App;
// button.js
import React from 'react';
import './Button.scss';
class Button extends React.Component {
render() {
return (
<button className="button">
버튼
</button>
);
}
}
export default Button;
// App.scss
main {
text-align: center;
}
// button.scss
.button {
width: 100px;
height: 30px;
color: white;
background-color: tomato;
}
<button className="button">버튼</button>
上のボタンをスイッチとして使い、スイッチの状態によって背景色を変えたい場合は、条件付きの造形が必要です.
ただし、前例のように固定値が与えられると、条件付き造形はできない
したがって、classNameに変数を割り当てる必要があります.
// onClick 이벤트를 통해 className의 배경색을 변경해보자
// button.js
import React from 'react';
import './Button.scss';
class Button extends React.Component {
constructor() {
super();
this.state = {
btnState: 'on',
};
}
handleBtn = () => {
this.state.btnState === 'on'
? this.setState({
btnState: 'off',
})
: this.setState({
btnState: 'on',
});
};
render() {
console.log(this.state.btnState);
return (
<button className={`Button ${this.state.btnState}`} onClick={this.handleBtn}>
버튼
</button>
);
}
}
export default Button;
// button.scss
.Button {
width: 100px;
height: 30px;
color: white;
&.on {
background-color: tomato;
}
&.off {
background-color: teal;
}
}
![](https://s1.md5.ltd/image/fea741f8eb2a104a3311ecb160b4dfcc.png)
![](https://s1.md5.ltd/image/be768767c0db5acc5af03937db8c5ace.png)
上のようにボタンを押すと背景の色が変わります.
scssファイルの
&
は親を意味しますしたがって、
.Button.on .Button.off
と言えば.少なくなければ適用されませんクラス名ライブラリ
上記テンプレートライブラリは使用できますが、classnameというライブラリを使用すると条件造形がより容易に行えます
npm install classnames
<button className={classNames('Button', this.state.btnState)} onClick={this.handleBtn}>
classNames('Button', this.state.btnState)
と併用可能必ず使いますか?🤔
テンプレート・ライブラリの場合、プロパティがコレクタに変換されると、すべての文字列がチェックされるため、オフセットの前に一貫性を保つ必要があります.
したがって,このライブラリを使用するとよりよいように見えるが,通常のようにプロジェクト,チームメンバーの使用状況に応じて決定すべきであると考える.
複数)SCSS変数の使用
cssでは変数も使用できますが、scssでは変数を宣言して使用するのが簡単です.
$onColor: tomato;
$offColor: teal;
.Button {
width: 100px;
height: 30px;
color: white;
&.on {
background-color: $onColor;
}
&.off {
background-color: $offColor;
}
}
宣言変数は$변수이름 : 값;
で、$변수이름
として使用できます.現在は1つの場合にのみ使用されている色が変数として使用されているため、役に立たないように見えますが、この色がプロジェクトでよく使用される色であれば、最も
basicColor: #2d9a6d;
のように宣言して複数の場所で使用されます.(共通cssフォルダに入れて使用することもできます)
変数としてではなく多くの場所で使用される場合は、
#2d9a6d
の値を覚えておく必要があります.書くたびに使用します.Mixin
重複するコードがあり、条件に応じてscssで異なるスタイルを実現したい場合はmixinを使用します.
@mixin 이름(인자) {
내용
}
.Button {
@include mixin이름(전달할 값);
}
위와 같이 사용하면 중복코드를 제거하고 전달할 값에 따라 다른 스타일링이 가능하다
심지어 조건문도 작성이 가능하기 때문에 마치 프로그래밍 언어처럼 사용할 수 있다
@if 조건1 {
내용
} @else if 조건2 {
내용
} @else {
내용
}
classnames,mixinの詳細な使用例
Reference
この問題について(「反応」反応におけるSCSS/Til 54の使用), 我々は、より多くの情報をここで見つけました https://velog.io/@wjdcksdud29/React-React에서-Scss를-사용해보자-TIL-54テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol