左からスライドインする固定位置と自動幅 (自動幅が必要) を持つ要素があります。
これには、 hiddenとvisibleの 2 つの状態を定義しました。表示されている場合はウィンドウの左側に配置する必要があり、非表示の場合はビューのすぐ外側に配置する必要があります。
可視状態
left: 0;
/* right: auto; */
隠し状態
right: 100%;
/* left: -element auto width */
トランジションがアニメーションなしで静的な場合、これらの状態は両方とも正常に表示されます。
代替案 1: CSS3 変換
また、動作する CSS3 変換を使用してみましたが、ブラウザ間の違いが心配です。トランジションがサポートされていない場合、トランジションは自動的に静的な変更にフォールバックしますが、CSS3 トランスフォームを使用する場合、直接のフォールバックはありません。明示的に定義する必要があります。
これは、CSS3 トランジションとトランスフォームを使用した効果のデモです。ご覧のとおり、左側のバーの幅は必要なだけ広く、非表示の状態になると左端をわずかに超えてスライドします。
代替案 2: 要素の幅を縮小する
これは、要素の幅を操作することでなんとかすることができます (自動幅をサポートするために最大/最小幅も使用します) が、これの問題は、コンテンツが移動しないことです。要素の幅が操作されていることは明らかです。コンテンツを含む要素を移動する必要があります。
質問
次のルールも満たしながら、CSS3 変換を回避する方法はありますか。
- 幅は自動でなければなりません
- 表示されている場合は、ウィンドウの左端に配置されます
- 非表示の場合、左端のすぐ外側に配置されます