2017-10-08 181 views
0

我想要計算具有Appbar和Tab的可滑動視圖的視圖寬度和高度。 我有代碼工作,但我已經使用vh和vw參數,我不確定在iOS的支持。有一個更好的方法嗎。React爲可滑動視圖計算視圖寬度和高度

你可以在這裏找到整個應用程序,你可以建議,如果有任何其他方式在CSS中實現相同。

目前代碼:

import React, { Component, PropTypes } from 'react' 
import RaisedButton from 'material-ui/RaisedButton' 
import Appbar from 'material-ui/AppBar' 
import { Tabs, Tab } from 'material-ui/Tabs' 
import SwipeableViews from 'react-swipeable-views' 
import FloatingActionButton from 'material-ui/FloatingActionButton' 
import ContentAdd from 'material-ui/svg-icons/content/add' 

class Hello extends Component { 
    constructor(){ 
    this.state = { 
     tabSelected: 0, 
     tabHeight:0 
    } 

    } 
    componentDidMount() { 
    console.log(this.tab) 
    let height = this.tab.height 
    this.setState({tabHeight: height}) 
    console.log(height) 
    } 
    handleChange = value => this.setState({tabSelected: value}) 

    render(){ 

    return(
    <div> 
    <Appbar style={{ 
     backgroundColor: '#3e9bbe', 
     position:'fixed', 
     top:0, 
     left:0, 
     height:60 
    }} 
    title='Static Appbar' 
    /> 
      <div> 
      <Tabs 
       ref={(tab) => this.tab = tab} 
       style={{position:'fixed', 
         top:60, 
         left:0, 
         minheight:'100%', 
         minWidth:'100%'}} 
       onChange={this.handleChange} 
       value={this.state.tabSelected} 
       > 
       <Tab label="Info" value={0} /> 
       <Tab label="Questions" value={1} /> 
       <Tab label="Discussion" value={2} /> 
      </Tabs> 
      </div> 
      <div style={{position:'fixed', top:120, left:0, minWidth:'100%'}}> 
      <SwipeableViews 
       index={this.state.tabSelected} 
       onChangeIndex={this.handleChange}> 
       <div key='Tab1' style={{position:'relative', width:'100%', height:'calc(99vh - 60px - 48px)', overflow:'scroll'}}> 
       <h1>TAB1</h1> 
       <p> 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum tempus mi vitae iaculis iaculis. Aenean blandit maximus tortor, accumsan lobortis augue ultricies mattis. Cras in gravida lacus. Duis ac purus ex. Sed volutpat diam vitae velit vulputate ullamcorper. Donec interdum id augue quis suscipit. Pellentesque iaculis vulputate lectus, id porttitor mauris mollis in. Sed convallis sapien non eros eleifend condimentum. Etiam dictum vitae nibh sit amet varius. Nam eget interdum tellus. Donec dignissim, tortor id imperdiet ......    
       </p> 
    <FloatingActionButton style={{position:'fixed', bottom:10, right:'calc(30px - 100vw * 1)'}} onClick={() => alert('Tab 2')}> 
     <ContentAdd /> 
    </FloatingActionButton> 
       </div> 
       <div key='Tab3' style={{position:'relative', width:'100%', height:500, overflow:'scroll'}}> 
       <h1>TAB3</h1> 
       <p> 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum tempus mi vitae iaculis iaculis. Aenean blandit maximus tortor, accumsan lobortis augue ultricies mattis. Cras in gravida lacus. Duis ac purus ex. Sed volutpat diam vitae velit vulputate ullamcorper. Donec interdum id augue quis suscipit. Pellentesque iaculis vulputate lectus, id porttitor mauris mollis in. Sed convallis sapien non eros eleifend condimentum. Etiam dictum vitae nibh sit amet varius. Nam eget interdum tellus. Donec dignissim, tortor id imperdiet egestas, velit lorem interdum purus, nec ultrices ante eros non ligula. 
{+ More} 

       </p> 
    <FloatingActionButton style={{position:'fixed', bottom:10, right:'calc(30px - 100vw * 2'}} onClick={() => alert('Tab 3')}> 
     <ContentAdd /> 
    </FloatingActionButton> 
       </div>        
      </SwipeableViews>    
      </div> 

    </div> 
) 
    } 
} 

export default Hello 

應用實例:

https://stackblitz.com/edit/rmaterialui-playground

回答

0

使用大衆和大衆汽車已經到現在工作得很好,我在iOS版(瀏覽器)。 如果你想嘗試一個替代方案,也許使用window.innerHeight()可能會有所幫助。

+1

是的,我已經測試了它在IOS和wirks罰款.. –

相關問題