Нежелательное пространство между элементами списка

0

У меня есть divs внутри каждого элемента списка, и элементы списка, кажется, имеют пробел перед каждым элементом списка в IE и FF. Я не совсем уверен, почему он это делает, потому что он отлично смотрится в Chrome. Я искал в Интернете и пытался помещать margin и padding в 0, а также пытался поместить код в одну строку, но я не мог избавиться от пространства над моим div. У divs, которые у меня есть, есть jquery, прикрепленный к нему, поэтому я не уверен, что это повлияет на него тоже? Я проверил онлайн, некоторые говорят, что только li должен находиться внутри ul/ol, поэтому я не уверен, что это еще одна причина нежелательного пространства?

Просто интересно, знает ли кто-нибудь, есть ли способ избавиться от нежелательного пространства? Если нет, мне придется использовать другой способ (без списка) для достижения намеченного результата.

Заранее спасибо.

мой код

<ol>
<li><div class="doSomething">testing1</div></li>
<li><div class="doSomething">testing2</div></li>
<li><div class="doSomething">testing3</div></li>
</ol>

результат выглядит следующим образом:

1. 
  testing1
2. 
  testing2
3. 
  testing3
  • 1
    div не может быть внутри элементов списка (недействительный html).
  • 0
    Попробуйте сначала использовать что-то вроде normalise.css и посмотрите, выглядит ли оно по-разному в каждом браузере
Показать ещё 8 комментариев
Теги:

4 ответа

1

Я предполагаю, что эти элементы списка отображаются: inline-block; здесь, как вы можете удалить пространство:

HTML

<ul>
    <li>Item1</li><!--
    --><li>Item2</li><!--
    --><li>Item3</li>
</ul>

Добавление этих параметров заставит браузер интерпретировать остальную часть строки как комментарий html, удалив ненужное пространство

  • 0
    Достижение этого с помощью CSS было бы разумнее.
  • 0
    Вам придется использовать отрицательные поля, которые зависят от размера шрифта, я предпочитаю добавлять комментарии html, чем использовать произвольные отрицательные поля. Встроенные блоки будут интерпретировать пустое пространство как символ. Вот скрипка jsfiddle.net/T43TL
Показать ещё 4 комментария
0

Попробуй это. Это может вам помочь.

ol {font-size:0}
ol li {font-size:12px;}
0

Я не уверен, что <div> внутри элемента <li> действительно действителен.
(Я только что проверил, и в соответствии с комментариями к OP, да, <div> действительны в тегах <li>)

Однако, игнорируя это, попробуйте удалить пробел между элементами...

<ol>
  <li><div class="doSomething">testing1</div></li
  ><li><div class="doSomething">testing2</div></li
  ><li><div class="doSomething">testing3</div></li>
</ol>
0

Если вы хотите сделать это только с помощью CSS, это возможно. Эта проблема показывается, когда вы работаете с элементами встроенного блока, как указал Йонас Груманн. Он исходит из пространства, которое браузеры автоматически добавляют между встроенными элементами.

вы можете избавиться от него, установив размер шрифта на 0 в родительском элементе и затем вернув его в нормальное состояние для дочерних элементов:

ol {
    font-size: 0;
}

ol li {
    font-size: 14px;/*Or whatever size you need*/
}

Однако, и я не уверен в этом, это решение может иметь некоторые проблемы для использования браузером Android.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню