Проблемы совместимости IE7 - PullRequest
3 голосов
/ 11 апреля 2011

Я (очевидно) новичок в веб-разработке, и я только сейчас понимаю, что мои сайты довольно испорчены в некоторых версиях IE, но как мне их исправить? Как узнать, что нужно изменить в CSS и где, когда несколько слоев и элементов div не отображаются должным образом?

Пример: http://www.jwstudio.us/bkpa

Есть ли ресурсы для исправлений / совместимости IE CSS? Как насчет расположения и цветовых различий между браузерами Safari / Apple и Windows?

Ответы [ 5 ]

3 голосов
/ 11 апреля 2011

Несколько советов:

Чтение http://quirksmode.org/ - множество полезной информации там.


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


Вместо того, чтобы писать <body>, напишите:

<!--[if lt IE 7 ]> <body class="ie6"> <![endif]--> 
<!--[if IE 7 ]>    <body class="ie7"> <![endif]--> 
<!--[if IE 8 ]>    <body class="ie8"> <![endif]--> 
<!--[if IE 9 ]>    <body class="ie9"> <![endif]--> 
<!--[if gt IE 9]>  <body> <![endif]-->
<!--[if !IE]><!--> <body> <!--<![endif]-->

Затем в вашем CSS вы можете написать что-то вроде:

.someclass {
    loads of normal CSS
}

.ie6 .someclass {
    position:relative;
    top:-20px;
}

Если вы хотите увеличить что-то на 20 пикселей, но только в IE6.Это поможет вам ориентироваться на старые браузеры с минимальными хлопотами и не беспокоиться о том, что вы портите вещи в других местах!


Используйте сценарии, такие как ie9.js , чтобы обновить старый IE для использованиямножество функций из более поздних IE, а также исправление некоторых ошибок глупости. CSSPie - еще один полезный инструмент для работы с радиусами границ, теней и градиентов для работы в этих древних браузерах!


Различия в цвете, вероятно, связаны с тем, что ваши изображения содержат цветовой профильиспользуйте что-то вроде imageoptim (OSX), чтобы удалить лишнюю информацию, такую ​​как эта, перед тем как вывести ее в Интернет, или сохраните ее для веб-приложений из Photoshop.


Надеюсь, что это полезно!

2 голосов
/ 11 апреля 2011

Вот два надежных ресурса в дополнение к причудливому режиму, о которых упоминал Рич Б.

http://haslayout.net/css/

http://www.positioniseverything.net/explorer.html

Веселись. ;)

Другим более стандартным использованием условных комментариев является размещение ссылок на таблицы стилей, т.е. (вместо того, чтобы менять классы тела - но это действительно интересный метод, которого я раньше не видел!)

1 голос
/ 12 апреля 2011

Ресурсы, которые вам понадобятся:

Во-первых, некоторые сайты с диаграммами совместимости показывают, какие функции будут работать в различных браузерах:

  1. Quirksmode.org - http://www.quirksmode.org/css/contents.html
  2. CanIUse.com - http://caniuse.com/

Далее, есть несколько мест для хаков ("Polyfils") для улучшения совместимости:

  1. Modernizr - http://modernizr.com/
  2. CSS3Pie - http://www.css3pie.com/
  3. IE7.js Дина Эдвардса - http://code.google.com/p/ie7-js/
  4. Коллекция Polyfills Модернизра - https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-browser-Polyfills

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

1 голос
/ 11 апреля 2011

Существует ряд решений, которые вы можете попробовать.

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

<!-- [if IE]>
<link type="text/css" rel="stylesheet" href="/path/to/style.css" />
<[endif]-->

Во-вторых, Google управляет так называемым Chrome Frame, который по сути является просто браузером Chrome в IE. Это немного сложнее на стороне клиента, но решает подавляющее большинство проблем, которые IE имеет с рендерингом.

Более подробную информацию о Chrome Frame можно найти здесь здесь .

Изменить:

Я бы также порекомендовал отключить поддержку IE6, поскольку браузеру уже около 10 лет, и большинство людей уже обновились.

0 голосов
/ 12 апреля 2011

Прежде всего вы должны использовать какой-либо сброс.Сброс CSS сделает игровое поле намного более ровным при кодировании кросс-браузер.

См .: http://developer.yahoo.com/yui/reset/

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

При создании сайта вы должны регулярно проверять его в каждом браузере при добавлении кода.В противном случае вы можете получить снежный ком из-за плохого кода.По мере знакомства с особенностями IE вы будете более эффективно кодировать кросс-браузер.

Также я бы избегал использования такого количества атрибутов позиции (то есть, «позиция: относительная»).Ваш макет довольно простой;не должно быть причин для стольких.Если вы так сильно полагаетесь на них, вам следует пересмотреть структуру своего кода.

...