2016-11-15 17 views
0

I持つコンテナのdiv内の3つのdiv持っページ:ダイナミックなスクロール領域

____________________ 
|------------------| 
|| Expandable || 
||    || 
|------------------| 
|------------------| 
|| scroll area || 
||    || 
|------------------| 
|------------------| 
|| fixed  || 
||----------------|| 
|__________________| 

私が持っている問題であることを、トップのdivは(ジャバスクリプトコンポーネントによって)拡張され、スクロール領域はコンテナdivの外側に押し下げられますが、動的に収縮する必要があります。 (固定divは現在絶対配置されており、スクロールdivはその下にプッシュダウンされています)

固定高さ(ピクセルなど)は、さまざまな画面サイズに動的に調整する必要があるため、使用できません。

問題のビデオ:https://youtu.be/M-isVl1hs8Q

CSS:

.scrollcontainer{ 
position:relative; 
width:100%; 
height:100%; 
} 
.floor{ 
    width:100%; 
    height:100% - 60px; 
    display:flex; 
    flex-direction:column; 
} 
.item{ 
    flex:1 1 auto; 
} 

.broom{ 
    transition:1s linear all; 
} 
.dirt{ 
    transition:1s linear all; 

} 
.rug{ 
    display:block; 
    position:absolute; 
    bottom:0; 
    width:100%; 
    height:60px; 
} 

javaqscript/HTML:

 <div className="scrollcontainer"> 
      <div className="floor"> 
       <div className="broom item"> 
        <FoodItemList 
         foodItemList={[this.props.foodItem]} 
         user={this.props.user} 
        /> 
       </div> 
       <div className="dirt item"> 
        <Scrollbars 
         autoHeight 
        > 
        <Comments comments={this.props.foodItem.comments} /> 
       </Scrollbars> 
       </div> 
      </div> 
      <div className="rug"> 
       <Paper style={styles.paper} zDepth={0}> 
        <div className="leftcolumn"> 
         <TextField 
          style={{color: 'white'}} 
          hintText="You can leave a comment here" 
          onChange={this.handleComment} 
          value={this.state.commentText} 
         /> 
        </div> 
        <div className="rightcolumn"> 
         <IconButton 
          iconStyle={styles.smallIcon} 
          style={styles.small} 
          onTouchTap={this.addComment} 
         > 
         <ContentSend color={lightGreenA200} /> 
         </IconButton> 
        </div> 
       </Paper> 
      </div> 
     </div> 

ありがとう!

答えて

1

動作していない例を見るとよいでしょう。私は、自分のものではなく、役立つものと分析から除外するものを決めるのが最善だと思います。

ここでは、要素間のインタラクティブ性を示すために簡単にコードを記述しました。これは、スペース/サイズのネゴシエーションにflexboxabsolute ly position ed要素、および "checkbox hack"を使用してjavascriptコンポーネントをエミュレートします。希望のoverflowの設定(scrollのいずれかの方向、またはそのジャズのいずれか、またはwrapperが必要な場合)を投げてください。これがレイアウトを担当します。

は、ここで適切なflexboxコードです:

私は例の意味を伝える手助けするために、それぞれの相手を視覚化するために、いくつかの名前を投げました。

ある意味では、あなたはちょっと敷物の下のほこりを掃除しています!

そのCSSの
.floor{ 
    width:100%; 
    height:100%; 
    border:1px solid red; 
    display:flex; 
    flex-direction:column; 
} 
.item{ 
    box-shadow: inset 0 0 16px -4px red; 
    flex:1 1 auto; 
} 

し、関連するマークアップ:

<div class="container"> 
    <div class="floor"> 
    <div class="broom item"> 
    </div> 
    <div class="dirt item"> 
    </div> 
    </div> 
    <div class="rug"> 
    </div> 
</div> 

は、ここで使われている何のためにブラウザのサポートを確認することを忘れないでください!あなたの応答のために多く

http://codepen.io/anon/pen/ZBOwdw?editors=1100

+0

おかげで、私は私に合わせてあなたの例を編集しているが、残念ながら問題が解消されません。私は自分の質問を改訂し、現在使用中のコードと問題のビデオを追加しました。どんなアドバイスをいただければ幸いですか? :) –

+0

ごめんなさい、ただあなたのコメントに気づいた。今見ている。私の応答でこれを編集します。 – MassDebates

+0

さらなる支援が必要な場合は、問題を再現して示す制御されたデモ/テストケースを作成する必要があります。 – MassDebates

関連する問題