調べてみると、私はかつて職場で UL リストの異常な動作に遭遇したことがありました。
さらに、昨日http://bbs.blueidea.com/thread-2984871-1-1.htmlの投稿を見たので、list-style のさまざまな属性をテストしたところ、興味深い現象を発見しました。
まずはCSSマニュアルのlist-styleの説明を見てみましょう。
定義と使用法
list-style 省略表現属性は、すべてのリスト プロパティを 1 つの宣言で設定します。
説明する
このプロパティは、他のすべてのリスト スタイル プロパティをカバーする省略形のプロパティです。 list-item 表示ではすべての要素に適用されるため、通常の HTML や XHTML では li 要素でしか使用できませんが、実際にはどの要素にも適用でき、list-item 要素に継承されます。
次のプロパティを順番に設定できます。
•リストスタイルタイプ
•リストスタイルの位置
•リストスタイル画像
たとえば、「list-style:circle inside;」などの値を設定する必要はありません。設定されていないプロパティには、デフォルト値が使用されます。
デフォルト値: ディスク外側なし
日常の作業では、リストのシンボルを非表示にするために ul と li で css リセットを実行する必要があることがよくあります。
最も一般的に使用される書き方は Ul,li,ol{list-style:none;} です (ul,li,ol{list-style-type:none;} を使用する人もいます)。
コードボックスを実行
[Ctrl+A すべて選択 ヒント: 最初にコードの一部を変更してから実行を押すことができます]
このページはIE6、7、8、FFでも問題ありません。
しかし無視できないのは、 list-style: には次の 3 つの属性が含まれていることです。
リストスタイルタイプ
リストスタイルの位置
リストスタイルイメージ
これら 3 つの属性に注意しないと、リスト形式で問題が発生することがあります。
たとえば、IE6 の二重マージン問題を解決するために ul がフローティングになった後、display:inline を必要とする場合、何か奇妙なことが起こります。
コードボックスを実行
[Ctrl+A すべて選択 ヒント: 最初にコードの一部を変更してから実行を押すことができます]
.ul01{フロート:左;表示:インライン;}
.ul01,.ul01 li{リストスタイル:なし;}
上記のページは IE8 と ff ではまだ正常ですが、IE6 と 7 では ul と li の内側の間に距離があります。
list-style:none を定義すると、リスト記号は表示されませんが、その位置は IE6 および 7 に残っていることがわかります。
この UL が FF でどのような属性を持っているかを確認します
図からわかるように、css で list-style:none が定義されている場合、list-style-position には影響がありません。これは FF ブラウザのデフォルト設定のままであり、値は外側になります。
IE6 および 7 では、list-style-position: inside がデフォルトになる可能性があります。
これを確認するために、none 内の list-style:none を list-style:none に変更し、再度テストしました。
コードボックスを実行
[Ctrl+A すべて選択 ヒント: 最初にコードの一部を変更してから実行を押すことができます]
実行すると、IE6 および 7 では list-style:none とまったく同じように動作することがわかります。
したがって、IE6 および 7 では、UL に float:left 属性と display:inline 属性があり、list-style:none が設定されている場合、list-style-position もデフォルトで inside になるのではないかと推測します。
したがって、私が得た結論は、IE6 および 7 では、UL に float:left;display:inline; がない場合です。
list-style:none 属性の有無に関係なく、リスト シンボルは非表示になり、スペースを占有しません (以下のコードの 5、6)。
UL に float:left;display:inline; 属性がある場合
list-style:none、リスト シンボルは非表示になりますが、位置は残ります (list-style-position:inside) (以下のコードでは UL1、ul3)。
list-style:none が設定されていない場合、リスト文字は非表示になり、位置を占めません (list-style-position:outside) (コード UL4)
UL02 は、テストに参加したすべてのブラウザで比較的良好なパフォーマンスを示しました。
この最後のコードでは、さまざまな状況下でのリスト スタイルのパフォーマンス、特に IE6 および 7 での 4、5、および 6 のパフォーマンスを比較します。
コードボックスを実行
[Ctrl+A すべて選択 ヒント: 最初にコードの一部を変更してから実行を押すことができます]
上記のコードのパフォーマンス結果を比較すると、次のようになります。
Firefox では、list-style-type が none である限り、list-stype-position の値が外側でも内側でも、list-style は適切に非表示にできます。IE6 および 7 では、list-style:none のみが設定されます。 . 、すべての問題を解決するには十分ではないため、CSS リセット時に none の外側で list-style:none を使用する方が良いと思います。