Acontece que uma vez encontrei algum comportamento anormal na lista UL no trabalho.
Além disso, vi a postagem http://bbs.blueidea.com/thread-2984871-1-1.html ontem, então testei vários atributos do estilo de lista e descobri um fenômeno interessante.
Vamos primeiro dar uma olhada na explicação do estilo de lista no manual CSS.
Definição e uso
O atributo abreviado de estilo de lista define todas as propriedades da lista em uma declaração.
ilustrar
Esta propriedade é uma propriedade abreviada que abrange todas as outras propriedades de estilo de lista. Como se aplica a todos os elementos com exibição de item de lista, só pode ser usado em elementos li em HTML e XHTML normais, mas na verdade pode ser aplicado a qualquer elemento e é herdado pelo elemento item de lista.
As seguintes propriedades podem ser definidas em ordem:
• tipo de estilo de lista
•posição em estilo de lista
•imagem em estilo de lista
Não é necessário definir um dos valores. Por exemplo, "list-style:circle inside;" também é permitido. As propriedades que não estão configuradas usam seus valores padrão.
Valor padrão: disco fora de nenhum
No trabalho diário, muitas vezes é necessário redefinir css em ul e li para ocultar os símbolos da lista.
A forma de escrita mais comumente usada é Ul,li,ol{list-style:none;} (algumas pessoas também usam ul,li,ol{list-style-type:none;})
Execute a caixa de código
[Ctrl+A Selecionar todas as dicas: você pode modificar parte do código primeiro e depois pressionar Executar]
Não há problema com esta página no IE6, 7, 8 e FF.
Mas o que não podemos ignorar é que list-style: contém três atributos:
tipo de estilo de lista
posição de estilo de lista
estilo de lista-img
Se você não prestar atenção a esses três atributos, o estilo de lista às vezes causará problemas.
Por exemplo, quando ul, após flutuar, precisa de display:inline para resolver o problema de margem dupla no IE6, algo estranho acontece:
Execute a caixa de código
[Ctrl+A Selecionar todas as dicas: você pode modificar parte do código primeiro e depois pressionar Executar]
.ul01{float:esquerda;display:inline;}
.ul01,.ul01 li{estilo de lista: nenhum;}
A página acima ainda é normal no IE8 e ff, mas no IE6 e 7 há uma distância entre o interior de ul e li.
Pode-se observar que quando definimos list-style:none, embora o símbolo da lista não apareça, sua posição ainda permanece no IE6 e 7.
Veja quais atributos esta UL possui no FF
Como pode ser visto na imagem, quando list-style:none é definido em css, ele não tem efeito na posição do estilo de lista. Ainda é a configuração padrão do navegador FF e o valor está fora.
No IE6 e 7, list-style-position: inside provavelmente será o padrão
Para confirmar isso, mudei list-style:none para list-style:none dentro de none e testei novamente
Execute a caixa de código
[Ctrl+A Selecionar todas as dicas: você pode modificar parte do código primeiro e depois pressionar Executar]
Depois de executá-lo, você descobrirá que no IE6 e 7 ele se comporta exatamente da mesma forma que list-style:none.
Então, especulo que no IE6 e 7, quando UL tem atributos float:left e display:inline e list-style:none está definido, list-style-position também assume como padrão inside;
Portanto, a conclusão a que cheguei é que no IE6 e 7, quando o UL não possui float:left;display:inline;:
Independentemente de existir o atributo list-style:none, os símbolos da lista ficam ocultos e não ocupam espaço (5, 6 no código abaixo)
Quando UL possui o atributo float:left;display:inline;
list-style:none, o símbolo da lista está oculto, mas a posição ainda permanece (list-style-position:inside (UL1, ul3 no código abaixo)
list-style:none não está definido; o caractere da lista está oculto e não ocupa uma posição (list-style-position:outside) (código UL4)
O UL02 teve um desempenho relativamente bom em todos os navegadores participantes do teste.
Este último trecho de código compara o desempenho do estilo de lista sob várias circunstâncias, especialmente o desempenho do 4, 5 e 6 no IE6 e 7.
Execute a caixa de código
[Ctrl+A Selecionar todas as dicas: você pode modificar parte do código primeiro e depois pressionar Executar]
Ao comparar os resultados de desempenho do código acima, penso:
No Firefox, desde que o tipo de estilo de lista seja nenhum, não importa se o valor da posição do tipo de lista está fora ou dentro, o estilo de lista pode ser bem escondido. No IE6 e 7, apenas estilo de lista: nenhum está definido. ., não é suficiente para resolver todos os problemas, então acho melhor usar list-style:none fora de none quando o css for redefinido.