Странный разрыв между <отделением> элементы в IE, не в FF или Opera

Большинство языков в наше время - например, жемчуг (упоминание Jon Ericson), php, JavaScript - имеет соединение () функция или метод, и это - безусловно самое изящное решение. Меньше кода является лучшим кодом.

В ответ на Mendelt Siebenga, если бы Вы действительно требуете скрученного вручную решения, я пошел бы с тернарным оператором для чего-то как:

separator = ","
foreach (item in stringCollection)
{
    concatenatedString += concatenatedString ? separator + item : item
}
6
задан Glorfindel 2 April 2019 в 19:59
поделиться

6 ответов

IE в Windows 7 - это IE8

Я взглянул на него с помощью IE7, и пробел, похоже, вызван изображением в div 'header'. Если вы посмотрите на него с помощью такого инструмента, как панель инструментов IE Developer, вы увидите границы вокруг объектов на странице.

Извините, я не могу вставить изображение, но постараюсь описать его: после изображения есть элемент #text, который IE7 переносит на новую строку. если вы измените стиль на img, чтобы включить плыть налево; Это решает проблему для меня.

Надеюсь, это поможет! (Дайте мне знать, если вам нужно больше ясности)

1
ответ дан 9 December 2019 в 22:38
поделиться

Я сталкивался с этой проблемой миллиард раз. Добавьте это в свой CSS:

#header img { vertical-align: bottom }

В IE до версии 7 включительно есть забавная ошибка, когда он обрабатывает некоторые пробелы (действительно, пустой текстовый узел) как настоящий текстовый узел и выравнивает изображение, как если бы там был текст. также в элементе.

Другой вариант - объявить изображение как элемент уровня блока:

   #header img { display: block }

Этот CSS можно безопасно добавить в ваш глобальный файл, он не будет влиять на то, как другие браузеры отображают страницу.

8
ответ дан 9 December 2019 в 22:38
поделиться

Все браузеры имеют разные поля и отступы по умолчанию. В этом случае я предполагаю, что настройки по умолчанию IE7 сбивают вас с толку. Есть два общих решения проблемы. Вы можете установить свои собственные поля и отступы на уровне html, body:

html, body {
    margin: 0;
    padding: 0;
}

или вы можете использовать условные комментарии IE для загрузки отдельных таблиц стилей для разных версий IE. В последний раз я проверял, что условные комментарии были сочтены лучшим решением, потому что настройки браузера по умолчанию обеспечивают некоторую полезность.

0
ответ дан 9 December 2019 в 22:38
поделиться

В этом вопросе не так много полезной информации (html или картинки, которые работают). Итак, вот случайное предположение.

У меня были ситуации, когда разрыв строки или пробелы между элементами могли вызвать вертикальное пространство между элементами. Попробуйте разместить закрывающий и открывающий теги сразу рядом друг с другом и посмотрите, решит ли это проблему.

0
ответ дан 9 December 2019 в 22:38
поделиться

Промежуток является частью текстовой строки, где находится изображение меню, потому что изображение является встроенным элементом, поэтому оно размещается на базовой линии текстовой строки. Промежуток - это расстояние от базовой линии текста до нижнего края строки, то есть пространство, используемое для висящих символов, таких как 'g' и 'j'.

Простое добавление display: block; к стилю изображения решает проблему. Он превращает элемент изображения из встроенного элемента в блочный, так что он помещается не в базовую строку текста, а как отдельный элемент.

1
ответ дан 9 December 2019 в 22:38
поделиться

Джейсон прав, что это ошибка в том, как IE обрабатывает пробельные символы в html... рассматривая их как текстовый узел. Хотя я не думаю, что это уникально для изображений. Кажется, я видел такое поведение и с div'ами. В качестве глобального изменения вы можете попробовать применить vertical-align:bottom как к изображениям, так и к div. Хотя я не знаю, к какому хаосу это может привести.

Но самое быстрое и грязное решение - просто удалить пробелы. Отстой, но измените что-то вроде этого:

blorg

На это:

/>

blorg

Я предупредил, что это быстро и грязно. Но это работает.

0
ответ дан 9 December 2019 в 22:38
поделиться