flexboxで2つのdivを左右に並べた時に、左はテキストエリアでコンテンツによっては縦に長くなるからスクロールしたいのだけど、右はメニューなのでそのスクロールを無視して欲しい→できた image

左にmaxHeight: 100%, overflowY: scrollでできるかと思ったがダメだった

  • image

  • なぜ?

  • MaterialUIのダイアログが中身のサイズを見て振る舞いを変えてるせい?

  • maxHeight: 300pxなら期待した動きになった

    • けど、この300pxの部分は環境によって異なるからどうしたものかな…

→fullscreen dialogにしたからビューポート基準にしてもいいだろうと考えてmaxHeight: 75vhにした

Flexbox

コード。スクリーンショットの時点とはここでの本題でない横幅のところは変わってます

<div style={{ display: "flex" }}>
  <div
    style={{ flexGrow: 1, maxHeight: "75vh", overflowY: "scroll" }}
  >
    <TextareaAutosize ... />
  </div>
  <div
    style={{
      background: "#eee",
      padding: "2px",
    }}
  >
    Menu
  </div>
</div>

pRegroup-done

作ってからposition: stickyを使うという案を教えてもらった ts

<div style={{ display: "flex" }}>
  <div style={{ flexGrow: 1 }}>...</div>
  <div>
    <div
      style={{
        position: "sticky",
        top: "0px",
        background: "#eee",
        padding: "2px",
      }}
    >
      Menu
    </div>
  </div>
</div>

スティッキーアイテムに兄弟要素が必要、はデマ