2016-11-02 3 views
1

Ich habe derzeit eine Seite und eine Schaltfläche. Nach dem Klicken auf eine Schaltfläche möchte ich eine Statuseigenschaft aktualisieren. Sobald sie aktualisiert wurde, wird die Komponente neu gerendert und die transparente Seite über der ursprünglichen Seite angezeigt.ReactJS: Wie erstelle ich eine transparente Seite?

möchten so transparent Seite wollen:

enter image description here

Bisher erdacht von so etwas wie:

render() { 
if(this.state.buttonPressed) { 
    return(
    <div style={styles.transparentPage}> 
     //transparentPage content 
    </div> 
) 
} else { 
    return(
    <div style={styles.originalPage}> 
     //originalPage content 
    </div> 
) 
} 

Aber die originalPage vollständig entfernen würde und mit dem transparentPage erneut gerendert werden. Was wäre der richtige Ansatz, um eine transparente Seite über eine Originalseite zu implementieren?

Antwort

1

Alles was Sie brauchen würde, ist, etwas zu tun wie

render() { 
    var overlay = this.state.buttonPressed ? <div className="overlay" /> : null; 

    return(
    <div style={styles.originalPage}> 
     {overlay} 
    </div> 
) 
} 

haben und dann in Ihrem CSS tun:

.overlay { 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    background: rgba(250,250,250,.5); 
    z-index: 25; 

} 

nur sicherstellen, dass Ihre Z-Index des modalen mehr als die Overlay Z-Index, so dass es auch nicht transparent macht

+0

Hier ist ein Stift mit nur HTML css http://codepen.io/finalfreq/pen/dObJre – finalfreq

+0

Und im Inneren hätte ich es so '

{overlay}
Original content
'? – Walter

+0

genau, besteht die gesamte Überlagerung aus einem beliebigen dom-Element, das Sie mit der Klasse hinzufügen möchten, da seine feste Position irgendwo im DOM-Baum sein kann und trotzdem das gewünschte Ergebnis erzeugt. Sie möchten nur sicherstellen, dass es nur im Dom gerendert wird, wenn Sie das Overlay wollen, und es somit einer Variablen zuweisen und mithilfe eines Ternärs entscheiden, ob es ein Element oder Null sein soll. – finalfreq

Verwandte Themen