Изменить нумерацию в упорядоченном списке?

17

Вы можете изменить номер, с которого начинается упорядоченный список:

<ol start="3">
    <li>item three</li>
    <li>item four</li>
</ol>

... но есть ли способ, чтобы элементы списка имели произвольные числа, а не только последовательную нумерацию?

<ol>
    <li>item two</li>
    <li>item six</li>
    <li>item nine</li>
</ol>

Единственный способ, с помощью которого я могу это сделать, - обернуть каждый <li> в свой собственный <ol> , который, очевидно, не идеален. Поддержка HTML, Javascript и CSS приветствуется.

ps: хотя номера позиций произвольны, они все еще упорядочены, поэтому не волнуйтесь о семантике

    
задан nickf 15.06.2009 в 09:02
источник

7 ответов

18

В HTML 4.01 есть атрибут value , устаревший на <li> :

<ol>
<li value="30"> makes this list item number 30.
<li value="40"> makes this list item number 40.
<li> makes this list item number 41.
</ol>

Ответ на не-устаревший (CSS) (как часто) более элегантный, но меньше ... прямой :) spec несколько сухая; googling включает более немедленно используемые материалы, такие как это :

  

Также как продолжение нумерации   из предыдущего списка вам нужно будет   установить свойство CSS для увеличения   соответствующий счетчик. Но сделать это   начать увеличиваться с другого   отправной точкой вы можете пройти   необязательный второй параметр в   counter-reset свойство числа. Так   начиная с 5 будет выглядеть что-то   как это в вашем CSS:

ol.continue {
  counter-reset: chapter 4;     /* Resets counter to 4. */
}
     

Поскольку счетчик всегда будет сброшен   прежде чем он будет увеличен, чтобы начать   список с номером 5, нам придется   установите счетчик на 4.

    
ответ дан AakashM 15.06.2009 в 09:06
источник
12

В value есть атрибут li , хотя это устарело:

<ol>
    <li value="2">item two</li>
    <li value="6">item six</li>
    <li value="9">item nine</li>
</ol>

Страница w3schools для <li.@value> говорит:

  

Атрибут value элемента li   был устаревшим в HTML 4.01 и   не поддерживается в XHTML 1.0 Строгое DTD.

     

Примечание: На данный момент нет CSS   альтернатива для атрибута value.

(Несмотря на то, что вы сказали «использовать стили» для предупреждения об устаревании на главной странице <li> .)

ссылка на проект редактора HTML 5 для li предполагает, что он все еще действителен там ...

    
ответ дан Jon Skeet 15.06.2009 в 09:06
источник
6

Глядя на все эти ответы, я чувствую себя немного нехорошо. Вы действительно хотите использовать LI для этого? Если это означает создание «фиктивного» lis, javascript или пользовательских классов CSS, я бы начал искать другие возможности. Точка LI (на мой взгляд) НЕ управляет нумерацией. Если вам нужно самостоятельно управлять цифрами, вы используете только LI для управления стилем - как создать собственный стиль и просто придерживаться своих чисел в & span; или что-то?

    
ответ дан Benjol 15.06.2009 в 09:07
источник
2

Например -

<ol id="reverse_numbering">
    <li>foo</li>
    <li>bar</li>
    <li>baz</li>
</ol>

Это то, что вы можете сделать -

<script type="text/javascript">
    var reverse = $('reverse_numbering');
    reverse.style.listStyle='none';
    var li = reverse.getElementsByTagName('li');
    for(var i=0; i<li.length; i++) {
        li[i].insertBefore(document.createTextNode(li.length-i+'. '), li[i].firstChild);
    }
</script>

Ссылка: Форумы справки HTML .

    
ответ дан Kirtan 15.06.2009 в 09:09
источник
2

Устаревший способ HTML

<ol>
   <li>List item 1</li>
   <li VALUE=5 TYPE="A">List item E</li>
   <li>List item 3</li>
</ol>

способ CSS

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css">
ol { 
    counter-reset:item; 
 }
li {
    display:block; 
 }
li:before { 
    content:counter(item) '. '; 
    counter-increment:item; 
 }
#new_number {
    counter-reset:item 24;
 }
</style>

<!--[if IE]>
<script type="text/javascript">
window.onload=function() {
   document.getElementById('new_number').value='25';
 }
</script>
<![endif]-->

</head>
<body>

<ol>
  <li id="new_number">list item</li>
  <li>list item</li>
  <li>list item</li>
  <li>list item</li>
  <li>list item</li>
  <li>list item</li>
</ol>

</body>
</html>
    
ответ дан Eugene Yokota 15.06.2009 в 09:07
источник
1

На самом деле это даже проще, чем вы думаете. То, что вы делаете, в основном «приостанавливает» список, чтобы вы могли что-то вставить. Когда вы делаете это в тексте, вы используете тэг &lt;div&gt; . (Белки звонят сейчас? »)

CSS

...<br />

/* This style removes the indentation that &lt;ol&gt; creates. In my document it was 30pt */<br />
.pauselist {margin-left:-30pt;}
<br />
<br />
XHTML<br />
...<br />
&lt;p&gt;Text&lt;/p&gt;<br />
&lt;p&gt;Text&lt;/p&gt;<br />
&lt;ol&gt;<br />
  &lt;li&gt;Item 1&lt;/li&gt;<br />
  &lt;li&gt;Item 2<br />
    &lt;div class="pauselist"&gt;<br />
&lt;p&gt;Text&lt;/p&gt;<br />
&lt;p&gt;Text&lt;/p&gt;<br />
&lt;p&gt;Text&lt;/p&gt;<br />
&lt;!-- Okay now let's continue with the list --&gt;<br /> 
    &lt;/div&gt;<br />
  &lt;/li&gt;<br />
  &lt;li&gt;Item 3&lt;/li&gt;<br />
  &lt;li&gt;Item 4&lt;/li&gt;<br />
&lt;/ol&gt;<br />
&lt;p&gt;Text&lt;/p&gt;<br />
&lt;p&gt;Text&lt;/p&gt;<br />
<br />
<pre>

------ Результаты --------- Текст Текст

  1. Пункт 1
  2. Пункт 2

Текст Текст Текст

  1. Пункт 3
  2. Пункт 4

Текст Текст     

ответ дан SimTech 04.10.2010 в 20:56
источник
0

Я думаю, что эта проблема начинается с семантики (которая, как вы знаете, является одним из столпов создания стандартных страниц): вы хотите использовать упорядоченный список для представления неупорядоченных .

Мои предложения:

1) Используйте ul и добавьте изображения с цифрами на основе классов (это можно сделать программно, и вам нужно только создать число изображений один раз, а также дать вам варианты стилизации)

2) Используйте список определений. Я немного знаю его семантику растяжения, но если «term» (dt) «Горизонтальный», а определения (dd) - это варианты кроссворда, я думаю, что он становится семантическим. С помощью этого вы можете добавить нужные вам номера и стилизовать их, используя любой тег, который вам нравится.

Надеюсь, что это поможет.

    
ответ дан jluna 15.06.2009 в 10:59
источник