テキストボックス、ドロップダウンリスト、送信ボタンがあるとします。それらはすべてインライン要素です。つまり、「公式に」マージン、パディング、幅、高さのプロパティは無視する必要があります(実際にはそうではありません)。高さをボタンに設定する正しい方法を実行する場合は、display:blockのように記述してから、高さを定義します。ただし、ブロックレベルの要素が予期せず拡張されるという考慮事項があるため、幅を固定値に設定することをお勧めします。問題は、ボタンのテキストに基づいて動的に定義できるため、幅がわからないことです。
別のシナリオ:とを使用してメニューを作成したいと思い<ul>
ます<li>
。いくつかのアイテムを左にグループ化し、いくつかを右に伸ばして、水平に配置したいと思います。<ul>
とは両方とも<li>
ブロックレベルの要素です。メニューに使用可能なすべての水平方向のスペースを取り、アイテムの高さで遊んだり、メニューアイテムを両側に押したりしたいので、ブロックモードで問題ありません。タスクを実行するには、float:leftとfloat:rightを使用します。ただし、メニュー要素はブロック要素であるため、メニュー要素に幅を設定する必要があります。アイテムのテキストが異なる可能性があるため、幅はわかりません。しかし、すべてがそのままうまくレンダリングされているようです。
フロートや幅を設定せずにブロック要素としてレンダリングするように強制された両方のインライン要素、またはリストアイテムの例に問題があることに気づきませんでした。IE7、FF3、Opera 9、Safariでは、現在のバージョンに関係なく問題なく動作します。問題は残っています:これらのインラインからブロックへの要素または実際のブロック要素が浮いているのに幅が設定されていないことを心配する必要がありますか、それともすべてをそのままにしておく必要がありますか?私は何かが足りないのでしょうか、それとも単に正しくなると期待してはいけないものの1つに過ぎないのでしょうか。