2016-04-07 36 views
0

私はdialogClassName小道具を使用して、Modalの幅を90%に変更しています。 CSSは何も変更しません。私はstyle.cssが他のすべてのクラスでうまく動作することを確認しました。react-bootstrap:ModalのdialogClassName小道具が機能しない

このSO questionのソリューションは機能しません。 documentationも機能しません。

私はあなたの助けに感謝します!

modal.js方法レンダリング:コードdialogClassNameがダイアログコンポーネントのクラス名を設定するために使用されているソースによれば

.main-modal { 
    width: 90%; 
} 
+1

要素を検査し、適用されていない理由を確認しましたか?あなたはこれより優先度の高い他のCSSルールを持っているかもしれません。 –

+0

提案していただきありがとうございます。そのタグのクラスは "main-modal modal-dialog"です。したがって、「モーダルダイアログ」はそれをオーバーライドする必要があります。これは組み込みの反応起動ストラップモーダルクラスです。どのようにそれを無効にする任意のアイデア? – Nico

+0

あなたはインラインCSSスタイルを書くことができます..それはブートストラップルールよりも優先順位が高くなります。あなたのサイトのルールを指定することができます。あなたのモーダルのIDを使用してCSS .. IDセレクタを持つCSSルールが優先されます..または、カスタムクラスを追加して、すべてのクラスセレクタを含むCSSルールを作成することもできます。セレクタで使用されるクラスの数が多い場合、優先順位が高くなります...あなたに最適なものを使用してください –

答えて

0

render() { 
    return (
     <div> 
     <CardMain openModal={this.handleOpen} 
        {...this.props} /> 

     <Modal 
      show={this.state.open} 
      onHide={this.handleClose} 
      dialogClassName="main-modal" 
     > 

      <ModalMain tabKey={this.state.tabKey} 
         {...this.props} /> 

      <FeedbackForm /> 
     </Modal> 
     </div> 
    ); 
    } 

のstyle.cssを。 dialogComponentプロパティをModalコンポーネントに渡すことができます。

あなたはModal docsにdialogComponentClassに次の行のdialogComponentの説明を読むことができます。

+0

この解決方法では、モーダルのすべてのCSS小道具を最初から再定義する必要があります。 docsのdialogClassNameの例によると、幅などの仕様の小道具を単純に再定義できるはずです。 – Nico

+0

Modalレンダリング(https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Modal.js#L168)でわかるように、このプロパティはdialogComponentプロパティからのダイアログにのみ渡されます(https://github.com/react-bootstrap/react-bootstrap/blob/master/src/Modal.js#L154)。 – gyzerok

+0

私はあなたの意見を見ます。しかし、私が実装すると、反応ブートストラップModalに含まれているCSSのどれも持たないモーダルが得られます。だから私はすべてを再定義する必要があり、それは望ましくない。 dialogComponentの使用は、dialogClassNameの代用としては適していません。 – Nico

関連する問題