このサイトには「利用可能なスペースを埋める」という質問がたくさんありますが、私の問題は、すでに解決策を得ているという点で少し特殊ですが、ボタンでは機能しません。これがボタンで機能しない理由と、それを機能させる方法を理解したいと思います。オーバーライドする必要があるのは、ボタン要素のブラウザスタイルにすぎないと思います。
(重要な場合は固定幅の)ラッピングdiv内に2つのフローティング要素があります。右側の要素の幅は固定されており、左側の要素は残りの幅を占める必要があります。
これは、右側の要素を固定幅とに設定しfloat: right
、左側の要素を特別なスタイルなしで残すことで実現できます。これはdivに対して完全に機能します。スパンでも機能しますが、設定display: block
した場合に限ります。ボタンについては、まったく機能しません。ブロック、インラインブロック、およびwidth
MDNで見つけたすべてのあいまいな値を試しました。
以前にボタンをdivでラップすることを考えなかった理由はわかりません。これが私が思いついたものです:
これには、overflow: hidden
ボックスの書式設定コンテキストのトリックが含まれます(これは、ここに表示されると思われましたが、どこに収まるかがわかりませんでした)。ハイライト:
- 2つのボタンは、クラスbuttonWrapperを使用してdivでラップされます。
- これらのdivは、上記の3番目の段落で概説したトリックに従ってフォーマットされています。右のdivにはフロートがあります。右と固定幅、左のdivには特別なスタイルはありません。
- ここで、ボックスフォーマットコンテキストトリックを適用します。左側のdivにはoverflow:hiddenが与えられます。これにより、右側にフローティングされたdiv用のスペースが作成されます。
- これで、左マージンを右divに適用し、その幅を変更できます。左divは常に正しいサイズになります。
- divは、必要な「使用可能な幅を埋める」効果を作成します。これで、ボタンをdivの内側に配置し、高さと幅を100%にする必要があります。
- 幅を固定したいのが左ボタンの場合は、基本的に、左右を入れ替えて上記の手順を繰り返します。