Граница / Поле / отступ не 0, когда специально установлено 0

#html #css #padding #margin

#HTML #css #заполнение #поле

Вопрос:

У меня простой вопрос, где мои материалы в моем div не имеют полей. В частности, когда задано значение margin, padding и border равным 0, между элементами все еще остаются пробелы

Код:

 <div id="menu" >
<a href="#" style="margin:0;border:0;padding:0;background:red">sup</a>

<a href="#" style="margin:0;border:0;padding:0;background:red">sup</a>

</div>
 

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

Заранее спасибо: D


Новое открытие :

Я пытался превратить вышеприведенное в display:block для отображения одного поверх другого, когда я узнал, что

при добавлении этого:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 

Это не сработало

Я должен был использовать этот doctype, но сейчас он не работает.

Какие-либо решения?


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

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<div id="kingmenu"  style="position:absolute;top:90px;left:290px;width:55px;">
<a href="#"><img src="http://white-attic.com/themes/prestashop/img/kingtop.png"></a><a href="#"><img src="http://white-attic.com/themes/prestashop/img/kingbottom.png"></a>
</div>
 

проблема в том, как показано на этом скриншоте:
http://img828.imageshack.us/img828/8331/whitespace.jpg

Ответ №1:

Пробел находится в вашей разметке.

Даже если вы установите a для элементов значение inline-block (которым они не являются по умолчанию), вы все равно увидите (нормализованное) пространство, которое есть в вашем HTML.

Чтобы устранить это, вам нужно «соединить» элементы друг с другом.

ОБНОВЛЕНИЕ: теперь ваш файл должен выглядеть следующим образом:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<div id="menu" ><a href="#" style="margin:0;border:0;padding:0;background:red">sup</a><a href="#" style="margin:0;border:0;padding:0;background:red">sup</a></div>
 

Я проверил в Chrome, Firefox 6 и IE 8, что между ссылками нет пробела.

Комментарии:

1. итак, есть ли какой-либо способ устранить пробелы, кроме установки отрицательного поля?

2. Устраните его в исходном коде: запускайте <a> теги один сразу за другим.

3. @robobooga, в каком браузере? Предположительно, это означает, что вы переключились из режима quirks, но я не обнаружил DOCTYPE никакого эффекта. См. Редактирование.

4. он работает горизонтально, однако, если я хочу сделать это вертикально, похоже, это не работает

5. Вероятно, то, что вы видите, является результатом line-height . имейте в виду, что это встроенные элементы. Я воспроизвел внешний вид (я думаю), который вы получаете, и это правило должно это исправить: a { display: inline-block; height: 100%; } (Очевидно, измените селектор по мере необходимости.) Это дает дополнительное преимущество, позволяя переносить, когда серия шире, чем ее контейнер. a

Ответ №2:

Это потому, что в основном вы просто добавляете пробел. Div является блочным элементом и a встроенным элементом, поэтому в основном оба встроенных элемента разнесены.

Помните, что браузер интерпретирует пробелы.

Ответ №3:

Это потому, что новая строка в HTML интерпретируется как пробел при ее визуализации.

Попробуйте это:

 <div id="menu" >
<a href="#" style="background:red">sup</a><a href="#" style="background:red">sup</a>
</div>
 

Комментарии:

1. Привет, но путем добавления doctype, как сказано в моем вопросе. ваш метод не работает. но если я удалю doctype, он будет работать отлично. Есть ли какое-либо обходное решение?