これまで何の前触れもなくチラッと出てきたComponentにCSSを適用する方法について、いよいよ解説したいと思います。まぁブログの構成(順番)を間違えてるだけなんですけどねw もっと早く取り上げるべきだったw
ダイアログ Component
Component名は前回と同じですが、今回はボタンをクリックする度に文字色が変化するサンプルにしてみました。
サンプル
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Dialog</title> <script src="https://unpkg.com/react@16/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script> <!-- Don't use this in production: --> <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script> <style type="text/css"> .dialog { border: 1px solid gray; background-color: beige; text-align: center; } </style> </head> <body> <div id="root"></div> <script type="text/babel"> class Dialog extends React.Component { constructor(props) { super(props); this.state ={ i: 0 } this.handleClick = this.handleClick.bind(this); } handleClick(){ this.setState({ i: this.state.i + 1 }); } render() { let colormap = ["black", "red", "green", "blue"]; let i = this.state.i % colormap.length; let color = { color: colormap[i] }; return ( <div className="dialog"> <h1 style={color}>HelloWorld</h1> <button onClick={this.handleClick}>チェンジ</button> </div> ); } } ReactDOM.render( <Dialog />, document.getElementById('root') ); </script> </body> </html>
実行結果
解説
CSSの指定方法
通常のHTMLと同様にclass
やid
を利用する方法、style属性を利用する方法の
2種類があります。
class/id
サンプルではclass
属性を利用しています。通常のHTMLと同様にhead内などでCSSを記述。
<style type="text/css"> .dialog { border: 1px solid gray; background-color: beige; text-align: center; } </style>
render()
で以下のようなコードを記述しています。ここで注意すべきはclass
ではなくclassName
となっている点ですね。class
はJavaScriptで予約語となっているため別名になっています。
return ( <div className="dialog"> <h1 style={color}>HelloWorld</h1> <button onClick={this.handleClick}>チェンジ</button> </div> );
ちなみにid
での指定は以下のようにそのままid属性を記述すればOKです。
<style type="text/css"> #dialog { border: 1px solid gray; background-color: beige; text-align: center; } </style> (snip) return ( <div id="dialog"> <h1 style={color}>HelloWorld</h1> <button onClick={this.handleClick}>チェンジ</button> </div> );
style属性
JSXでは以下のようにstyle属性でスタイルを指定することもできます。このときに渡しているのはスタイルの指定が入った連想配列です。
return ( <h1 style={color:"black"}>HelloWorld</h1> );
注意点としてはbackground-color
のように間にハイフンが入るプロパティはそのままでは利用できません。このような場合はbackgroundColor
のようにハイフンを削除し後半の最初の1文字目を大文字にします。キャメルケースというやつですね。
return ( <h1 style={backgroundColor:"red"}>HelloWorld</h1> );
サンプルにある通り、最終的に連想配列が渡せれば良いので、変数を記述するのもOKです。
let css = {color:"white", backgroundColor:"red"}; return ( <h1 style={css}>HelloWorld</h1> );
書籍
React入門 React・Reduxの導入からサーバサイドレンダリングによるUXの向上まで (NEXT ONE)
posted with amazlet at 18.12.24
穴井 宏幸 石井 直矢 柴田 和祈 三宮 肇
翔泳社
売り上げランキング: 139,067
翔泳社
売り上げランキング: 139,067