Неизвестные пробелы, появляющиеся внутри <div>без отступов или полей - PullRequest
11 голосов
/ 28 октября 2010

У меня возникла странная проблема с пробелами в проекте, который я строю.

Я создал <div> для элементов голосования - в нем есть кнопка повышения, уменьшение и общее количество голосов,каждый внутри своего собственного элемента <div> и использования <img> для кнопок.

Источник:

<div class="votebox">
  <div class="vote"><img src="upvote.png" /></div>
  <div class="votetotal">15</div>
  <div class="vote"><img src="downvote.png" /></div>
</div>

В мини-сбросе в моем CSS оба <div> и *Элементы 1012 * определены для отображения без полей или отступов, и FireBug подтверждает, что эти конкретные элементы не имеют полей или отступов, но я вижу, что между нижними частями элементов <img> и нижней частью их соответствующих содержащих `элементов добавляется пробел..

Я добавил следующий CSS-код для отображения рамки вокруг каждого элемента:

.votebox * {
  border: 1px #000 solid;
}

, и вот как это отображается в Firefox 3.6 (да, это изображения голосования StackOverflow .. I 'используя их в качестве заполнителей на данный момент):


Теперь очевидный ответ на эту проблему состоит в том, чтобы просто установить класс «голосование», чтобы иметь явную высоту изображений(и я сделаю это, возможно, даже выбрав CSS-спрайты вместо <img> s), но мне гораздо больше интересно узнать , почему эти элементы отображаются таким образом (это должно бытьпроект самообучения в конце концов).

Может ли кто-нибудь пролить свет на это для меня?


Редактировать: Стив Н указал мне, что я должен использовать схему, скореечем граница, чтобы показать внешние края элементов.Я сделал это изменение, а также разделил элементы в CSS, чтобы они отображались разными цветами.

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


Как выможно увидеть, проблема немного отличается от того, что я думал.Похоже, что под изображением есть некоторые пробелы, но это усугубляется тем фактом, что нижнее изображение, кажется, немного визуализируется вне его содержащего <div>.Это кажется мне странным.

Ответы [ 3 ]

16 голосов
/ 28 октября 2010

Изображения в HTML являются встроенными элементами и по умолчанию размещаются в базовой строке шрифта, так что, вероятно, вы видите пространство для спусковых устройств.Обычным способом решения этой проблемы является либо установка для них display: block или vertical-align: bottom.

РЕДАКТИРОВАТЬ: Кстати, вы можете форматировать изображения с помощью CSS, как и любой другой элемент, так что вы, скорее всего, скорее всего отбросите лишние div вокруг изображения.

0 голосов
/ 28 октября 2010

Вы используете строгий doctype, поэтому

.votebox img{display:block;}

Нужно сделать трюк

0 голосов
/ 28 октября 2010

Зависит от типа документа, который вы используете. Если вы используете переходный режим (<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">), он будет отображаться так, как вы хотите.

пример с переходным: http://jsbin.com/icesi

пример со строгим: http://jsbin.com/icesi/2

Соответствующее утверждение, которое может помочь вам понять проблему, заключается в следующем

Вот еще один пример. Ты можешь иметь обнаружил, что установка размера шрифта: средний приводит к разным размерам шрифтов в Проводник против Навигатора. Это происходит из-за того, как интернет Интерпретатор Explorer для Windows интерпретируется командой намерение спецификации CSS. Чтобы оставаться в соответствии с Версия для Windows, Internet Explorer для Макинтош эмулировал свое поведение в серия 4.х. Если вы поставили IE5 / Mac в режим совместимости с ошибками, это будет продолжать обрабатывать размер шрифта: средний, как IE4.x / Win. В строгом Тем не менее, режим будет действовать как навигатор делает, что на самом деле правильно интерпретация в соответствии с W3C.

Источник: http://oreilly.com/pub/a/javascript/synd/2001/08/28/doctype.html?page=2

...