今後、再び使う機会がありそうなので、備忘録としてまとめ。
今回は、JavaScript でポップアップを表示させる方法についてです。
なお、使用しているフレームワークは React です。
参考に…というかコードをコピペさせていただいたサイトはこちら。
Simple react popup example
https://codepen.io/bastianalbers/pen/PWBYvz
なお、こちらは、下記の記事からリンクされていたサイトです。
JavaScriptを使ったポップアップウィンドウの表示方法|CodeCampus
https://blog.codecamp.jp/programming-javascript-pop-up
上記の記事では、CSS や jQuery、React だけでなく、AngularJS や WordPress のプラグインについてのリンクもあり、かなり種類豊富です。
また、Reactについてはコピー&ペーストで使えるので、かなり助かりました…!
実装のためのコードは下記のとおりです。
■HTML
<div id="content"></div>
■CSS
h1 { margin: 0; padding: 0; } html, body, .app { margin: 0; padding: 0; position: relative; width: 100%; height: 100vh; } .popup { position: fixed; width: 100%; height: 100%; top: 0; left: 0; right: 0; bottom: 0; margin: auto; background-color: rgba(0,0,0, 0.5); } .popup_inner { position: absolute; left: 25%; right: 25%; top: 25%; bottom: 25%; margin: auto; background: white; }
■JavaScript
class Popup extends React.Component { render() { return ( <div className='popup'> <div className='popup_inner'> <h1>{this.props.text}</h1> <button onClick={this.props.closePopup}>close me</button> </div> </div> ); } } class App extends React.Component { constructor() { super(); this.state = { showPopup: false }; } togglePopup() { this.setState({ showPopup: !this.state.showPopup }); } render() { return ( <div className='app'> <button onClick={this.togglePopup.bind(this)}>show popup</button> {this.state.showPopup ? <Popup text='Close Me' closePopup={this.togglePopup.bind(this)} /> : null } </div> ); } }; ReactDOM.render( <App />, document.getElementById('content') );
必要なさそうなところは割愛させていただきました。
上記のコードを追加して実行すると、画面に「show popup」というボタンが表示されるはずです。
で、そのボタンをクリックすると、ポップアップが表示されます。
ポップアップを閉じるときは、「close me」ボタンをクリックします。
簡単に解説すると、ポップアップの表示・非表示は、showPopup
という state
で制御しており、この値が true
だとポップアップを表示し、false
だとポップアップが非表示になります。
で、「show popup」がクリックされると、showPopup が true に、「close me」クリックで showPopup が false になります。
ちなみに、「close me」ボタンが押されたときの処理は、App クラス内の togglePopup
関数で定義していますので、処理の内容を変更したい場合はこちらを確認してください。
以上、Reactでポップアップを実装する方法でした。