Запретить HTML Tidy добавлять элементы li

Я использую HTML Tidy для вывода красивого исходного кода HTML и в качестве окончательной проверки кодировки.

Однако он принимает очень простой список, например:

<ul id="navigation">
            <a href="index.php"><li>Summary</li></a>
            <a href="#"><li>Upload</li></a>
            <a href="accounts.php"><li>Accounts</li></a>
        </ul>

и преобразовать его в это чудовище:

 <ul id="navigation">
        <li style="list-style: none">
          <a href="index.php"></a>
        </li>
        <li id="active">Summary
        </li>

        <li style="list-style: none">
          <a href="#"></a>
        </li>
        <li>Upload
        </li>
        <li style="list-style: none">
          <a href="accounts.php"></a>
        </li>
        <li>Accounts
        </li>

      </ul>

Как мне изящно сказать ему оставить мой список в покое?

Я просмотрел эти параметры конфигурации, однако часто нахожу, что они не имеют интуитивно понятных названий или объяснений должным образом. .


person George Reith    schedule 16.12.2011    source источник


Ответы (4)


Единственный ответ: дайте ему действительную разметку для начала. Единственным допустимым дочерним элементом ul является li. Элемент a не может быть дочерним элементом ul.

<ul id="navigation">
    <li><a href="index.php">Summary</a></li>
    <li><a href="#">Upload</a></li>
    <li><a href="accounts.php">Accounts</a></li>
</ul>

Если вы хотите, чтобы весь элемент li был кликабельным, присвойте элементу a стиль display: block:

#navigation li a {
    display: block;
}
person lonesomeday    schedule 16.12.2011

На самом деле он пытается исправить вашу разметку, чтобы она соответствовала стандартам, ваши теги <li> должны располагаться рядом с тегами <a>, а не наоборот, возможно, если вы это исправите, он не будет пытаться добавлять дополнительные элементы в список.

Однако вы можете удалить часть стиля, просто измените свой css, чтобы он имел:

ul.navigation li
{
    list-style: none;
}
person Matt Lacey    schedule 16.12.2011
comment
Точно... аккуратный код просто пытается сделать его таким, каким он должен быть. - person Bas Slagter; 16.12.2011
comment
Я понимаю это, но я не беспокоюсь о проверке с помощью этого файла, я просто хочу, чтобы весь мой li был доступен для кликов, и я не сталкивался с браузером, который не мог бы это отобразить. Также я уже объявляю list-style: none; в моем css - person George Reith; 16.12.2011
comment
Браузеры могут отображать его, потому что они пытаются справиться с плохой разметкой. Если вам нужно, чтобы ссылки были прочными, вы можете настроить их на использование display: inline-block, что должно делать то, что вы хотите, если я правильно понимаю. - person Matt Lacey; 16.12.2011

Ваш список имеет недопустимую разметку; элемент ul может содержать только li элементов. На самом деле Tidy применяет наиболее разумный общий подход к исправлению такой сломанной разметки: он превращает любое содержимое, отличное от li, в элемент li, для которого блокировка списка подавляется.

Поэтому вручную измените разметку, например

<a href="index.php"><li>Summary</li></a>

to

<li><a href="index.php">Summary</a></li>

что, вероятно, то, что вы хотите. Это может потребовать внесения изменений в код CSS или JavaScript, если они ожидают текущей разметки.

person Jukka K. Korpela    schedule 16.12.2011

Переместите теги <a> в <li>:

<li><a href="index.php">Summary</a></li>
person ArVan    schedule 16.12.2011