2016-07-07 13 views
0

Ich habe einen Dialog, der so eingerichtet ist:Make Tabellendialog Inhalt scrollbaren

<div style="position:fixed; display:block; width:600px; top:0; left:50%;margin-left:-275px;"> 
    <table style="width:100%;" cellpadding="0" cellspacing="0"> 
    <tbody> 
     <tr> 
     <td> 
      <div class="modal-header"> 
      <span class="close">×</span> 
      <h2>Modal Header</h2> 
      </div> 
     </td> 
     </tr> 
     <tr> 
     <td style="background-color:gray;"> 
      <table> 
      <tbody> 
       <tr> 
       <td> 
        <div class="modal-body"> 
        <p>variable length really long stuff</p> 
       </td> 
       </tr> 
      </tbody> 
      </table> 
     </td> 
     </tr> 
     <tr> 
     <td> 
      <div class="modal-footer"> 
      <h3>Modal Footer</h3> 
      </div> 
     </td> 
     </tr> 
    </tbody> 
    </table> 
</div> 

Gerade jetzt, der Inhalt des Dialogs ist zu lang für die Seite, und da die Position festgelegt ist, kann der Benutzer kann niemals bis zum Ende des Dialogs herunterscrollen. Ich möchte, dass die innere Tabelle nur scrollbar ist, wenn die Länge des Inhalts den Darstellungsbereich überschreitet - aber ich möchte immer, dass die Kopf- und Fußzeile sichtbar ist.

Here is a code sample. Wie kann ich das erreichen?

+0

Möchten Sie, dass das Modal immer 100% hoch ist? Ist die Kopf- und Fußzeile fest eingestellt? – Stickers

+0

@Pangloss Das Modal sollte höchstens so groß sein wie der darin enthaltene Inhalt, aber der Inhalt sollte scrollbar sein, wenn er nicht auf eine Seite passen kann. Ja, die Kopf- und Fußzeile haben eine feste Höhe, aber der modale Inhalt ändert sich je nach Server. –

Antwort

1

Wenn Sie in Ordnung sind vh Einheiten verwenden, können Sie die modal-body zwingen blättern:

.modal-body { 
    padding: 2px 16px; 
    overflow:auto; 
    max-height: calc(100vh - 144px); /* 144px represents the combined height of the modal header and footer */ 
} 

Wenn Sie nicht vh Einheiten verwenden möchten, dann müssen Sie programmatisch den Überlauf auf den hin- und herzuschalten body wenn das Modal kommt. Sie können auch die Position scrollTop manuell einstellen, wenn Sie den Überlauf ändern, sodass die Seite nicht springt.

+0

Hallo! Diese Antwort funktioniert gut, aber ich werde warten und schauen, ob jemand andere Ideen hat - es wird ein Schmerz sein, um 'calc' und' vh' zur Verwendung zuzulassen. –

+0

Ich kann die 'vh'-Einheiten verstehen, weshalb ich darauf hingewiesen habe. 'calc' wird ziemlich weit unterstützt, aber ich schätze, dass Sie IE9 oder darunter brauchen, seit Sie diesen Kommentar gemacht haben. Wenn Sie dies mit einem eleganten Fallback verwenden möchten, können Sie ziemlich einfach JavaScript verwenden, um die entsprechende maximale Höhe zu berechnen und festzulegen, wenn das Modal geöffnet wird oder wenn die Größe des Browsers geändert wird. – Quantastical

Verwandte Themen