Tenho uma lista ordenada onde gostaria que o número inicial fosse 6. Descobri que isso era compatível (agora obsoleto) no HTML 4.01. Nesta especificação, eles dizem que você pode especificar o inteiro inicial usando CSS. (em vez do start
atributo)
Como você especificaria o número inicial com CSS?
html
css
html-lists
vrish88
fonte
fonte
<ol start="">
não está mais obsoleto no HTML5 , então eu continuaria usando-o, independentemente do que o HTML4.01 diga.fonte
start="number"
é uma merda porque não muda automaticamente com base na numeração anterior.Outra maneira de fazer isso que pode atender a necessidades mais complicadas é usar
counter-reset
ecounter-increment
.Problema
Digamos que você queira algo assim:
Você poderia definir
start="3"
no terceiroli
diaol
, mas agora você precisará alterá-lo toda vez que adicionar um item ao primeirool
Solução
Primeiro, vamos limpar a formatação de nossa numeração atual.
Faremos cada li mostrar o contador
Agora, só precisamos ter certeza de que o contador zera apenas no primeiro em
ol
vez de em cada um.Demo
http://codepen.io/ajkochanowicz/pen/mJeNwY
Agora posso adicionar quantos itens a qualquer lista e a numeração será preservada.
fonte
ol li {...}
deveria serol li:before {...}
- caso contrário, esta é a solução perfeita, obrigado!Estou surpreso por não ter conseguido encontrar a resposta neste tópico.
Encontrei esta fonte , que resumi abaixo:
Para definir o atributo start para uma lista ordenada usando CSS em vez de HTML, você pode usar a
counter-increment
propriedade da seguinte maneira:counter-increment
parece ser 0 indexado, então para obter uma lista que começa em 4, use3
.Para o seguinte HTML
Meu resultado é
Olha meu violino
Veja também a referência do wiki W3
fonte
Como outros sugeriram, pode-se usar o
start
atributo dool
elemento.Alternativamente, pode-se usar o
value
atributo doli
elemento. Ambos os atributos estão marcados como obsoletos no HTML 4.01 , mas não no HTML 5 (ol
eli
).fonte
Iniciar a numeração de uma lista ordenada em um número diferente do valor padrão ("1") requer o
start
atributo. Este atributo foi permitido (não obsoleto) na especificação HTML 4.01 (HTML 4.01 ainda não era uma "Especificação Substituída" no momento em que esta questão foi postada) e ainda é permitido na especificação HTML 5.2 atual . Ool
elemento também tinha umstart
atributo opcional no DTD transicional do XHTML 1.0, mas não no DTD estrito do XHTML 1.0 (pesquise a stringATTLIST ol
e verifique a lista de atributos). Portanto, apesar do que alguns dos comentários mais antigos dizem, ostart
atributo não foi preterido ; ao contrário, era inválidonos DTDs estritos de HTML 4.01 e XHTML 1.0. Apesar do que afirma um dos comentários, ostart
atributo não é permitido noul
elemento e atualmente não funciona no Firefox e Chromium.Observe também que o separador de milhares não funciona (nas versões atuais do Firefox e do Chromium). No seguinte trecho de código,
10.000
será interpretado como10
; o mesmo se aplica a10,000
. Portanto, não use o seguinte tipo decounter
valor:Portanto, o que você deve usar é o seguinte (nos raros casos em que valores superiores a 1000 são obrigatórios):
Algumas das outras respostas sugerem o uso da propriedade CSS
counter
, mas isso contraria a separação tradicional de conteúdo e layout (em HTML e CSS, respectivamente). Usuários com certas deficiências visuais podem usar suas próprias folhas de estilo e oscounter
valores podem ser perdidos como resultado. O suporte ao leitor de tela paracounter
também deve ser testado. O suporte do leitor de tela para conteúdo em CSS é um recurso relativamente recente e o comportamento não é necessariamente consistente. Consulte Leitores de tela e CSS: estamos saindo do estilo (e entrando no conteúdo)? por John Northup no blog WebAIM (agosto de 2017).fonte
No caso de as listas serem aninhadas, deve haver uma manipulação deixando de fora os itens da lista aninhados, o que fiz ao verificar que o avô não é um item da lista.
fonte
Com CSS é um pouco complicado cobrir o caso de haver itens de lista aninhados, portanto, apenas o primeiro nível da lista obtém a numeração personalizada que não interrompe a cada nova lista ordenada. Estou usando o combinador CSS '>' para definir os caminhos possíveis para os itens da lista que receberão uma numeração personalizada. Veja https://www.w3schools.com/css/css_combinators.asp
fonte
Obviamente, nem @início de uma lista ordenada <ol> nem @valor de um item de lista <li> podem ser definidos via CSS. Vejo https://www.w3schools.com/css/css_list.asp
Substituir a numeração por um contador em CSS parece ser a solução melhor / mais rápida / infalível e há outros que a promovem, por exemplo, https://css-tricks.com/numbering-in-style/
Com JavaScript puro é possível definir @value para cada item da lista, mas isso é mais lento do que CSS. Não é nem mesmo necessário verificar se o item da lista pertence a uma lista ordenada <ol>, porque as listas não ordenadas são omitidas automaticamente.
fonte