Comments 64
"Режим совместимости" в IE это зло, потому что блочная модель работает неправильно.
Хорошее дополнение, спасибо.
Спасибо! Как раз во время :)
Там есть законсперированное примечание, из которого можно понять, что все изложенное годится, если не указывать доктайп.
(Примечание. Нужно лишь помнить, что для MSIE 7 есть более простое решение для правильной работы свойства fixed — указание доктайпа.)
(Примечание. Нужно лишь помнить, что для MSIE 7 есть более простое решение для правильной работы свойства fixed — указание доктайпа.)
На всякий случай напоминаю, что конструкции с подчёркиванием типа _position:absolute; в IE7 "пофикшены" и для него нужно использовать например &position:absolute;
Думаю, стоит также заметить, что такое лучше вообще не использовать. :) Для этого есть conditional comments.
Это имхо плохая идея, поскольку требует уродовать код html и плодить сущности в виде отдельных css без надобности.
На мой взгляд более корректным решением, чем хаки css является только прямое следование стандартам и отказ от поддержки ошибок IE.
PS никогда не понимал почему верстальщик должен считать нормальным разное поведение разных браузеров и даже их версий в простых моментах, хорошо описанных в стандартах. Если браузер не выполняет стандарт, значит браузер не доделан. А все эти "conditional comments" это способ выключить свет вместо уборки мусора в доме.
На мой взгляд более корректным решением, чем хаки css является только прямое следование стандартам и отказ от поддержки ошибок IE.
PS никогда не понимал почему верстальщик должен считать нормальным разное поведение разных браузеров и даже их версий в простых моментах, хорошо описанных в стандартах. Если браузер не выполняет стандарт, значит браузер не доделан. А все эти "conditional comments" это способ выключить свет вместо уборки мусора в доме.
интересная позиция конечно =)
т. е. ИЕ — не поддерживает стандарты полностью, значит на него можно забить?
Интересно, как по вашему, с таким верстальщиком кто-нибудь будет работать?
т. е. ИЕ — не поддерживает стандарты полностью, значит на него можно забить?
Интересно, как по вашему, с таким верстальщиком кто-нибудь будет работать?
>На мой взгляд более корректным решением, чем хаки css является только прямое следование стандартам и отказ от поддержки ошибок IE.
И как, успешно применяете это решение? ;)
Поймите, веб-стандарты - это не самоцель. При всей их важности, первый приоритет веб-разработчика - это доступность. Доступность контента с любого браузера, с любого устройства, при любой конфигурации.
Ратовать за веб-стандарты и при этом плевать на 50% посетителей - это совершеннейший абсурд. Вы создаете веб-сайты не для w3c, а для людей! Стандарты - это лишь средство для достижения совершенной доступности сайтов и людям, и машинам, в то время как некоторые разработчики возводят его в ранг фетиша. Это неправильно.
И как, успешно применяете это решение? ;)
Поймите, веб-стандарты - это не самоцель. При всей их важности, первый приоритет веб-разработчика - это доступность. Доступность контента с любого браузера, с любого устройства, при любой конфигурации.
Ратовать за веб-стандарты и при этом плевать на 50% посетителей - это совершеннейший абсурд. Вы создаете веб-сайты не для w3c, а для людей! Стандарты - это лишь средство для достижения совершенной доступности сайтов и людям, и машинам, в то время как некоторые разработчики возводят его в ранг фетиша. Это неправильно.
Совершенно с вами согласен в контексте настоящего. Но будущее не за нынешним винегретом ошибок браузеров и хаков "тут играем, а тут рыбу заворачивали". Всё это переходный период. Смотрите в будущее. Кроме html-вёрстки такого бардака нет ни в одной области IT. Так не может продолжаться вечно.
Значит, вы, считаете, что смотрите в будущее, полагаясь в своём коде на ошибки браузеров?
Да, так не может продолжаться вечно, но ситуация существенно улучшается. Скажем, поддерживать отдельно мне приходится только IE6, - IE7 в подавляющем кол-ве случаев работает так, как и ожидалось. Когда наступит время, я просто уберу лишнюю строчку комментариев, в то время как вы будете тщательно вычищать от гадости весь CSS-код, выискивая эти эксплоиты. При использовании хаков (при том, что это никаким образом вообще не влияет на семантику документа) вам гораздо труднее поддерживать код - на это уходит больше времени, существенно повышается кол-во ошибок, вы можете запросто в этих всех уловках запутаться. В моём же случае всё проще простого - мой стандарто-совместимый код совершенно чист, вся грязь - всего лишь в никому ненужных комментариях.
Да, так не может продолжаться вечно, но ситуация существенно улучшается. Скажем, поддерживать отдельно мне приходится только IE6, - IE7 в подавляющем кол-ве случаев работает так, как и ожидалось. Когда наступит время, я просто уберу лишнюю строчку комментариев, в то время как вы будете тщательно вычищать от гадости весь CSS-код, выискивая эти эксплоиты. При использовании хаков (при том, что это никаким образом вообще не влияет на семантику документа) вам гораздо труднее поддерживать код - на это уходит больше времени, существенно повышается кол-во ошибок, вы можете запросто в этих всех уловках запутаться. В моём же случае всё проще простого - мой стандарто-совместимый код совершенно чист, вся грязь - всего лишь в никому ненужных комментариях.
1. Мне не придётся вычищать гадости поскольку они просто игнорируются браузерами не подверженными хаку.
2. Кроме того лично я привык хаки выносить в отдельные секции файла, чтобы править код для разных браузеров отдельно. Так что долго ходить по файлу (заметьте одному единственному) мне не прийдётся.
3. Но если я всё же решу очистить код, то трогать html мне совсем не нужно. А это бывает весьма важно когда на сайте десятки тысяч страниц. Даже если они динамические, то их содержимое поменялось и требует полной переиндексации и (по необходимости) перевыборки клиентами (ведь last-modified должен показывать время такого изменения очищая кэши и индексы поисковиков). Замена одного CSS файла в такой атмосфере это просто пустяки.
2. Кроме того лично я привык хаки выносить в отдельные секции файла, чтобы править код для разных браузеров отдельно. Так что долго ходить по файлу (заметьте одному единственному) мне не прийдётся.
3. Но если я всё же решу очистить код, то трогать html мне совсем не нужно. А это бывает весьма важно когда на сайте десятки тысяч страниц. Даже если они динамические, то их содержимое поменялось и требует полной переиндексации и (по необходимости) перевыборки клиентами (ведь last-modified должен показывать время такого изменения очищая кэши и индексы поисковиков). Замена одного CSS файла в такой атмосфере это просто пустяки.
Тут есть ещё одна особенность.
Microsoft постоянно разными способами создаёт "игру в одни ворота". То для отображения прозрачного png они требуют убрать его из отображения других браузеров (именно так выглядит предложенный ими способ с прозрачным gif вместо оригинального png). Такой же игрой выглядят и условные комментарии вы можете полагаться на на наш механизм указания на версии глючных браузеров. Это создание фичи вместо устранения бага, именно то, что я назвал выключением света вместо уборки дома.
Мне не нравится быть пешкой в таких играх. Я за то, чтобы игра на этом рынке была честной. Или тогда я сам независимо буду добиваться корректности отображения любыми средствами. Мой выбор в CSS-хаках, а не условных комментариях и разве это осудительно при конечной корректности результата и определённых косвенных дивидендах? К тому же я не зря выделил имхо.
Microsoft постоянно разными способами создаёт "игру в одни ворота". То для отображения прозрачного png они требуют убрать его из отображения других браузеров (именно так выглядит предложенный ими способ с прозрачным gif вместо оригинального png). Такой же игрой выглядят и условные комментарии вы можете полагаться на на наш механизм указания на версии глючных браузеров. Это создание фичи вместо устранения бага, именно то, что я назвал выключением света вместо уборки дома.
Мне не нравится быть пешкой в таких играх. Я за то, чтобы игра на этом рынке была честной. Или тогда я сам независимо буду добиваться корректности отображения любыми средствами. Мой выбор в CSS-хаках, а не условных комментариях и разве это осудительно при конечной корректности результата и определённых косвенных дивидендах? К тому же я не зря выделил имхо.
ИМХО - Извините Меня, Хотелось Отличиться?
Разработчики IE - тоже люди... Понимаешь, в связи с общей политикой обновлений в MS у них нет возможности, как у, скажем, разработчиков FF, фиксить багу и сразу выпускать апдейт. Между релизами могут быть промежутки во много лет. И багов в этой старейшей кодовой базе нереальное кол-во, фиксишь один - появляется другой, все не поправить... Нужно было хоть что-то придумать универсальное, чтобы разработчики могли как-то ладить с существующими, неисправленными багами. И придумали, я думаю, очень клёво - и валидатор доволен, и другие браузеры не видят, и работает предсказуемо.
файл стилей для ИЕ подключенный в conditional comment - лучшее, что можно предпринять для поддержки ИЕ.
отказ эксплорера это конечно сильно :) кстати, именно "плохая идея" позволяет прямо следовать стандартам и в разметке и в стилях, не забивая на ИЕ при этом.
можно рассуждать сколь угодно долго о недоделанных браузерах, но в конце концов приходится усаживаться поудобнее и вникать в тонкости поведения разных браузеров в простых моментах, хорошо описанных в стандартах. в конце концов именно за это приличный верстальщик и получает свои триста-баксов-за-макет.
отказ эксплорера это конечно сильно :) кстати, именно "плохая идея" позволяет прямо следовать стандартам и в разметке и в стилях, не забивая на ИЕ при этом.
можно рассуждать сколь угодно долго о недоделанных браузерах, но в конце концов приходится усаживаться поудобнее и вникать в тонкости поведения разных браузеров в простых моментах, хорошо описанных в стандартах. в конце концов именно за это приличный верстальщик и получает свои триста-баксов-за-макет.
Всё так. Кроме необходимости платить верстальщику. Эта работа должна стать тривиальной и подчиниться дизайнеру, чтобы он имел полный контакт со средой, которую делает удобной. Именно все эти тонкости браузеров отдаляют творчество от кода страницы и тем самым способствуют непониманию дизайнерами сути их работы.
Однако кушать хочется.
PPS conditional comments это тоже хак, заставляющий один браузер обращать внимание на то, что написано в комментариях. Это не только нарушение стандартов (комментарии ДОЛЖНЫ ИГНОРИРОВАТЬСЯ), но и дорога к безалаберности и безответственности разработчиков браузеров.
может это и хак - но не ugly, точно. Задумка хорошо расширяемая, и очень сильно иногда облегчающая жизнь. Надо посмотреть правде в лицо, сделать сайт с более-менее сложной версткой без единого хака и работающим под IE5+ и всеми остальными браузерами невозможно - так уж лучше отдельный css с нормальным css внутри, чем один css с отвратительными вещами типа voice-family и _top:
другое дело что сначала надо тщательно поискать возможность сверстать ВООБЩЕ без хаков :)
другое дело что сначала надо тщательно поискать возможность сверстать ВООБЩЕ без хаков :)
С последним совершенно согласен.
А вот с тем, что нормально уродовать html ради ровного CSS я не согласен поскольку html несёт семантическую нагрузку и вносить туда лишнее значит ухудшать эту семантику. CSS не так важно, поскольку поисковиками не транслируется и все css-наки не мешают поисковому продвижению.
А вот с тем, что нормально уродовать html ради ровного CSS я не согласен поскольку html несёт семантическую нагрузку и вносить туда лишнее значит ухудшать эту семантику. CSS не так важно, поскольку поисковиками не транслируется и все css-наки не мешают поисковому продвижению.
Не понимаю, почему вы относите комментарии к HTML и семантике. Текст в комментариях имеет смысл только для разработчиков, поддерживающих код и других сущностей, которым это нужно (в данном случае IE). И для поисковиков, и для w3c, для поддерживающих стандарты браузеров, для устройств, которые парсят эти данные как семантическую структуру их просто нет. Аргумент про SEO в контексте этого мне кажется совершенно абсурдным.
Потому, наверно, что вы не обращали внимание на индексацию комментариев, а один из самых чёрных хаков adwords заключается в этом. То же самое можно при определённых условиях (не буду "палить тему") сказать про поисковики. Так что всё не так абсурдно, как кажется на первый взгляд.
комментарий в коде никак не влияет на семантику. в том и прелесть.
невалидные штуки в стилях не проходят валидацию. не вы ли там немного выше ратовали за полное соответствие стандартам? :)
несете вы чушь, признайте :)
невалидные штуки в стилях не проходят валидацию. не вы ли там немного выше ратовали за полное соответствие стандартам? :)
несете вы чушь, признайте :)
Во-первых, это не хак. Только недавно, блин, обсуждали, - хак - это эксплоит определённого бага, в случае вёрстки - браузерного. Условные комментарии - намеренно реализованная функциональность, которая в отличии от багов работает совершенно предсказуемо.
Во-вторых, их использование - это не нарушение стандартов. По крайней мере, со стороны веб-разработчика - код им соответствует в полной мере (поскольку комментарии игнорируются, он в них может писать всё, что пожелает). Нарушение со стороны создателей IE, но нарушение вынужденное (иначе пришлось бы полагаться на баги).
Забивать на юзеров и делать сайты "for non-IE browsers only" - думаете, это сможет повлиять на разработчиков браузеров? Отнюдь. Это возвращение в прошлый век и не намного лучше сайтов "IE-only" 10-летней давности.
Во-вторых, их использование - это не нарушение стандартов. По крайней мере, со стороны веб-разработчика - код им соответствует в полной мере (поскольку комментарии игнорируются, он в них может писать всё, что пожелает). Нарушение со стороны создателей IE, но нарушение вынужденное (иначе пришлось бы полагаться на баги).
Забивать на юзеров и делать сайты "for non-IE browsers only" - думаете, это сможет повлиять на разработчиков браузеров? Отнюдь. Это возвращение в прошлый век и не намного лучше сайтов "IE-only" 10-летней давности.
Это в данном случае хак стандарта, а не эксплоита браузера. в сочетании с ухудшением семантики не вижу ничего более допустимого, чем хак css.
ВСЕ хаки делаются не от хорошей жизни поскольку браузеры слишком несовершенны для своей работы, разница только в акцентах. Мой акцент на чистоте данных имеет хорошие плоды в SEO и ради них я готов (что поделаешь) писать хаки в CSS.
C другой стороны считайте меня идеалистом, но я не вижу будущего за браузерами с таким числом несоответствий стандартам, как IE. И не смотря на это делаю код (по возможности) валидным и кроссбраузерным.
ВСЕ хаки делаются не от хорошей жизни поскольку браузеры слишком несовершенны для своей работы, разница только в акцентах. Мой акцент на чистоте данных имеет хорошие плоды в SEO и ради них я готов (что поделаешь) писать хаки в CSS.
C другой стороны считайте меня идеалистом, но я не вижу будущего за браузерами с таким числом несоответствий стандартам, как IE. И не смотря на это делаю код (по возможности) валидным и кроссбраузерным.
Я был не прав.
Семантика от комментариев конечно же не ухудшается.
Но идея ветвления кода в зависимости от браузера для лечения ошибок мне не нравится. Это выглядит как худший стиль програмирования когда половина функционала программы находится в обработчиках ошибок.
Семантика от комментариев конечно же не ухудшается.
Но идея ветвления кода в зависимости от браузера для лечения ошибок мне не нравится. Это выглядит как худший стиль програмирования когда половина функционала программы находится в обработчиках ошибок.
Это нормально. Потому, что насиловать свой мозг, пытаясь заставить работать УЁ - дело мазохистов.
Это вряд ли связано с описанным стилем программирования - это лишь возможность адекватно и незаметно для других браузеров ответить на неадекватное поведение УЁ.
Поэтому хорошо, что есть условные комментарии, иначе бы мы писали сплошные хаки.
Это вряд ли связано с описанным стилем программирования - это лишь возможность адекватно и незаметно для других браузеров ответить на неадекватное поведение УЁ.
Поэтому хорошо, что есть условные комментарии, иначе бы мы писали сплошные хаки.
=) сворачиваем тему, чтобы не пойти по второму кругу?
предлагаю мировую Условные комментарии также годятся в борьбе за результат, как и хаки CSS.
Устраивает?
предлагаю мировую Условные комментарии также годятся в борьбе за результат, как и хаки CSS.
Устраивает?
Во, вот тут я вас поддержу (а то понаписали - не знаю куда и влезть =) ).
Как говорил мой друг perl'ист - "вместо preg_replace я лучше тильду поставлю - так понятнее" так мы и не сошлись тогда.
Суть-проблема то в криворуких браузерах, а уж как обходить - у каждого свои рецепты. И можно их даже совмещать, когда удобно.
И полезной была только первая заметка про амперсанд =)
Как говорил мой друг perl'ист - "вместо preg_replace я лучше тильду поставлю - так понятнее" так мы и не сошлись тогда.
Суть-проблема то в криворуких браузерах, а уж как обходить - у каждого свои рецепты. И можно их даже совмещать, когда удобно.
И полезной была только первая заметка про амперсанд =)
Хаки оставим УЁ.
Дело в том что любой хак может сказаться на работе сайта в будущем. Вдруг какой-нибудь браузер начнёт по ошибке реагировать на * html? Сломается.
Вероятность того, что какой-нибудь браузер начнёт по ошибке реагировать на просто ноль.
В этом отличие conditional commetns от хаков * html, voice-family:, _top...
Вероятность того, что какой-нибудь браузер начнёт по ошибке реагировать на просто ноль.
В этом отличие conditional commetns от хаков * html, voice-family:, _top...
* html это не эксплоит, а совершенно корректный каскадный вызов "тэг html являющийся потомком любого элемента". Этот вызов не может ничего повредить и в худшем случае (нормальных браузеров с корректным DOM) просто не обнаружится элемента, соответствующего такому каскаду.
Насчёт вашего "вдруг сломается" ничего корректного в голову не приходит что вы скажете про нежелание ехать в Тайланд лишь потому, что "вдруг там в будущем будет цунами"?
Насчёт вашего "вдруг сломается" ничего корректного в голову не приходит что вы скажете про нежелание ехать в Тайланд лишь потому, что "вдруг там в будущем будет цунами"?
Я знаю, что значит * html. Я вам указал, что есть опасность того, что в Konqueror 3.1337 будет баг и он может неправильно понять это, так же, как сейчас ЫЕ.
Насчёт Тайланда – так и так знакомые не летают на самолёах, потому что страшно, другие в Турцию, потому что там бомбят. Здесь же опасность для live сайта, за который вы, возможно, получили денег. И вдруг он будет не работать.
Кстати, я сейчас подумал, девелоперам после вас разбирать, что такое * html, voice-family: и др. будет очень непросто. А вот
Насчёт Тайланда – так и так знакомые не летают на самолёах, потому что страшно, другие в Турцию, потому что там бомбят. Здесь же опасность для live сайта, за который вы, возможно, получили денег. И вдруг он будет не работать.
Кстати, я сейчас подумал, девелоперам после вас разбирать, что такое * html, voice-family: и др. будет очень непросто. А вот
<![if IE]>stylesheet: ie.css
очень просто и понятно даже незнающему.вероятность что браузер сломается от совершенно корректной конструкции не выше, чем вероятность падения кирпича на голову. Делать на неё ставку просто смешно.
Точно тоже самое с Тайландом случится или не случится цунами заранее не известно, так что учитывать цунами как довод "не ехать" свидетельство растройства психики.
Девелопер, который не умеет работать с хаками наверняка непрофессионален и довод про непонимание "* html" на фоне "<![if IE]>" может привести лишь как констатацию своей несостоятельности.
Точно тоже самое с Тайландом случится или не случится цунами заранее не известно, так что учитывать цунами как довод "не ехать" свидетельство растройства психики.
Девелопер, который не умеет работать с хаками наверняка непрофессионален и довод про непонимание "* html" на фоне "<![if IE]>" может привести лишь как констатацию своей несостоятельности.
Оставлю дискуссию с такими заявлениями:
и переходами на личности:
вам одному.
Девелопер, который не умеет работать с хаками наверняка непрофессионален
и переходами на личности:
[..] может привести лишь как констатацию своей несостоятельности.
вам одному.
Это не половина функционала. А так, мелкие приукрашения, которых формально нет, а есть только для нужной тебе версии IE.
Единственный недостаток, который я вижу в таком подходе - один лишний реквест. :) Но в принципе это мелочь. Зато поддерживать стили лично мне куда проще - имеешь дело в основном с совершенно чистым кодом, и держишь все хаки в одном месте - порядок получается. К тому же, браузерные баги - вещь непостоянная, а вот на эту функциональность ты можешь положиться, потому что она реализована намеренно для помощи разработчикам.
Единственный недостаток, который я вижу в таком подходе - один лишний реквест. :) Но в принципе это мелочь. Зато поддерживать стили лично мне куда проще - имеешь дело в основном с совершенно чистым кодом, и держишь все хаки в одном месте - порядок получается. К тому же, браузерные баги - вещь непостоянная, а вот на эту функциональность ты можешь положиться, потому что она реализована намеренно для помощи разработчикам.
Да, но для IE7 они и редко нужны, в основном все отображается стандартно.
Сам не давно задавался точно таким же вопросом... решил трабл, убрав DOCTYPE. :)
Давно использую document.documentElement.scrollTop для IE6
Вы забыли написать, что чтобы не блок не дергался нужно зафиксировать фон:
document.documentElement.style.backgroundImage = 'url("/nothing.png")';
document.documentElement.style.backgroundAttachment = 'fixed';
Я использую это на Design For Masters для блока коррекции ошибок, который появляется при нажатии Ctrl+Enter
Вы забыли написать, что чтобы не блок не дергался нужно зафиксировать фон:
document.documentElement.style.backgroundImage = 'url("/nothing.png")';
document.documentElement.style.backgroundAttachment = 'fixed';
Я использую это на Design For Masters для блока коррекции ошибок, который появляется при нажатии Ctrl+Enter
Увидел когда-то на imfo.ru
кстати, да. любят Работники Студии выдавать чужие достижения за Свои, этого у них не отнять :)
Ну это уже история давнишняя, то же самое было и с домиком (хотя там еще споры правомерны).
момент такой - не факт что сперто. Может Воронежский действительно сам догадался, ну просто не первый (имхо, случайно наткнулся).
И все таки хорошо что написал, я угрохал много трафика, чтоб на N-ной странице гугля найти первый способ. Так хоть на виду лежит.
момент такой - не факт что сперто. Может Воронежский действительно сам догадался, ну просто не первый (имхо, случайно наткнулся).
И все таки хорошо что написал, я угрохал много трафика, чтоб на N-ной странице гугля найти первый способ. Так хоть на виду лежит.
Код — в личную копилку классических решений. Спасибо!
Sign up to leave a comment.
Фиксируя полноценный fixed