Largura do elemento muda ao trocar o 'position' para 'fixed'

O elemento no qual eu preciso usar o position: fixed é o #menu. Usei flex no container #main para alinhar os elementos em row.

O #menu sem o position: fixed fica com cerca de 214px de largura; Com o position: fixed fica com 330px de largura, porém eu não altero a width do mesmo em momento algum.

HTML:

<div id="main">
    <div id="menu"></div>
    <div id="view"></div>
    <div id="other"></div>
</div>

css:

#main{
    display: flex;
    flex-direction: row;
    width: 65%;
    height: 100%;
    margin: 0 auto;
}
#menu{
    width: 20%;
}

Normalmente o #menu tem 20% do tamanho do seu elemento pai, que no caso é #main.

Mas quando vc usa position:fixed, #menu é removido do fluxo normal do documento e passa a ter 20% do tamanho do viewport.

Tem alguma forma de contornar isso?

Eu pesquisei aqui, mas não encontrei nenhum jeito que não envolva JavaScript.

Mas se vc explicar o que vc quer fazer, talvez a gente encontre um jeito melhor. Seria bom se vc tive um desenho ou algo do tipo mostrando o resultado final esperado.

Em vermelho: #menu
Em amarelo: #view
Em azul: #other

Tô fazendo um clone do twitter.
O objetivo é: ao rolar a tela, só a div em amarelo deve ser afetada. Usar overflow-y: scroll está fora de questão, pois o resultado não vai ficar bom e nem igual ao twitter verdadeiro.

Então eu faria algo assim:

<div id="main">
  <div id="menu"></div>

  <div id="view">
    <p>Lorem ipsum dolor sit amet.</p>
    <p>Delectus sunt officiis quasi adipisci!</p>
    <p>Nobis voluptatem quisquam unde sunt!</p>
    <p>Explicabo natus dignissimos rerum hic.</p>
    <p>Quas maxime perspiciatis placeat temporibus.</p>
    <p>Reiciendis odit eligendi nobis tempore?</p>
    <p>Vero veniam et vitae voluptatum.</p>
    <p>Ad quibusdam natus excepturi reprehenderit.</p>
    <p>Vero quasi voluptatibus ut provident.</p>
    <p>Corrupti blanditiis id exercitationem consequuntur.</p>
    <p>Mollitia, error impedit. Temporibus, quo.</p>
    <p>Quam qui eaque placeat commodi.</p>
    <p>Accusantium aliquid eaque autem assumenda.</p>
    <p>Quis illo tenetur quia corrupti!</p>
    <p>Vel, odit unde? Earum, blanditiis.</p>
    <p>Quidem necessitatibus asperiores cum atque.</p>
    <p>Tenetur nesciunt aut maiores enim?</p>
    <p>Quam esse quae accusantium velit.</p>
    <p>Molestias repellat inventore repudiandae quos?</p>
    <p>Doloremque quo asperiores non eius.</p>
    <p>Harum praesentium dolorum iure quidem.</p>
    <p>A eos quia velit hic.</p>
    <p>Illo esse voluptatibus porro incidunt!</p>
    <p>Laboriosam necessitatibus architecto veniam sed?</p>
    <p>Maxime nobis perspiciatis ipsa aperiam.</p>
    <p>Distinctio dolorum veniam cum totam?</p>
    <p>Repudiandae eaque quod recusandae atque.</p>
    <p>Voluptatum ex quibusdam cum eligendi.</p>
    <p>Assumenda mollitia illo minus libero.</p>
    <p>Maxime eius doloremque voluptate corrupti!</p>
  </div>

  <div id="other"></div>
</div>

<style>
  html,
  body {
    margin: 0;
    padding: 0;
    height: 100%;
  }

  #main {
    border: solid 5px aqua;
    height: 100%;
    box-sizing: border-box;
    display: flex;
  }

  #menu {
    border: solid 5px red;
    box-sizing: border-box;
    width: 300px;
  }

  #view {
    border: solid 5px yellow;
    box-sizing: border-box;
    flex-grow: 1;
    overflow: auto;
  }

  #other {
    border: solid 5px blue;
    box-sizing: border-box;
    width: 300px;
  }

  #view p {
    border: solid 2px;
    padding: 20px;
  }
</style>